我有一个脚本,将Image迁移到自定义类型,用于我的Plone实例。它的部分代码示例如下所示:
class ImagesToPhotosMigrator(InplaceATItemMigrator):
src_portal_type = 'Image'
src_meta_type = 'ATBlob'
dst_portal_type = 'Photo'
dst_meta_type = 'Photo'
def last_migrate_reindex(self):
self.new.reindexObject(idxs=['object_provides', 'portal_type',
'Type', 'UID'])
fields_map = {
}
def getImagesToPhotosMigrationWalker(self):
return getMigrationWalker(self, migrator=ImagesToPhotosMigrator)
def migrateImages(self):
walker = getImagesToPhotosMigrationWalker(self)
walker.go()
return walker.getOutput()
该脚本有效,但我希望迁移只发生在特定文件夹中,比如/my-folder
,在脚本中添加什么内容?
答案 0 :(得分:2)
您应该指定引用Products.contentmigration,因为它没有隐含在“内容迁移”字样中(最近有比代码行更多的迁移)。无论如何,这里你的解决方案(CustomQueryWalker
是关键):
from Products.contentmigration.walker import CustomQueryWalker
def getImagesToPhotosMigrationWalker(self, query):
return CustomQueryWalker(self, ImagesToPhotosMigrator, query)
def migrateImages(self):
walker = getImagesToPhotosMigrationWalker(self, {'path' : '/youfolder'})
walker.go()
return walker.getOutput()
请注意,query参数是一个目录查询,因此您可以指定目录中的路径,portal_type或任何索引。