A content migration wizard based on Products.contentmigration
Project description
Introduction
by Giacomo Spettoli<giacomo.spettoli@gmail.com> and Regione Emilia-Romagna
This product is a user interface for migrate content based on framework Products.contentmigration.
The wizard will guide the site administrator with 3 step:
select the desired migration from a list
select in which contents apply the migration from a filtered site map
confirm the migration.
This product also provide an easy way to register new migration. In “allmigration” folder you can find some example. Here the folderToLargeFolder migration:
class FolderToLargePloneFolder(object, ATFolderMigrator): """Migrate the old item type to the new item type """ implements(IContentMigrator) walker = CustomQueryWalker src_meta_type = "ATFolder" src_portal_type = "Folder" dst_meta_type = "ATBTreeFolder" dst_portal_type = "Large Plone Folder" description = "Document to Document" safeMigration = True def __init__(self, *args, **kwargs): ATFolderMigrator.__init__(self, *args, **kwargs) self.fields_map = BASE_AT_PROPERTIES FolderToLargePloneFolderMigrator = FolderToLargePloneFolder
In order to create your own migration you must create a class that extend ATFolderMigrator or ATItemMigrator:
from Products.contentmigration.archetypes import ATFolderMigrator,ATItemMigrator
This new class must implements IContentMigrator interface:
implements(IContentMigrator)
Next you insert source and destination portal_type and meta_type (you can find these values in zmi/portal_types):
src_meta_type = "ATFolder" src_portal_type = "Folder" dst_meta_type = "ATBTreeFolder" dst_portal_type = "Large Plone Folder"
You can set the migration as “safe” or “unsafe”. A “safe” migration is a migration where the destination content type has equal/more fields than origin content type. You can also insert a warning message in description:
safeMigration = True description = "Document to Document"
And than,in the __init__ method you must map source fields in destination fields. Basic archetypes fields are already mapped in BASE_AT_PROPERTIES:
self.fields_map = BASE_AT_PROPERTIES
- At last insert this line to create a named utility::
<class name>Migrator = <class name>
In a zcml file register the new utility:
<utility component=".basemigrations.FolderToLargePloneFolderMigrator" provides="..interfaces.IContentMigrator" name="collective.contentmigrationui.FolderToLargePloneFolderMigrator" />
Changelog
0.1
Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for collective.contentmigrationui-0.1-py2.4.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3e239e841cff097d7e825c34bc8b44951812663afe7527731f559142bc8e89b |
|
MD5 | 4b3b0183b51acc7e6d7cc3ea0741abfd |
|
BLAKE2b-256 | f3e176da27b1ef6f74b01b51b37e99679c31164bc642fcfa81611694f516e8be |