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

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Sep 26 10:03:11 CEST 2008


Author: kazuhiko
Date: Fri Sep 26 10:03:08 2008
New Revision: 23832

URL: http://svn.erp5.org?rev=23832&view=rev
Log:
small optimisation.

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=23832&r1=23831&r2=23832&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ListBox.py (original)
+++ erp5/trunk/products/ERP5Form/ListBox.py Fri Sep 26 10:03:08 2008
@@ -1378,8 +1378,9 @@
           param = unicode(param, self.getEncoding())
 
         # Obtain a search field, if any.
-        if self.getForm().has_field(alias):
-          search_field = self.getForm().get_field(alias)
+        form = self.getForm()
+        if form.has_field(alias):
+          search_field = form.get_field(alias)
         else:
           search_field = None
 
@@ -1513,6 +1514,7 @@
 
       for report_tree in report_tree_list:
         # Prepare query by defining selection report object.
+        report_tree_obj = report_tree.obj
 
         # FIXME: this code needs optimization. The query should be delayed
         # as late as possible, because this code queries all data, even if
@@ -1527,14 +1529,14 @@
         # If the domain has a context_url, list_method or stat_method
         # parameters, we should use them instead of the ListBox ones when
         # looking for objects in the domain.
-        domain_context = report_tree.obj.getProperty('context_url', None)
+        domain_context = report_tree_obj.getProperty('context_url', None)
         if domain_context is not None:
           domain_context = context.restrictedTraverse(domain_context)
         else:
           domain_context = context
