Log message for revision 120867: remove parent pointer while exporting Changed: U Zope/branches/davisagli-exclude-parent-pointers-from-export/src/OFS/ObjectManager.py
-=- Modified: Zope/branches/davisagli-exclude-parent-pointers-from-export/src/OFS/ObjectManager.py =================================================================== --- Zope/branches/davisagli-exclude-parent-pointers-from-export/src/OFS/ObjectManager.py 2011-03-11 14:54:33 UTC (rev 120866) +++ Zope/branches/davisagli-exclude-parent-pointers-from-export/src/OFS/ObjectManager.py 2011-03-11 14:55:44 UTC (rev 120867) @@ -22,6 +22,7 @@ import os import re import sys +import transaction from AccessControl import ClassSecurityInfo from AccessControl.class_init import InitializeClass @@ -584,11 +585,25 @@ cfg = getConfiguration() f = os.path.join(cfg.clienthome, '%s.%s' % (id, suffix)) - if toxml: - exportXML(ob._p_jar, ob._p_oid, f) - else: - ob._p_jar.exportFile(ob._p_oid, f) + ob = aq_base(ob) + parent = getattr(ob, '__parent__', _marker) + if parent is not _marker: + sp = transaction.savepoint(True) + del ob.__parent__ + # create a savepoint so that the export includes the version + # without a __parent__ pointer + transaction.savepoint(True) + try: + if toxml: + exportXML(ob._p_jar, ob._p_oid, f) + else: + ob._p_jar.exportFile(ob._p_oid, f) + finally: + if parent is not _marker: + # roll back so that we don't actually remove the __parent__ + sp.rollback() + if REQUEST is not None: return self.manage_main(self, REQUEST, manage_tabs_message= _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins