[Erp5-report] r17355 - /erp5/trunk/products/ERP5Form/
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Nov 2 01:01:36 CET 2007
Author: yo
Date: Fri Nov 2 01:01:36 2007
New Revision: 17355
URL: http://svn.erp5.org?rev=17355&view=rev
Log:
Prevent modifying a selection object unnecessarily.
Modified:
erp5/trunk/products/ERP5Form/ListBox.py
erp5/trunk/products/ERP5Form/Selection.py
erp5/trunk/products/ERP5Form/SelectionTool.py
Modified: erp5/trunk/products/ERP5Form/ListBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ListBox.py?rev=17355&r1=17354&r2=17355&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ListBox.py (original)
+++ erp5/trunk/products/ERP5Form/ListBox.py Fri Nov 2 01:01:36 2007
@@ -888,7 +888,7 @@
def getParamDict(self):
"""Return a dictionary of parameters.
"""
- params = self.getSelection().getParams()
+ params = dict(self.getSelection().getParams())
if self.getListMethodName():
# Update parameters, only if list_method is defined.
# (i.e. do not update parameters in listboxes intended to show a previously defined selection.
@@ -980,6 +980,8 @@
# objects in the current ListBox configuration.
if 'select_expression' in params:
del params['select_expression']
+
+ self.getSelection().edit(params=params)
return params
getParamDict = lazyMethod(getParamDict)
Modified: erp5/trunk/products/ERP5Form/Selection.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/Selection.py?rev=17355&r1=17354&r2=17355&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/Selection.py (original)
+++ erp5/trunk/products/ERP5Form/Selection.py Fri Nov 2 01:01:36 2007
@@ -97,7 +97,7 @@
"""
method_path=None
- params={}
+ params=None
sort_on=()
default_sort_on=()
uids=()
@@ -158,23 +158,25 @@
security.declarePrivate('edit')
def edit(self, params=None, **kw):
- setattr(self, MEMCACHED_TOOL_MODIFIED_FLAG_PROPERTY_ID, True)
+ if self.isMemcachedUsed():
+ setattr(self, MEMCACHED_TOOL_MODIFIED_FLAG_PROPERTY_ID, True)
if params is not None:
- self.params = {}
- for key in params.keys():
- # We should only keep params which do not start with field_
- # in order to make sure we do not collect unwanted params
- # resulting form the REQUEST generated by an ERP5Form submit
- if key[0:6] != 'field_':
- self.params[key] = params[key]
+ # We should only keep params which do not start with field_
+ # in order to make sure we do not collect unwanted params
+ # resulting form the REQUEST generated by an ERP5Form submit
+ params = dict([item for item in params.iteritems() \
+ if not item[0].startswith('field_')])
+ if self.params != params:
+ self.params = params
if kw is not None:
- for k,v in kw.items():
+ for k,v in kw.iteritems():
if k in ('domain', 'report', 'domain_path', 'report_path', 'domain_list', 'report_list') or v is not None:
# XXX Because method_path is an URI, it must be in ASCII.
# Shouldn't Zope automatically does this conversion? -yo
- if k == 'method_path' and type(v) is type(u'a'):
+ if k == 'method_path' and isinstance(v, unicode):
v = v.encode('ascii')
- setattr(self, k, v)
+ if getattr(self, k, None) != v:
+ setattr(self, k, v)
def _p_independent(self) :
return 1
Modified: erp5/trunk/products/ERP5Form/SelectionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/SelectionTool.py?rev=17355&r1=17354&r2=17355&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/SelectionTool.py (original)
+++ erp5/trunk/products/ERP5Form/SelectionTool.py Fri Nov 2 01:01:36 2007
@@ -200,7 +200,8 @@
# Set the name so that this selection itself can get its own name.
selection_object.edit(name = selection_name)
- self._setSelectionToContainer(selection_name, selection_object)
+ if self.getSelectionFor(selection_name) != selection_object:
+ self._setSelectionToContainer(selection_name, selection_object)
security.declareProtected(ERP5Permissions.View, 'getSelectionParamsFor')
def getSelectionParamsFor(self, selection_name, params=None, REQUEST=None):
@@ -227,7 +228,7 @@
Sets the selection params for a given selection_name
"""
selection_object = self.getSelectionFor(selection_name, REQUEST)
- if selection_object:
+ if selection_object is not None:
selection_object.edit(params=params)
else:
selection_object = Selection(params=params)
More information about the Erp5-report
mailing list