[Erp5-report] r42396 nicolas.dumazet - /erp5/trunk/products/ERP5Type/patches/ObjectManager.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Jan 18 08:19:16 CET 2011


Author: nicolas.dumazet
Date: Tue Jan 18 08:19:16 2011
New Revision: 42396

URL: http://svn.erp5.org?rev=42396&view=rev
Log:
* extend importObjectFromFile API to pass suppress_events to _setObject
* make sure that when set_owner=False, nothing is tried on owernships at all

suppress_events=True or a call to manage_changeOwnershipType implies
a recursion in the imported objects, forcing portal type classes loads to
be able to return subojects: sometimes we do not want this.

This is required to be able to import XML files very early in the bootstrap
process without having zope to EVER recurse into the imported objects:
when installing portal_types/portal_property_sheets for bootstrap, we
  a) do not care about ownership
  b) do not care about oh-so-clever zope events


Modified:
    erp5/trunk/products/ERP5Type/patches/ObjectManager.py

Modified: erp5/trunk/products/ERP5Type/patches/ObjectManager.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/patches/ObjectManager.py?rev=42396&r1=42395&r2=42396&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/patches/ObjectManager.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/patches/ObjectManager.py [utf8] Tue Jan 18 08:19:16 2011
@@ -15,7 +15,7 @@
 # Import: add rename feature and make _importObjectFromFile return the object
 from OFS.ObjectManager import ObjectManager, customImporters
 
-def ObjectManager_importObjectFromFile(self, filepath, verify=1, set_owner=1, id=None):
+def ObjectManager_importObjectFromFile(self, filepath, verify=1, set_owner=1, id=None, suppress_events=False):
     #LOG('_importObjectFromFile, filepath',0,filepath)
     # locate a valid connection
     connection=self._p_jar
@@ -30,12 +30,13 @@ def ObjectManager_importObjectFromFile(s
     if id is None:
       id=ob.id
     if hasattr(id, 'im_func'): id=id()
-    self._setObject(id, ob, set_owner=set_owner)
+    self._setObject(id, ob, set_owner=set_owner, suppress_events=suppress_events)
 
     # try to make ownership implicit if possible in the context
     # that the object was imported into.
     ob=self._getOb(id)
-    ob.manage_changeOwnershipType(explicit=0)
+    if set_owner:
+      ob.manage_changeOwnershipType(explicit=0)
     return ob
 
 ObjectManager._importObjectFromFile=ObjectManager_importObjectFromFile



More information about the Erp5-report mailing list