跳转到主要内容

从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步骤之后执行的。

贡献

致谢

本产品在以下人员的帮助下开发:

kitconcept

许可证

该项目根据GPLv2授权。

贡献者

变更日志

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 (57.3 kB 查看散列值)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面