为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 提供了一个(基本)测试类,用于检查读取器是否按预期工作。它需要一些示例文件用于读取器。派生读取器测试必须遵循以下约定
目录结构必须如下所示:(斜体表示目录)
reader.py
tests
__init__.py
test_reader.py
data
short.file
long.file
__init__.py 文件可以是空的。
test_reader.py 文件包含一个测试类,该类扩展了 icemac.ab.importer.reader.testing.BaseReaderTest。必须在以下类上设置三个属性
reader_class - 必须指向读取器的类对象
import_file - 较长导入文件(见下文)的名称,不带路径
import_file_short - 较短导入文件的名称(见下文),不带路径
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)
将代码调整为 icemac.addressbook >= 9.3。
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。
项目详情
散列 for icemac.ab.importer-2.12-py2.py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 64be31090897150a5496ba6caac2089972188c5cc370546c019ba36187d244b1 |
|
MD5 | 9b27f308ec4ba3540707b3d6b571fe43 |
|
BLAKE2b-256 | 17edacf86d3d69994304fdfa16f37a841bd7cc9c90dbb12c4add890d1d340bef |