from StringIO import StringIO from Products.contentmigration.walker import CustomQueryWalker from Products.contentmigration.inplace import BaseInplaceMigrator, InplaceItemMigrationMixin from DateTime import DateTime class ZWikiMigrator(object, InplaceItemMigrationMixin, BaseInplaceMigrator): """Migrate the old item type to the new item type """ walker = CustomQueryWalker src_meta_type = "ZWiki Page" src_portal_type = "Wiki Page" dst_meta_type = "ATDocument" dst_portal_type = "Document" def __init__(self, *args, **kwargs): self.old = args[0] #The original object self.orig_id = self.old.getId() #The original object id self.old_id = 'old_%s' % self.orig_id #Change the old id to this after copying self.new_id = self.old.getId() #Make the new object id this self.parent = self.old.getParentNode() #Grap the object's parent super(ZWikiMigrator, self).__init__(*args, **kwargs) def migrate_page(self): self.new.setText(self.old.src()) self.new.setTitle(self.old.title) def migrate_owner(self): self.new.setCreators([self.old.creator]) def last_migrate_date(self): self.new.creation_date = DateTime(self.old.creation_time) self.new.setModificationDate(DateTime(self.old.last_edit_time)) def last_migrate_contenttype(self): self.new.setContentType('text/structured') def migrate(portal): """The migrate function that runs everything. This is what gets imported for your tests. """ out = StringIO() #Big o migrators = (ZWikiMigrator,) #Run the migrations for migrator in migrators: print >>out, "--Migrating %ss \n\n" % migrator.src_meta_type walker = migrator.walker(portal, migrator) walker.go(out=out) print >>out, walker.getOutput() return out.getvalue()