[CPS-users] Content migration from a portal type to another portal type

Anahide Tchertchian at at nuxeo.com
Tue Jun 20 08:36:19 CEST 2006


Hi,

curios-one a écrit :
> Hello,
> I would like to know if it possible to migrate content from a portal 
> type to another one.

Unfortunately you cannot change a document portal type even if you have 
common schemas: other issues need to be taken care of.
But having common schemas would make your migration easier: a script 
could take your document datamodel, and use it to create a new document.
The datamodel is just a mapping between field names and values.

> This is what I would like to accomplish:
> I have a portal_type called football_match, the schemas used are: 
> metadata common football_match flexible_content.
> The football_match schema contains:
> Team_A (CPS String List Field)
> Team_B (CPS String List Field)
> Date_and_time (CPS DateTime Field)
> Place (CPS String List Field)
> Result (CPS String Field)
> 
> The other portal_type is called match and uses the following schemas: 
> metadata common match flexible_content
> The match schema contains:
> Team_A (CPS String List Field)
> Team_B (CPS String List Field)
> Date (CPS DateTime Field)
> Location (CPS String Field)
> Result (CPS String Field)
> 
> This should be the migration mapping between the schemas of the two 
> portal types
> Team_A = Team_A
> Team_B = Team_B
> Date_and_time --> Date
> Place --> Location
> Result = Result
> 
> Is it possible to do something like that? if yes, could you please 
> suggest me some pointers, as existing scripts, where to start from?

Here is a suggestion (not tested), given "old_proxy", using your 
football_match portal type, and any "container" where you want to create 
the new proxy:

datamodel = old_proxy.getContent().getDataModel(proxy=old_proxy)
# change what's needed on the datamodel
datamodel.set('Date', datamodel.get('Date_and_time'))
datamodel.set('Location', datamodel.get('Place'))
# create a new document
new_proxy = container.invokeFactory('match', old_proxy.getId(), 
datamodel=datamodel)

If you'd like to do that for every document, you can query the catalog 
and search on your portal type.

Regards,

-- 
Anahide Tchertchian, Nuxeo
Mail: at at nuxeo.com - Tel: +33 (0)1 40 33 71 60
http://www.nuxeo.com - http://www.cps-project.org


More information about the cps-users mailing list

This list archive provided by Nuxeo, the leaders of open source ECM. Check out the Nuxeo 5 open source, standards-based ECM project.