Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在所有其他部分完全运行后,是否可以运行transmogrifier部分?_Python_Iterator_Plone_Data Migration_Transmogrifier - Fatal编程技术网

Python 在所有其他部分完全运行后,是否可以运行transmogrifier部分?

Python 在所有其他部分完全运行后,是否可以运行transmogrifier部分?,python,iterator,plone,data-migration,transmogrifier,Python,Iterator,Plone,Data Migration,Transmogrifier,我正在使用transmogrifier管道将内容导入Plone,为了修复图像、链接和相关内容等各个方面,我需要在所有内容创建和索引之后运行我的部分 我之所以需要它,是因为我想使用catalog工具按路径搜索内容,并使用其UUID来引用它 使用transmogrifier是否可能,或者最好使用其他可用技术,比如简单的升级步骤 我正在考虑使用类似于源代码部分的模式: 从collective.transmogrifier.interfaces导入ISection 从collective.transmo

我正在使用transmogrifier管道将内容导入Plone,为了修复图像、链接和相关内容等各个方面,我需要在所有内容创建和索引之后运行我的部分

我之所以需要它,是因为我想使用catalog工具按路径搜索内容,并使用其UUID来引用它

使用transmogrifier是否可能,或者最好使用其他可用技术,比如简单的升级步骤

我正在考虑使用类似于源代码部分的模式:

从collective.transmogrifier.interfaces导入ISection
从collective.transmogrifier.interfaces导入ISectionBlueprint
类dosomethingtheveryendsection(对象):
类提供(ISectionBlueprint)
机具(ISection)
def _;初始(自身、transmogrifier、名称、选项、上一个):
self.previous=先前
定义(自我):
对于self.previous中的项目:
收益项目
对于self.previous中的项目:
做某事

这是个好主意吗?

是的,制作一个后处理部分是个好主意,唯一的问题是,
self.previous
生成器不能以这种方式调用两次

解决方法是复制生成器,这样您可以在生成器中走两次:

从collective.transmogrifier.interfaces导入ISection
从collective.transmogrifier.interfaces导入ISectionBlueprint
进口itertools
类dosomethingtheveryendsection(对象):
类提供(ISectionBlueprint)
机具(ISection)
def _;初始(自身、transmogrifier、名称、选项、上一个):
self.previous=先前
定义(自我):
self.previous,self.postprocess=itertools.tee(self.previous)
对于self.previous中的项目:
收益项目
对于self.postprocess中的项目:
做某事

只要你能在ZODB中找到你的角色创建的项目,你就可以在内容创建步骤后添加蓝图。最后,我认为这不是一个好主意;最好在Transmogrifier之外的内容创建之后运行脚本;这样我们就可以解决多个问题,而不必运行整个管道。