[Erp5-report] r19802 - /erp5/trunk/products/ERP5Form/ListBox.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Mar 11 18:04:35 CET 2008


Author: yusei
Date: Tue Mar 11 18:04:33 2008
New Revision: 19802

URL: http://svn.erp5.org?rev=19802&view=rev
Log:
Stat method must be called only when necessary

Modified:
    erp5/trunk/products/ERP5Form/ListBox.py

Modified: erp5/trunk/products/ERP5Form/ListBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ListBox.py?rev=19802&r1=19801&r2=19802&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ListBox.py (original)
+++ erp5/trunk/products/ERP5Form/ListBox.py Tue Mar 11 18:04:33 2008
@@ -1378,10 +1378,18 @@
     new_param_dict['select_expression'] = self.getStatSelectExpression()
     selection = self.getSelection()
     selection.edit(params = new_param_dict)
-    result = selection(method = self.getStatMethod(), context = self.getContext(), REQUEST = self.request)
+
+    _result = {'value':None, 'called':False}
+    def getStatMethodResult():
+      """Stat method must be called only when necessary"""
+      if _result['called']:
+        return _result['value']
+      _result['value'] = selection(method = self.getStatMethod(), context = self.getContext(), REQUEST = self.request)
+      _result['called'] = True
+      return _result['value']
 
     # For each column, check the presense of a specific stat method. If not present,
-    # use the result obtained above.
+    # use getStatMethodResult defined above.
     value_list = []
     stat_column_dict = dict(self.getStatColumnList())
     for (sql, title), alias in zip(self.getSelectedColumnList(), self.getColumnAliasList()):
@@ -1400,7 +1408,7 @@
         processed_value = u''
       elif stat_method is None:
         try:
-          original_value = getattr(result[0], alias)
+          original_value = getattr(getStatMethodResult()[0], alias)
           processed_value = original_value
         except (IndexError, AttributeError, KeyError, ValueError):
           original_value = None




More information about the Erp5-report mailing list