特定文件夹的内容迁移

时间:2011-11-17 23:53:10

标签: python plone

我有一个脚本,将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,在脚本中添加什么内容?

1 个答案:

答案 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或任何索引。