[Erp5-report] r19606 - in /erp5/trunk/products/ERP5Type: ./ Accessor/
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Feb 29 17:06:59 CET 2008
Author: alex
Date: Fri Feb 29 17:06:59 2008
New Revision: 19606
URL: http://svn.erp5.org?rev=19606&view=rev
Log:
* add edit_order parameter and logic to _edit() (see changelog of r19605)
* _v_accessor_created_object is no longer useful
Modified:
erp5/trunk/products/ERP5Type/Accessor/AcquiredProperty.py
erp5/trunk/products/ERP5Type/Accessor/ContentProperty.py
erp5/trunk/products/ERP5Type/Base.py
Modified: erp5/trunk/products/ERP5Type/Accessor/AcquiredProperty.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/AcquiredProperty.py?rev=19606&r1=19605&r2=19606&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/AcquiredProperty.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/AcquiredProperty.py Fri Feb 29 17:06:59 2008
@@ -161,7 +161,6 @@
if o is None:
o = instance.newContent(id=self._storage_id,
portal_type=self._portal_type[0])
- instance._v_accessor_created_object = 1
if self._reindex:
warnings.warn("The reindexing accessors are deprecated.\n"
"Please use Alias.Reindex instead.",
Modified: erp5/trunk/products/ERP5Type/Accessor/ContentProperty.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/ContentProperty.py?rev=19606&r1=19605&r2=19606&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/ContentProperty.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/ContentProperty.py Fri Feb 29 17:06:59 2008
@@ -227,7 +227,6 @@
assertAttributePortalType(instance, available_id, self._portal_type)
o = instance.newContent(id=available_id,
portal_type=self._portal_type[0])
- instance._v_accessor_created_object = 1
if self._reindex:
warnings.warn("The reindexing accessors are deprecated.\n"
"Please use Alias.Reindex instead.",
Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=19606&r1=19605&r2=19606&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py (original)
+++ erp5/trunk/products/ERP5Type/Base.py Fri Feb 29 17:06:59 2008
@@ -1465,7 +1465,7 @@
# Object attributes update method
security.declarePrivate( '_edit' )
def _edit(self, REQUEST=None, force_update=0, reindex_object=0,
- keep_existing=0, activate_kw=None, **kw):
+ keep_existing=0, activate_kw=None, edit_order=[], **kw):
"""
Generic edit Method for all ERP5 object
The purpose of this method is to update attributed, eventually do
@@ -1483,46 +1483,34 @@
"""
modified_property_dict = self._v_modified_property_dict = {}
- def getModifiedPropertyList(self):
- my_modified_property_list = []
- for key in kw.keys():
- # We only change if the value is different
- # This may be very long...
- old_value = None
- if not force_update:
- try:
- old_value = self.getProperty(key, evaluate=0)
- except TypeError:
- old_value = self.getProperty(key)
-
- if old_value != kw[key] or force_update:
- # We keep in a thread var the previous values
- # this can be useful for interaction workflow to implement lookups
- # XXX If iteraction workflow script is triggered by edit and calls
- # edit itself, this is useless as the dict will be overwritten
- # If the keep_existing flag is set to 1, we do not update properties which are defined
- if not keep_existing or not self.hasProperty(key):
- modified_property_dict[key] = old_value
- my_modified_property_list.append(key)
- return my_modified_property_list
-
- my_modified_property_list = getModifiedPropertyList(self)
-
- # When we get notified by an accessor that it created an object, recheck
- # all properties
- while 1:
- self._v_accessor_created_object = 0
- for key in my_modified_property_list:
- if key != 'id':
- self._setProperty(key, kw[key])
- else:
- self.setId(kw['id'], reindex=reindex_object)
- if self._v_accessor_created_object == 1:
- # refresh list of modified properties, and restart the process
- my_modified_property_list = getModifiedPropertyList(self)
- break
- else:
- break
+ key_list = kw.keys()
+ ordered_key_list = [k for k in key_list if k not in edit_order]
+ for k in edit_order:
+ if k in key_list:
+ ordered_key_list.append(k)
+
+ for key in ordered_key_list:
+ # We only change if the value is different
+ # This may be very long...
+ old_value = None
+ if not force_update:
+ try:
+ old_value = self.getProperty(key, evaluate=0)
+ except TypeError:
+ old_value = self.getProperty(key)
+
+ if old_value != kw[key] or force_update:
+ # We keep in a thread var the previous values
+ # this can be useful for interaction workflow to implement lookups
+ # XXX If iteraction workflow script is triggered by edit and calls
+ # edit itself, this is useless as the dict will be overwritten
+ # If the keep_existing flag is set to 1, we do not update properties which are defined
+ if not keep_existing or not self.hasProperty(key):
+ modified_property_dict[key] = old_value
+ if key != 'id':
+ self._setProperty(key, kw[key])
+ else:
+ self.setId(kw['id'], reindex=reindex_object)
if reindex_object:
# We do not want to reindex the object if nothing is changed
More information about the Erp5-report
mailing list