-        domain_list_method = report_tree.obj.getProperty('list_method',
+        domain_list_method = report_tree_obj.getProperty('list_method',
             list_method)
-        domain_stat_method = report_tree.obj.getProperty('stat_method',
+        domain_stat_method = report_tree_obj.getProperty('stat_method',
             stat_method)
 
         if report_tree.is_pure_summary and self.showStat():
@@ -1546,7 +1548,7 @@
           # Query the stat.
           stat_brain = selection(method=domain_stat_method, context=domain_context, REQUEST=self.request)
 
-          domain_title = report_tree.obj.getTitle()# XXX Yusei Keep original domain title before overriding
+          domain_title = report_tree_obj.getTitle()# XXX Yusei Keep original domain title before overriding
 
           stat_result = {}
           for index, (k, v) in enumerate(self.getSelectedColumnList()):
@@ -1555,9 +1557,9 @@
             except IndexError:
               stat_result[k] = ''
 
-          stat_context = report_tree.obj.asContext(**stat_result)
+          stat_context = report_tree_obj.asContext(**stat_result)
           # XXX yo thinks that this code below is useless, so disabled.
-          #absolute_url_txt = report_tree.obj.absolute_url()
+          #absolute_url_txt = report_tree_obj.absolute_url()
           #stat_context.absolute_url = lambda: absolute_url_txt
           stat_context.domain_url = report_tree.domain_url
           report_section_list.append(ReportSection(is_summary = True, object_list = [stat_context],
@@ -1595,7 +1597,7 @@
                                                        selection_domain = report_tree.selection_domain,
                                                        depth = report_tree.depth))
           else:
-            stat_context = report_tree.obj.asContext()
+            stat_context = report_tree_obj.asContext()
             #absolute_url_txt = s[0].absolute_url()
             #stat_context.absolute_url = lambda : absolute_url_txt
             stat_context.domain_url = report_tree.domain_url
@@ -1620,7 +1622,7 @@
               if report_tree.exception_uid_list is not None:
                 # Display current parent domain.
                 report_section_list.append(ReportSection(is_summary = False,
-                                                         object_list = [report_tree.obj],
+                                                         object_list = [report_tree_obj],
                                                          object_list_len = 1,
                                                          is_open = report_tree.is_open,
                                                          selection_domain = report_tree.selection_domain,
@@ -1895,20 +1897,21 @@
     Every processed value is guaranteed to be encoded in unicode.
     """
     # If this is a report line without statistics, just return an empty result.
+    renderer = self.renderer
     if self.getObject() is None:
-      return [(None, '')] * len(self.renderer.getSelectedColumnList())
+      return [(None, '')] * len(renderer.getSelectedColumnList())
 
     # Otherwise, evaluate each column.
-    stat_column_dict = dict(self.renderer.getStatColumnList())
+    stat_column_dict = dict(renderer.getStatColumnList())
     _marker = []
     value_list = []
-    selection = self.renderer.getSelection()
-    param_dict = self.renderer.getParamDict()
+    selection = renderer.getSelection()
+    param_dict = renderer.getParamDict()
 
     # Embed the selection index.
     selection.edit(index = self.index)
 
-    for (sql, title), alias in zip(self.renderer.getSelectedColumnList(), self.renderer.getColumnAliasList()):
+    for (sql, title), alias in zip(renderer.getSelectedColumnList(), renderer.getColumnAliasList()):
       editable_field = None
       original_value = None
       processed_value = None
@@ -1952,7 +1955,7 @@
         brain = self.getBrain()
 
         # Use a widget, if any.
-        editable_field = self.renderer.getEditableField(alias)
+        editable_field = renderer.getEditableField(alias)
         tales = False
         if editable_field is not None:
           tales = editable_field.tales.get('default', '')
@@ -2015,7 +2018,7 @@
       if processed_value is None:
         processed_value = u''
       elif not isinstance(processed_value, unicode):
-        processed_value = unicode(str(processed_value), self.renderer.getEncoding())
+        processed_value = unicode(str(processed_value), renderer.getEncoding())
 
       value_list.append((original_value, processed_value))
 
@@ -2030,16 +2033,18 @@
     where each tuple consists of a piece of HTML, the original value and a boolean value which represents
     an error status. If the status is true, an error is detected.
     """
-    editable_column_id_set = self.renderer.getEditableColumnIdSet()
-    field_id = self.renderer.getId()
-    form = self.renderer.getForm()
-    error_dict = self.renderer.getFieldErrorDict()
+    renderer = self.renderer
+    request = renderer.request
+    editable_column_id_set = renderer.getEditableColumnIdSet()
+    field_id = renderer.getId()
+    form = renderer.getForm()
+    error_dict = renderer.getFieldErrorDict()
     brain = self.getBrain()
-    encoding = self.renderer.getEncoding()
-    url_column_dict = dict(self.renderer.getUrlColumnList())
-    selection = self.renderer.getSelection()
-    selection_name = self.renderer.getSelectionName()
-    ignore_layout = int(self.renderer.request.get('ignore_layout', 0))
+    encoding = renderer.getEncoding()
+    url_column_dict = dict(renderer.getUrlColumnList())
+    selection = renderer.getSelection()
+    selection_name = renderer.getSelectionName()
+    ignore_layout = int(request.get('ignore_layout', 0))
     ui_domain = 'erp5_ui'
 
     html_list = []
@@ -2061,7 +2066,7 @@
         break
 
     for (original_value, processed_value), (sql, title), alias \
-      in zip(self.getValueList(), self.renderer.getSelectedColumnList(), self.renderer.getColumnAliasList()):
+      in zip(self.getValueList(), renderer.getSelectedColumnList(), renderer.getColumnAliasList()):
       # By default, no error.
       error = False
 
@@ -2072,7 +2077,7 @@
       # XXX why don't we generate an input form when a widget is not defined?
       editable_field = None
       if not self.isSummary():
-        editable_field = self.renderer.getEditableField(alias)
+        editable_field = renderer.getEditableField(alias)
 
       # Prepare link value - we now use it for both static and field rendering
       no_link = False
@@ -2127,7 +2132,7 @@
         if has_error: # If there is any error on listbox, we should use what the user has typed
           display_value = None
         else:
-          validated_value_dict = self.renderer.request.get(field_id, None)
+          validated_value_dict = request.get(field_id, None)
           if validated_value_dict is None:
             # If this is neither an error nor a validated listbox
             # we should use the original value
@@ -2162,8 +2167,8 @@
           # the REQUEST into the brain. In addition, the define a
           # cell property on the request itself so that forms may
           # use the 'cell' value (refer to get_value method in Form.py)
-          cell_request = brain.asContext( REQUEST = self.renderer.request
-                                        , form    = self.renderer.request.form
+          cell_request = brain.asContext( REQUEST = request
+                                        , form    = request.form
                                         , cell    = brain
                                         )
           if editable_field.get_value('enabled', REQUEST=cell_request):
@@ -2176,7 +2181,7 @@
             cell_html = ''
         else:
           # If the brain does not support asContext (eg. it is None), no way
-          self.renderer.request.cell = self.getObject()
+          request.cell = self.getObject()
           cell_request = brain
           if editable_field.get_value('enabled', REQUEST=cell_request):
             cell_html = editable_field.render( value   = display_value
@@ -2309,7 +2314,7 @@
     list_method = self.getListMethod()
     selection = self.getSelection()
     if list_method is not None:
-      method_path = getPath(self.getContext()) + '/' + self.getListMethodName()
+      method_path = '%s/%s' % (getPath(self.getContext()), self.getListMethodName())
       list_url = '%s?selection_name=%s' % (self.getUrl(), self.getRequestedSelectionName())
       selection_index = self.getSelectionIndex()
       if selection_index is not None:
@@ -2464,7 +2469,7 @@
             # we can validate, so that we can use the same list
             # as the one used for displaying the listbox
             for sql in editable_column_ids:
-              alias = '_'.join(sql.split('.'))
+              alias = sql.replace('.', '_')
               if '.' in sql:
                 property_id = '.'.join(sql.split('.')[1:]) # Only take trailing part
               else:
@@ -2505,7 +2510,7 @@
               o.uid = uid
             result[uid[4:]] = {}
             for sql in editable_column_ids:
-              alias = '_'.join(sql.split('.'))
+              alias = sql.replace('.', '_')
               if '.' in sql:
                 property_id = '.'.join(sql.split('.')[1:]) # Only take trailing part
               else:
@@ -2551,7 +2556,7 @@
                       o = object
                       break
               for sql in editable_column_ids:
-                alias = '_'.join(sql.split('.'))
+                alias = sql.replace('.', '_')
                 if '.' in sql:
                   property_id = '.'.join(sql.split('.')[1:]) # Only take trailing part
                 else:




More information about the Erp5-report mailing list