[Erp5-report] r16350 - /erp5/trunk/products/ERP5Form/PlanningBox.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Sep 14 08:17:43 CEST 2007
Author: rafael
Date: Fri Sep 14 08:17:43 2007
New Revision: 16350
URL: http://svn.erp5.org?rev=16350&view=rev
Log:
Fix for bad performance issue. list_method and secondary method is called only once.
Modified:
erp5/trunk/products/ERP5Form/PlanningBox.py
Modified: erp5/trunk/products/ERP5Form/PlanningBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/PlanningBox.py?rev=16350&r1=16349&r2=16350&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/PlanningBox.py (original)
+++ erp5/trunk/products/ERP5Form/PlanningBox.py Fri Sep 14 08:17:43 2007
@@ -1288,19 +1288,41 @@
list_object = []
self.nbr_groups=0
object_list=[]
+ sec_layer_object_list=[]
self.report_activity_dict = {}
indic_line=0
index_line=0
blocks_object={}
select_expression = ''
self.sec_layer_uid_list = []
+
+
+ self.selection.edit(params = kw)
+ if self.list_method not in (None,''):
+ # valid list_method has been found
+ build_object_list = self.selection(method = self.list_method,
+ context=self.context, REQUEST=self.REQUEST)
+ else:
+ # Reset Object List if ther is no List Method
+ build_object_list = []
+
+ # Defining the Secondary Layer Object List
+ if self.sec_layer_list_method not in (None,''):
+ build_sec_layer_object_list = self.selection(
+ method=self.sec_layer_list_method,
+ context=self.context,
+ REQUEST=self.REQUEST)
+ else:
+ build_sec_layer_object_list = []
+
+
# now iterating through report_tree_list
for object_tree_line in report_tree_list:
# prepare query by defining selection report object
# defining info_dict, holding all information about the current object.
info_dict = None
info_dict = {}
-
+ object_list = []
if object_tree_line.getIsPureSummary() and show_stat:
info_dict['stat'] = 1
# push new select_expression
@@ -1328,36 +1350,16 @@
else:
info_dict['stat'] = 0
-
- # processing all cases
- self.selection.edit(params = kw)
- # recovering object list
- if self.list_method not in (None,''):
- # valid list_method has been found
- self.selection.edit(exception_uid_list= \
- object_tree_line.getExceptionUidList())
- object_list = self.selection(method = self.list_method,
- context=self.context, REQUEST=self.REQUEST)
- else:
- # Reset Object List if ther is no List Method
- object_list = []
+ sec_layer_object_list = []
if self.selection_report_path == 'parent':
object_list = [object_tree_line.getObject()]
- # Defining the Secondary Layer Object List
- if self.sec_layer_list_method not in (None,''):
- sec_layer_object_list = self.selection(
- method=self.sec_layer_list_method,
- context=self.context,
- REQUEST=self.REQUEST)
- else:
- sec_layer_object_list = []
-
# recovering exeption_uid_list
exception_uid_list = object_tree_line.getExceptionUidList()
domain_obj = object_tree_line.getObject()
+ # Default Values
new_object_list = []
sec_new_object_list = []
if domain_obj.getPortalType() == 'Domain':
@@ -1365,9 +1367,9 @@
for bc in domain_obj.getMembershipCriterionBaseCategoryList():
if (category_obj is not None) and (bc is not None):
category_value = category_obj.getRelativeUrl()
- new_object_list.extend([ s_obj for s_obj in object_list \
+ new_object_list.extend([ s_obj for s_obj in build_object_list \
if s_obj._getDefaultAcquiredCategoryMembership(bc) == category_value])
- sec_new_object_list.extend([ s_obj for s_obj in sec_layer_object_list \
+ sec_new_object_list.extend([ s_obj for s_obj in build_sec_layer_object_list \
if s_obj._getDefaultAcquiredCategoryMembership(bc) == category_value])
object_list = new_object_list
More information about the Erp5-report
mailing list