[Erp5-report] r24164 - /erp5/trunk/products/ERP5Type/Base.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Oct 13 21:36:28 CEST 2008


Author: yo
Date: Mon Oct 13 21:36:28 2008
New Revision: 24164

URL: http://svn.erp5.org?rev=24164&view=rev
Log:
Due to a bootstrap problem that using objects as keys of a set calls getUID implicitly, while portal_catalog is not available yet, it is necessary to avoid setting objects as keys.

Modified:
    erp5/trunk/products/ERP5Type/Base.py

Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=24164&r1=24163&r2=24164&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py (original)
+++ erp5/trunk/products/ERP5Type/Base.py Mon Oct 13 21:36:28 2008
@@ -1559,7 +1559,7 @@
       hasProperty is False will be updated.
     """
     modified_property_dict = self._v_modified_property_dict = {}
-    modified_object_set = set()
+    modified_object_dict = {}
 
     key_list = kw.keys()
     unordered_key_list = [k for k in key_list if k not in edit_order]
@@ -1612,7 +1612,11 @@
               # that self has been modified.
               if modified_object_list is None:
                 modified_object_list = (self,)
-              modified_object_set.update(modified_object_list)
+              for o in modified_object_list:
+                # XXX using id is not quite nice, but getUID causes a
+                # problem at the bootstrap of an ERP5 site. Therefore,
+                # objects themselves cannot be used as keys.
+                modified_object_dict[id(o)] = o
             else:
               self.setId(kw['id'], reindex=reindex_object)
         else:
@@ -1625,7 +1629,7 @@
     setChangedPropertyList(ordered_key_list)
 
     if reindex_object:
-      for o in modified_object_set:
+      for o in modified_object_dict.itervalues():
         o.reindexObject(activate_kw=activate_kw)
 
   security.declareProtected( Permissions.ModifyPortalContent, 'setId' )




More information about the Erp5-report mailing list