从json源导入内容
项目描述
基于transmogrifier在Plone站点之间迁移内容的工具。
此工具与redturtle.exporter.base一起工作
依赖关系
此产品基于其他有用工具
这些工具尚未积极维护,因此我们将有用的部分移动到该项目中,以拥有一个基于transmogrifier的Python 3导入器。
功能
处理基本内容类型的迁移
讨论迁移
通过蓝图自定义导入过程
通过更多特定蓝图扩展
使用自定义适配器自定义特定步骤选项
迁移后审查视图与处理结果
安装
通过将其添加到您的buildout中安装redturtle.importer.base
[buildout] ... eggs = redturtle.importer.base
然后运行 bin/buildout
无需安装。这样,在数据迁移后,您可以将其从buildout中删除,一切保持干净。
用法
迁移视图
要开始迁移,您只需在网站根目录调用 @@data-migration 视图。
在这个视图中,您可以查看蓝图配置(基本和覆盖),并开始流程。
管道定制
此工具基于transmogrifier,与蓝图一起工作。蓝图基本上是一个配置文件,列出了迁移所需的全部步骤。
该产品有一个默认蓝图,用于基本迁移,可以直接使用。
默认蓝图可以通过位于buildout根目录的 .migrationconfig.cfg 文件轻松定制。
在这个文件中,您可以覆盖已存在的部分/变量(例如 pipelines 在 [transmogrifier] 部分),或添加新的(例如一个新步骤)。
例如,可以像这样配置 catalogsource 步骤
[catalogsource] catalog-query = {'portal_type': ['Document', 'Event', 'News Item']} ...
在 .migrationconfig.cfg 文件中,在 [catalogsource] 部分,您还需要设置一些有关如何在源网站上检索数据的相关设置
[catalogsource] ... remote-url = https://127.0.0.1:8080 remote-root = /Plone catalog-path = /Plone/portal_catalog remote-username = username remote-password = password ...
在运行迁移之前,您可以在 @@data-migration 视图中检查最终配置。
catalogsource 配置
这是 [catalogsource] 部分的示例
[catalogsource] ... remote-url = https://127.0.0.1:8080 remote-root = /Plone catalog-path = /Plone/portal_catalog remote-username = username remote-password = password
必需选项包括
remote-url:源Plone站点的URL
remote-root:我们想要迁移的Plone网站的路径
remote-username:访问源站点的凭证
remote-password:访问源站点的凭证
附加选项包括
default-local-path:保存迁移内容到目标站点的路径。此路径将替换项目的根路径。在此路径中不需要目标根路径。
skip-private:布尔值,表示是否将私有项目迁移到目标站点。默认值为 False。
remote_skip_paths:在迁移过程中将跳过的源站点路径列表。
incremental-migration:布尔值。如果自上次迁移以来已迁移的内容未被修改,则不要覆盖它。默认值为 False。
ignore-cache:布尔值。如果为True,则忽略本地缓存,并始终从源站点获取内容数据。
cache-dir:本地文件夹,其中将存储迁移数据缓存。默认值为 /tmp/migration/migration_cache。
migration-dir:本地文件夹,其中将保存迁移支持文件(例如最终摘要)的路径。默认值为 ‘/tmp/migration’。
自定义类型映射
contentsmapping 是一个部分,允许在对象创建之前将一个 portal_type 转换为另一个。
基于订阅者的插件系统允许插件添加自定义映射。
您需要注册一个针对 IPortalTypeMapping 的订阅者,如下所示
<subscriber factory=".types_mapping.MyCustomMapping" provides="redturtle.importer.base.interfaces.IPortalTypeMapping"/>
然后您需要创建这个类
@adapter(IPloneSiteRoot, IBrowserRequest) @implementer(IPortalTypeMapping) class MyCustomMapping(object): order = 100 def __init__(self, context, request): self.context = context self.request = request def __call__(self, item, typekey): """ """ portal_type = item[typekey] if portal_type == "Type-A": item[typekey] = "Type-B" ... return item
特定门户类型的自定义步骤
如果您正在迁移需要创建后进行一些手动修复的内容类型,您可以使用适配器来完成。
您只需要像这样为您的内容类型注册一个适配器
<adapter for="my.product.interfaces.IMyInterface" provides="redturtle.importer.base.interfaces.IMigrationContextSteps" factory=".steps.MyTypeSteps" />
然后您需要在类中提供 "doSteps" 方法
from redturtle.importer.base.interfaces import IMigrationContextSteps from zope.interface import implementer @implementer(IMigrationContextSteps) class MyTypeSteps(object): def __init__(self, context): self.context = context def doSteps(self): """ do something here """
特定导入器示例
有一些针对特定项目的导入器,我们曾使用它们来迁移某些项目,您可以将它们作为开发新导入器的起点。
它们基本上是您需要在buildout中包含的包,并为特定类型提供一些自定义步骤。
导入用户和组
您还可以从源站点导入用户和组。
您只需在迁移配置文件中添加一个部分,如下所示
[users_and_groups] import-users = True import-groups = True
该工具将从源站点调用两个视图,并使用来自[catalogsource]部分的设置(远程-url、远程-root和凭证)。
此导入是在transmogrifier步骤之后执行的。
贡献
致谢
本产品在以下人员的帮助下开发:
许可证
该项目根据GPLv2授权。
贡献者
RedTurtle,sviluppoplone@redturtle.it
变更日志
2.1.0 (2022-04-10)
更好地处理日期时间和日期值。[cekk]
使transmogrifier更可配置。[cekk]
2.0.2 (2021-02-01)
添加地理定位反序列化器。[cekk]
2.0.1 (2020-12-18)
处理自定义目标路径。[cekk]
2.0.0 (2020-07-28)
进行大量重构以实现与python3的兼容性。[cekk]
允许导入用户和组。[cekk]
删除不再维护的依赖项并将所需代码移至此处。[cekk]
1.0.5 (2019-03-19)
修复fix_link_noreference函数。[eikichi18]
1.0.4 (2019-02-08)
添加了对没有引用的链接的修复。在迁移后添加了专门的报告。[daniele]
在schemaupdater中添加了对留空字段为空的检查。[eikichi18]
修复了链接生成列表的损坏。[cekk]
1.0.3 (2018-10-18)
在适配器方法中添加了json项。[daniele]
1.0.2 (2018-10-11)
修复了内部/外部链接的映射。[eikichi18]
1.0.1 (2018-10-09)
在迁移后修复uudi匹配器。[eikichi18]
1.0.0 (2018-10-04)
添加检查Plone Site元素是否被索引。
使用适配器添加对特定上下文步骤的支持。[cekk]
1.0a4(2018-09-03)
处理未设置exclude-type的情况。[cekk]
在迁移后生成断开链接列表,并在最终报告视图中公开它们。[cekk]
1.0a3(2018-07-19)
添加了对元素父数据的检查。[eikichi18]
1.0a2(2018-07-03)
如果找不到内容类型,则中断迁移。[eikichi18]
1.0a1(2018-06-19)
首次发布。[eikichi18]
项目详细信息
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。
源代码分发
redturtle.importer.base-2.1.0.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 92175750a157baf38ef78ad5d32b6ea2418bfc39df6ca5b24259e05de27a5406 |
|
MD5 | 627a4d7582fc3212b34bd1286f2a9d4f |
|
BLAKE2b-256 | e30e9cab06f51286a6cd11134494377d9e34034fdc982f3a8aa6afec1ae027c3 |