skip to navigation
skip to content

collective.contentmigrationui 0.1

A content migration wizard based on Products.contentmigration

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:

  1. select the desired migration from a list
  2. select in which contents apply the migration from a filtered site map
  3. 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
 
File Type Py Version Uploaded on Size
collective.contentmigrationui-0.1-py2.4.egg (md5) Python Egg 2.4 2010-08-19 50KB