Nuxeo mailing list archives
[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.