[Erp5-report] r18784 - /erp5/trunk/products/ERP5Type/Accessor/

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Jan 17 19:58:46 CET 2008


Author: jerome
Date: Thu Jan 17 19:58:45 2008
New Revision: 18784

URL: http://svn.erp5.org?rev=18784&view=rev
Log:
private accessor now returns the list of modified objects, so that Alias.Reindex can reindex modified objects.


Modified:
    erp5/trunk/products/ERP5Type/Accessor/AcquiredProperty.py
    erp5/trunk/products/ERP5Type/Accessor/Alias.py
    erp5/trunk/products/ERP5Type/Accessor/Base.py
    erp5/trunk/products/ERP5Type/Accessor/Category.py
    erp5/trunk/products/ERP5Type/Accessor/ContentProperty.py
    erp5/trunk/products/ERP5Type/Accessor/List.py
    erp5/trunk/products/ERP5Type/Accessor/Value.py

Modified: erp5/trunk/products/ERP5Type/Accessor/AcquiredProperty.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/AcquiredProperty.py?rev=18784&r1=18783&r2=18784&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/AcquiredProperty.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/AcquiredProperty.py Thu Jan 17 19:58:45 2008
@@ -169,6 +169,7 @@
         o.setProperty(self._acquired_property, value, *args, **kw)
       else:
         o._setProperty(self._acquired_property, value, *args, **kw)
+      return (o, )
 
 DefaultSetter = Setter
 

Modified: erp5/trunk/products/ERP5Type/Accessor/Alias.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/Alias.py?rev=18784&r1=18783&r2=18784&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/Alias.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/Alias.py Thu Jan 17 19:58:45 2008
@@ -54,8 +54,14 @@
 
     def __call__(self, instance, *args, **kw):
       method = getattr(instance, self._accessor_id)
-      method(*args, **kw)
-      instance.reindexObject()
+      modified_object_list = method(*args, **kw)
+      # private methods can return a list of modified objects that this
+      # accessor have to reindex
+      if modified_object_list:
+        for modified_object in modified_object_list:
+          modified_object.reindexObject()
+      else:
+        instance.reindexObject()
 
 class Dummy(Reindex):
     """
@@ -79,4 +85,5 @@
 
     def __call__(self, instance, *args, **kw):
       method = getattr(instance, self._accessor_id)
-      method(*args, **kw)
+      method(*args, **kw)
+

Modified: erp5/trunk/products/ERP5Type/Accessor/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/Base.py?rev=18784&r1=18783&r2=18784&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/Base.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/Base.py Thu Jan 17 19:58:45 2008
@@ -69,6 +69,7 @@
 
     def __call__(self, instance, *args, **kw):
       value = args[0]
+      modified_object_list = []
       if not self._reindex:
         # Modify the property
         if value in self._null:
@@ -87,10 +88,13 @@
                 instance._setObject(self._storage_id, o)
                 o = getattr(instance, self._storage_id)
               o.manage_upload(file = file_upload)
+              modified_object_list = [o]
           else:
             LOG('ERP5Type WARNING',0,'%s is not an instance of FileUpload' % str(file_upload))
         else:
           setattr(instance, self._storage_id, self._cast(args[0]))
+          modified_object_list.append(instance)
+        return modified_object_list
       else:
         # Call the private setter
         warnings.warn("The reindexing accessors are deprecated.\n"

Modified: erp5/trunk/products/ERP5Type/Accessor/Category.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/Category.py?rev=18784&r1=18783&r2=18784&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/Category.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/Category.py Thu Jan 17 19:58:45 2008
@@ -64,6 +64,7 @@
                       "Please use Alias.Reindex instead.",
                       DeprecationWarning)
         instance.reindexObject()
+      return (instance, )
 
 Setter = ListSetter
 
@@ -98,6 +99,7 @@
                       "Please use Alias.Reindex instead.",
                       DeprecationWarning)
         instance.reindexObject()
+      return (instance, )
 
 class SetSetter(Method):
     """
@@ -142,6 +144,7 @@
                       "Please use Alias.Reindex instead.",
                       DeprecationWarning)
         instance.reindexObject()
+      return (instance, )
 
 
 class DefaultGetter(Method):

Modified: erp5/trunk/products/ERP5Type/Accessor/ContentProperty.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/ContentProperty.py?rev=18784&r1=18783&r2=18784&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/ContentProperty.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/ContentProperty.py Thu Jan 17 19:58:45 2008
@@ -209,6 +209,7 @@
       # We return the first available object in the list
       o = None
       available_id = None
+      modified_object_list = ()
       for k in self._storage_id_list:
         o = instance._getOb(k, None)
         if o is None: available_id = k
@@ -220,6 +221,7 @@
             o.setProperty(self._acquired_property, *args, **kw)
           else:
             o._setProperty(self._acquired_property, *args, **kw)
+          modified_object_list = (o, )
       if o is None and available_id is not None:
         from Products.ERP5Type.Utils import assertAttributePortalType
         assertAttributePortalType(instance, available_id, self._portal_type)
@@ -233,6 +235,8 @@
           o.setProperty(self._acquired_property, *args, **kw)
         else:
           o._setProperty(self._acquired_property, *args, **kw)
+        modified_object_list = (o, )
+      return modified_object_list
 
 class ListGetter(Method):
     """

Modified: erp5/trunk/products/ERP5Type/Accessor/List.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/List.py?rev=18784&r1=18783&r2=18784&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/List.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/List.py Thu Jan 17 19:58:45 2008
@@ -188,6 +188,7 @@
             # The list has no default property -> it is empty
             new_list_value = []
           setattr(instance, self._storage_id, tuple(new_list_value))
+        return (instance, )
       else:
         # Call the private setter
         warnings.warn("The reindexing accessors are deprecated.\n"

Modified: erp5/trunk/products/ERP5Type/Accessor/Value.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/Value.py?rev=18784&r1=18783&r2=18784&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/Value.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/Value.py Thu Jan 17 19:58:45 2008
@@ -61,6 +61,7 @@
                       "Please use Alias.Reindex instead.",
                       DeprecationWarning)
         instance.reindexObject()
+      return (instance, )
 
     psyco.bind(__call__)
 
@@ -84,6 +85,7 @@
                       "Please use Alias.Reindex instead.",
                       DeprecationWarning)
         instance.reindexObject()
+      return (instance, )
 
     psyco.bind(__call__)
 
@@ -108,6 +110,7 @@
                       "Please use Alias.Reindex instead.",
                       DeprecationWarning)
         instance.reindexObject()
+      return (instance, )
 
     psyco.bind(__call__)
 
@@ -497,6 +500,7 @@
                       "Please use Alias.Reindex instead.",
                       DeprecationWarning)
         instance.reindexObject()
+      return (instance, )
 
 UidSetter = UidListSetter
 
@@ -519,6 +523,7 @@
                       "Please use Alias.Reindex instead.",
                       DeprecationWarning)
         instance.reindexObject()
+      return (instance, )
 
 class DefaultIdGetter(Method):
     """




More information about the Erp5-report mailing list