跳转到主要内容

Plone的用户迁移

项目描述

简介

此产品允许将关联于主ID(用户或组)的各种用户特定数据迁移到另一个主ID。如果需要重命名ID,则特别有用。

目前可以迁移以下用户数据

  • 用户(ZODB用户管理器)

  • 用户属性(ZODB可变属性提供者)

  • 组成员

  • 本地角色

  • 仪表盘

  • 主页文件夹

安装

ftw.usermigration 添加到您的 buildout 的 eggs 列表中。然后重新运行 buildout 并重启您的实例。

用法

在浏览器中打开 @@user-migration

注册主体映射

如果您想以程序化方式提供主体映射而不是通过网页输入,您可以通过注册一个或多个实现 IPrincipalMappingSource 的命名适配器来实现。

示例

class MigrationMapping(object):

    def __init__(self, portal, request):
        self.portal = portal
        self.request = request

    def get_mapping(self):
        mapping = {'old_user': 'new_user',
                   'old_group': 'new_group'}
        return mapping

ZCML

<adapter
    factory="my.package.migration.MigrationMapping"
    provides="ftw.usermigration.interfaces.IPrincipalMappingSource"
    for="Products.CMFPlone.interfaces.siteroot.IPloneSiteRoot
         zope.publisher.interfaces.browser.IBrowserRequest"
    name="ad-migration-2015"
/>

这将导致此映射可以在 @@user-migration 表单中以名称 ad-migration-2015 选择为映射源。

注册迁移前和迁移后钩子

如果您想在 ftw.usermigration 中提供的任何内置迁移类型之前或之后运行自己的代码,您可以通过注册实现 IPreMigrationHookIPostMigrationHook 接口的钩子来实现。

示例

class ExamplePreMigrationHook(object):

    def __init__(self, portal, request):
        self.portal = portal
        self.request = request

    def execute(self, principal_mapping, mode):
        # ...
        # your code here
        # ...
        results = {
            'Step 1': {
                'moved': [('/foo', 'old', 'new')],
                'copied': [],
                'deleted': []},
            'Step 2': {
                'moved': [('/bar', 'old', 'new')],
                'copied': [],
                'deleted': []},
        }
        return results

钩子适配器的 execute() 方法接收 principal_mappingmode 作为参数。

其结果预期为字典的字典:外部字典允许钩子将执行的多个步骤分组并分别报告其结果。内部字典遵循与内置迁移结果相同的结构。

ZCML

<adapter
    factory=".migrations.ExamplePreMigrationHook"
    provides="ftw.usermigration.interfaces.IPreMigrationHook"
    for="Products.CMFPlone.interfaces.siteroot.IPloneSiteRoot
         zope.publisher.interfaces.browser.IBrowserRequest"
    name="example-pre-migration-hook"
/>

变更日志

1.3.0 (2023-01-23)

  • 添加对 Python 3 和 Plone 5.2 的支持。[lgraf]

  • 添加 Plone 5.1 兼容性。[phgross]

  • 删除 Plone 4.2 兼容性。[phgross]

1.2.0 (2017-05-01)

  • 实现登录名迁移步骤。[elioschmutz]

  • 修复迁移用户名是另一个用户名开头的用户。[elioschmutz]

  • 实现群组成员迁移。[elioschmutz]

  • 删除对 Plone 4.1 的支持。[jone]

1.1 (2015-04-17)

  • 添加选项仅显示迁移结果的摘要。[lgraf]

  • 将详细的迁移结果记录到日志文件(可选)。[lgraf]

  • 添加全局角色(portal_role_manager)的迁移。[lgraf]

  • 添加支持迁移前和迁移后钩子。[lgraf]

  • 确保 迁移 字段始终使用 CheckBoxFieldWidget。[lgraf]

  • 使用 transaction.doom() 进行干运行。这确保即使意外调用 commit() 也不会导致数据库写入。[lgraf]

  • 通过注册名为 IPrincipalMappingSource 的适配器来支持以编程方式提供主体映射。[lgraf]

  • user 重命名为 principal(适用于适用的情况):大多数操作对组和用户都有效。因此,映射可以包含主体 ID,而不仅仅是用户 ID。[lgraf]

1.0 (2014-06-16)

  • 初始发布

项目详情


下载文件

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

源代码分发

ftw.usermigration-1.3.0.tar.gz (29.4 kB 查看散列值)

上传时间 源代码

由以下机构支持