为使用Transmogrifier的迁移提供有用的蓝图
ftw.blueprints的Python项目详细描述
ftw.蓝图
ftw.blueprints 提供了一些有用的蓝图,包括示例cfg 对于原型和灵巧性。
有关创建蓝图和如何使用蓝图的详细信息,请参见:
- https://github.com/collective/collective.jsonmigrator
- https://pypi.python.org/pypi/collective.transmogrifier
目录
-
ftw.蓝图
- 安装
- 兼容性
-
此包提供的蓝图
- ftw.blueprints.fieldmapper
- ftw.blueprints.pathmapper
- ftw.blueprints.typefieldmapper
- ftw.blueprints.childinserter
- ftw.blueprints.parentinserter
- ftw.blueprints.additionalobjectinserter
- ftw.blueprints.workflowmanager
- ftw.blueprints.contextualportletadder
- ftw.blueprints.formmailer fields inserter
- ftw.blueprints.UnicodeawareMiemEncapsulator
- ftw.blueprints.multilingual.linguaploneitemlinker
- ftw.blueprints.positionupdater
- 链接
- 版权
- 更改日志
安装
- 将ftw.蓝图添加到构建配置:
[instance] eggs += ftw.blueprints
- 打开视图@@jsonmigrator并选择配置文件
注意:一些原型和灵巧的示例也配置了 ftw.inflator的章节。 如果您的配置基于其中一个,则还需要安装 FTW.充气机
此软件包提供的蓝图
- ftw.blueprints.fieldmapper
- 强大的蓝图,用于映射和更改给定项中的字段 使用静态值、lambda表达式、条件和dict映射。
ftw.blueprints.fieldmapper
此蓝图用于映射或更改项目上的值。
必需选项:
- 字段映射 -映射或更改字段的选项
使用字段映射:
< Buff行情> {'source-key':{option:value}首先,你需要定义要修改的源密钥。
然后您需要定义一些选项:
目的地:钥匙的新名称。
{'plz':{'destination':'zip'}
只需将plz的值移动到zip
静态值:如果要使用静态值,可以使用 选项:
{'plz':{'static_value':'3000'}}
将plz中的值替换为3000
映射值:在某些情况下,您希望使用映射更改值:
{'plz':{'映射值':{'plz 3000':'3000'}}}
如果plz的值是plz 3000,则将替换为3000
转换:用给定的函数转换值。 作为参数,您拥有项目本身。
< DL>- {'plz':{'transform':lambda x:x['plz']=x['plz']和
x['plz']或'3000'}
如果plz的值为none,则此示例将plz替换为3000
need_src_key:在某些情况下,如果 源密钥可用。
{'plz':'静态值':'3000',需要'u src'u key:true}
如果项目上存在源密钥,它将只设置静态值。
"need_src_key"选项默认为false。所以你可以使用 地图作为一个更强大的插入蓝图。例如,您可以添加 项目的属性,该属性尚不存在。如果源密钥没有 存在于项目上,映射程序将忽略它。
{'update_show_title':{'destination':'showTitle','transform':lambdax:x['title']andTrueorFalse,}}
此示例将设置不存在的"showTitle"属性 如果项目标题不是"无",则将项目设置为"真"。
在映射属性之后,也可以对属性进行转换 使用"地图值"选项。
{'title':{'destination':'description','transform':lambdax:x['title'].lower(),'map_value':{'james':'bond','bud':'spencer'}}}
首先,它将标题转换为小写。如果标题包含一个 将替换Map_Value选项中的给定键。 最后,它将转换和映射的值放入描述中。
您可以将所有这些选项组合在一起进行强大的映射 在您的物品上。
{'zip':{'static_value':'3000'},'client':{'destination':'text','transform':lambdax:x['language']== \ 'en'and'Customer: %s'%(x['cleint'])or \ 'Kunde: %s'%(x['client']),'need_src_key':True}}
首先,我们将静态值放入zip属性。 在我们用client属性做了一些事情之后。如果客户端密钥 在项目映射中可用,它将填充给定的 字符串,取决于文本中对象的语言 属性。
最小配置:
[fieldmapper]blueprint=ftw.blueprints.fieldmapperfield-mapping=python:{}
可选选项:
没有可选选项。
ftw.blueprints.pathmapper
此蓝图将更新每个项目的路径。
必需选项:
-
映射
- 一组映射。
- 每个映射项都是一个元组(正则表达式,替换项)。
- 映射将按定义的顺序完全应用。
- 表达式,iterable
最小配置:
[pathmapper]blueprint=ftw.blueprints.pathmappermapping=python: ( ('^/de/foo/bar', '/foo/bar'), ('^/en/foo/bar', '/foo/qux'),)
可选选项:
-
路径密钥
-映射路径的密钥名。默认为路径。
- 条带前缀 -如果路径以开头,则从每个路径中剥离的前缀列表 那个前缀。
完全配置
[pathmapper]blueprint=ftw.blueprints.pathmappermapping=python: ( ('^/de/foo/bar', '/foo/bar'), ('^/en/foo/bar', '/foo/qux'),)path-key='_gak'strip-prefixes=python: ( '/plone/www/irgendwo',)
ftw.blueprints.typefieldmapper
此蓝图将类型及其字段映射到新类型和新字段。
必需选项:
-
映射
- 类型及其字段的嵌套映射。
- 第一级地图类型。
- 第二层映射第一层类型的字段。
- 表达式,dict
最小配置:
[typefieldmapper]blueprint=ftw.blueprints.typefieldmappermapping=python: { 'OldType': ('NewType', {'oldfield': 'newfield'}), }
可选选项:
ftw.蓝图.儿童插入器
此蓝图将新项目作为子项插入管线。
新项不是父项的副本。如果要使用元数据 父母的-item,您需要使用metadata key选项映射它们
必需选项:
- 内容类型 -定义子对象的ContentType -字符串
- 附加ID -定义子对象的新ID -表达式,字符串
-最小配置:
[childinserter]blueprint=ftw.blueprints.childinsertercontent-type=ContentPageadditional-id=python: 'downloads'
可选选项:
元数据键 -子项作为dict的元数据映射。 您可以从父项为子项提供元数据,也可以 使用lambda表达式设置新值。 -表达式,dict
使用父元数据:
< Buff行情>{'说明':'标题'}
将获取父项上title的值并将其放入描述中 子项上的字段
使用新值:
< Buff行情>{'title':lambda x:'图像'}
将"图像"放入子项的标题字段中
接口 -将接口作为列表添加到子项 -表达式,列表
注释 -将注释作为dict添加到子项 -表达式,dict
完全配置
[instance] eggs += ftw.blueprints0
视觉示例:
< Buff行情>- A=正在处理的项目
- A’=蓝图后正在处理的项目
- B=项目之后的子项目
[instance] eggs += ftw.blueprints1
ftw.蓝图.父插入器
此蓝图将新项目作为父项插入管线。
新项不是子项的副本。如果要使用元数据 对于子项,您需要使用metadata key选项映射它们
请参阅ftw.blueprints.childinserter部分文档,了解如何 使用.
视觉示例:
< Buff行情>- A=正在处理的项目
- A’=蓝图后正在处理的项目
- B=项目之后的父级在管道中
[instance] eggs += ftw.blueprints2
ftw.蓝图.附加目标插入器
此蓝图将在给定路径的管线中插入新项。
新项不是该项的副本。如果要使用元数据 对于该项,您需要使用metadata key选项映射它们
必需选项:
-
< L>新路径
-包含要创建的对象的ID的路径
-表达式,字符串
- 内容类型 -定义新对象的ContentType -字符串
- 附加ID -定义新对象的新ID -表达式,字符串
最小配置:
[instance] eggs += ftw.blueprints3
有关详细信息,请参阅ftw.blueprints.childinserter部分文档 有关可选选项的信息。
视觉示例:
< Buff行情>- A=正在处理的项目
- A’=蓝图后正在处理的项目
- B=项目之后的父级在管道中
[instance] eggs += ftw.blueprints4
ftw.蓝图.工作流管理器
迁移后管理工作流的蓝图
利用这个蓝图可以迁移工作流历史和 回顾状态。
它提供工作流映射、状态映射和转换映射。
必需选项:
- 旧工作流ID -要迁移的旧工作流的名称 -字符串
最小配置:
[instance] eggs += ftw.blueprints5
可选选项:
- 更新历史记录 -默认值:true -如果您只想更新review_状态,请将其设置为false
- 新工作流ID -如果新工作流的名称与旧工作流的名称不同。 -字符串
- 状态图 -旧状态到新状态的映射 -表达式,dict
- 过渡图 -旧转换到新转换的映射 -表达式,dict
完全配置
[instance] eggs += ftw.blueprints6
ftw.blueprints.contextualportletadder的ftw.blueprints.contextualportletadder>
在给定上下文中插入portlet的蓝图。
必需选项:
-
经理姓名
> UL> - 要添加portlet的portletmanager的名称
- 字符串
最小配置:
[instance] eggs += ftw.blueprints7
可选选项:
- Portlet属性
- Portlet分配的默认属性
- 表达式,dict
ftw.blueprints.formmailer字段插入器
将非常旧的ploneformmailer字段转换为新字段的蓝图 ploneformgen原型字段
转换ploneformmailer的字段的问题是,它们不是 类似于Ploneformgen中的原型字段。为了自动转换,我们 使用formulator包的formxml函数并放置导出的xml- 用collective.jsonify导出项的表单表示。
在通过管道创建表单本身之后,我们解析xml并 将其转换为带有"原型"字段的"变形器"项。
请参阅示例ftw.blueprints.pfm2pfg config以了解如何集成 ploneformmailer正确地迁移到管道中。
最小配置:
[instance] eggs += ftw.blueprints8
ftw.blueprints.unicodeawaremimeencapsulator的ftw.blueprints.unicodeawaremeencapsulator
使plone.app.transmogrifier.mimeencapsulator接受Unicode输入数据。这个 配置选项不会更改。请参见transmogrifier文档
ftw.blueprints.multilingual.linguaploneitemlinker多语言项目链接器
用plone.app.multilingual链接新plone站点中的翻译。期待 原文已被翻译成语言文字。此外,还期望 新站点中的plone内容已在本节中构建 运行。< /P>
请注意,在映射路径时,还应将相同的映射应用于 对规范翻译的引用(_translationof)。
最小配置:
[instance] eggs += ftw.blueprints9
可选选项:
-
路径密钥
-新项路径的密钥名。默认为路径。
- 规范密钥 -指示此项是否为规范项的布尔值的键名。 翻译。默认为"规范翻译"。
- 翻译 -引用规范翻译的密钥名。它默认为 _翻译。
ftw.蓝图.定位器更新程序
定位器更新程序 蓝图支持文件夹和plone站点。 它在注释中存储每个对象所需的位置, 这样我们就可以把孩子们分开迁移 (例如,一次一个fti)。
{'update_show_title':{'destination':'showTitle','transform':lambdax:x['title']andTrueorFalse,}}0
可选:
- 路径键 -新项路径的密钥名。默认为 \u path
- 位置键 -项目位置的密钥名称。它默认为 \u gopip
链接
- github:https://github.com/4teamwork/ftw.blueprints" rel="nofollow">https://github.com/4teamwork/ftw.blueprints
- 问题:https://github.com/4teamwork/ftw.blueprints/issues rel="nofollow">https://github.com/4teamwork/ftw.blue打印/发布
- 持续集成: https://jenkins.4teamwork.ch/search?q=ftw.蓝图