[Erp5-report] r35960 kazuhiko - /erp5/trunk/products/ERP5Type/Base.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Jun 3 16:40:23 CEST 2010
Author: kazuhiko
Date: Thu Jun 3 16:40:19 2010
New Revision: 35960
URL: http://svn.erp5.org?rev=35960&view=rev
Log:
optimise Base._edit().
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=35960&r1=35959&r2=35960&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Base.py [utf8] Thu Jun 3 16:40:19 2010
@@ -1621,10 +1621,12 @@
keep_existing -- if set to 1 or True, only those properties for which
hasProperty is False will be updated.
"""
+ key_list = kw.keys()
+ if len(key_list) == 0:
+ return
modified_property_dict = self._v_modified_property_dict = {}
modified_object_dict = {}
- key_list = kw.keys()
unordered_key_list = [k for k in key_list if k not in edit_order]
ordered_key_list = [k for k in edit_order if k in key_list]
restricted_method_list = []
@@ -1643,6 +1645,11 @@
for method in permissions[1]:
restricted_method_list.append(method)
+ getProperty = self.getProperty
+ hasProperty = self.hasProperty
+ _setProperty = self._setProperty
+ setId = self.setId
+
def setChangedPropertyList(key_list):
not_modified_list = []
for key in key_list:
@@ -1651,9 +1658,9 @@
old_value = None
if not force_update:
try:
- old_value = self.getProperty(key, evaluate=0)
+ old_value = getProperty(key, evaluate=0)
except TypeError:
- old_value = self.getProperty(key)
+ old_value = getProperty(key)
if old_value != kw[key] or force_update:
# We keep in a thread var the previous values
@@ -1661,7 +1668,7 @@
# 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):
+ if not keep_existing or not hasProperty(key):
if restricted:
accessor_name = 'set' + UpperCase(key)
if accessor_name in restricted_method_list:
@@ -1669,7 +1676,7 @@
guarded_getattr(self, accessor_name)
modified_property_dict[key] = old_value
if key != 'id':
- modified_object_list = self._setProperty(key, kw[key])
+ modified_object_list = _setProperty(key, kw[key])
# BBB: if the setter does not return anything, assume
# that self has been modified.
if modified_object_list is None:
@@ -1680,7 +1687,7 @@
# objects themselves cannot be used as keys.
modified_object_dict[id(o)] = o
else:
- self.setId(kw['id'], reindex=reindex_object)
+ setId(kw['id'], reindex=reindex_object)
else:
not_modified_list.append(key)
return not_modified_list
More information about the Erp5-report
mailing list