# Move a Plone site without losing the modification times and workflow status # we rely on export/import to do this # You need to provide a valid REQUEST so that the import doesn't fail # if running from zopectl debug you can use makerequest to wrap your app object # with a fake request # Author: Jordan Baker (jbbNOASPM@scryent.com) import tempfile import os def moveSite(portal, new_location): # export the site to a tempfile f = tempfile.NamedTemporaryFile() portal._p_jar.exportFile(portal._p_oid, f) # re-import in the correct location f.seek(0) new_location._importObjectFromFile(f, verify=False, set_owner=False) # delete the old site oid = portal.id portal.aq_parent.manage_delObjects(ids=[oid]) # update the catalog in the new site new_location[oid].portal_catalog.refreshCatalog(clear=True) # NamedTemporaryFile should delete the underlying temporary file # when its object is garbage collected
Thursday, April 12, 2007
copying a plone site
Copying sites has recently gotten a lot better since 2.5.2 fixed some bugs with modification times getting reset but still you generally can't use copy & paste to copy sites as I have found it doesn't retain the review state of your documents (and this is by design actually I think).
Another approach is to import/export. This actually works great so I put together a script that will automate this process.
You need to call this from either an External Method or from zopectl debug (or ipython). That's an exercise up to the reader...
# moveSites.py
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment