跳转到主要内容

为icemac.addressbook提供导入基础设施

项目描述

此软件包为icemac.addressbook提供导入基础设施。

版权所有 (c) 2008-2020 Michael Howitz

此软件包根据MIT许可证授权,请参阅软件包内的LICENSE.txt文件。

概念

导入数据需要以下步骤

  • 具有< cite>管理员 角色的用户将导入文件上传到地址簿。它被存储在导入器中。

  • 当用户决定导入上传的文件时,他会看到一个声称能够读取导入文件的读取器列表。

  • 选择导入文件读取器后,用户需要将导入文件中的哪些字段数据映射到地址簿中的哪些字段。

  • 导入的数据将显示出来,用户可以决定保留或删除导入的数据。

黑客技术

源代码

获取源代码

$ git clone https://github.com/icemac/icemac.ab.importer

或在我的GitHub上Fork我。

运行测试

要自行运行测试,请调用

$ virtualenv-2.7 .
$ bin/pip install zc.buildout
$ bin/buildout
$ bin/py.test

编写自己的导入文件读取器

扩展导入机制的关键是提供一个所需导入文件类型的读取器。

此软件包已经为CSV文件提供了导入文件读取器。

icemac.ab.importxls 提供了 XLS 文件的读取器,因此也可以作为起点。

1. 编写读取器类

读取器类必须实现 icemac.ab.importer.interfaces.IImportFileReader 接口。在 icemac.ab.importer.reader.base.BaseReader 中有一个基本实现,新的读取器类可以扩展,因此只剩下四件事需要实现(具体描述请参见接口)。

  • title 属性 – 在选择读取器时显示给用户的对话框中

  • getFieldNames 方法 – 列出导入文件中的字段名

  • getFieldSamples 方法 – 返回特定字段的样本,以简化用户映射任务

  • __iter__ 方法 – 遍历导入文件以获取导入数据

基类文件将文件存储在 file 属性中,用于读取。

2. 测试读取器类

icemac.ab.importer.reader.testing.ReaderTest 提供了一个(基本)测试类,用于检查读取器是否按预期工作。它需要一些示例文件用于读取器。派生读取器测试必须遵循以下约定

  1. 目录结构必须如下所示:(斜体表示目录)

    • reader.py

    • tests

      • __init__.py

      • test_reader.py

      • data

        • short.file

        • long.file

  2. __init__.py 文件可以是空的。

  3. test_reader.py 文件包含一个测试类,该类扩展了 icemac.ab.importer.reader.testing.BaseReaderTest。必须在以下类上设置三个属性

    • reader_class - 必须指向读取器的类对象

    • import_file - 较长导入文件(见下文)的名称,不带路径

    • import_file_short - 较短导入文件的名称(见下文),不带路径

  4. data 目录中必须有两个文件

    • 为测试类上的 import_file_short 属性创建一个文件,包含以下数据

      姓氏

      名字

      出生日期

      Koch

      1976-01-24

    • 为测试类上的 import_file 属性创建一个文件,包含以下数据

      姓氏

      名字

      出生日期

      Koch

      Andreas

      1976-01-24

      Hula

      Hanna

      2000-01-01

      Jänsen

      Jens

      Fruma

      2001-12-31

3. 注册读取器类

要使用 icemac.addressbook 注册读取器类,请在读取器包中编写一个 configure.zcml 文件

<configure xmlns="http://namespaces.zope.org/zope">
  <include package="icemac.ab.importer" />
  <adapter
     name="<name>"
     factory="<path>" />
</configure>

icemac.ab.importer 包是必要的,可以将导入器用户界面集成到地址簿中。在 name 属性中包含一个唯一的名称,用于在内部标识导入器。在 factory 属性中包含读取器类的 Python 路径。

4. 创建Python包

读取器类必须在 Python 包内部。该包必须依赖于 icemac.ab.importer(在 setup.py 中的 install_requires 参数)。

5. 将读取器集成到icemac.addressbook中

在安装 icemac.addressbook 时,可以输入外部依赖项的名称。这是将读取器集成到 icemac.addressbook 的地方。

变更日志

2.12 (2020-03-24)

2.11 (2019-12-30)

  • 将代码调整为 icemac.addressbook >= 9.2

2.10 (2019-09-28)

  • 调整以适应 icemac.addressbook 9.0 中的新功能:预定义字段标签的自定义

    • 在导入表单中使用自定义标签

    • 不要在导入文件的字段上使用为文件字段设置的标签自定义

  • 将测试调整为 icemac.addressbook >= 9.0

以前版本

请参阅包内的 OLD_CHANGES.rst

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

icemac.ab.importer-2.12.tar.gz (34.3 kB 查看散列)

上传时间

构建分发

icemac.ab.importer-2.12-py2.py3-none-any.whl (49.4 kB 查看散列)

上传时间 Python 2 Python 3

支持者