[Erp5-report] r16062 - /erp5/trunk/products/ERP5/Tool/SimulationTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Sep 5 10:48:50 CEST 2007


Author: vincent
Date: Wed Sep  5 10:48:50 2007
New Revision: 16062

URL: http://svn.erp5.org?rev=16062&view=rev
Log:
Update group-by heuristic method:
  - it's its job to handle group-by-resource-by-default behaviour when another group-by is provided
  - move task of updating dictionnary from this method to caller, to make it easier to understand when reading caller

Modified:
    erp5/trunk/products/ERP5/Tool/SimulationTool.py

Modified: erp5/trunk/products/ERP5/Tool/SimulationTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/SimulationTool.py?rev=16062&r1=16061&r2=16062&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/SimulationTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/SimulationTool.py Wed Sep  5 10:48:50 2007
@@ -806,20 +806,34 @@
       """
       return self.getInventory(simulation_period='Future', **kw)
     
-    def _getDefaultGroupByParameters(self, ignore_group_by=0, **kw):
+    def _getDefaultGroupByParameters(self, ignore_group_by=0, 
+        group_by_node=0, group_by_mirror_node=0,
+        group_by_section=0, group_by_mirror_section=0,
+        group_by_payment=0,
+        group_by_variation=0, group_by_sub_variation=0,
+        group_by_movement=0,
+        group_by_resource=1,
+        **ignored):
       """
       Set defaults group_by parameters
-      """
-      if not (ignore_group_by \
-         or kw.get('group_by_node', 0) or kw.get('group_by_mirror_node', 0) \
-         or kw.get('group_by_section', 0) or kw.get('group_by_mirror_section', 0) \
-         or kw.get('group_by_payment', 0) or kw.get('group_by_sub_variation', 0) \
-         or kw.get('group_by_variation', 0) or kw.get('group_by_movement', 0) \
-         or kw.get('group_by_resource', 0)):
-        kw['group_by_movement'] = 1
-        kw['group_by_node'] = 1
-        kw['group_by_resource'] = 1
-      return kw
+
+      If ignore_group_by is true, this function returns an empty dict.
+
+      If any group-by is provided, automatically group by resource aswell
+      unless group_by_resource is explicitely set to false.
+      If no group by is provided, group by movement, node and resource.
+      """
+      new_group_by_dict = {}
+      if not ignore_group_by:
+        if group_by_node or group_by_mirror_node or group_by_section or \
+           group_by_mirror_section or group_by_payment or \
+           group_by_sub_variation or group_by_variation or group_by_movement:
+          new_group_by_dict['group_by_resource'] = group_by_resource
+        else:
+          new_group_by_dict['group_by_movement'] = 1
+          new_group_by_dict['group_by_node'] = 1
+          new_group_by_dict['group_by_resource'] = 1
+      return new_group_by_dict
 
     security.declareProtected(Permissions.AccessContentsInformation,
                               'getInventoryList')
@@ -838,7 +852,7 @@
         average, cost, etc.)
       """
       # If no group at all, give a default sort group by
-      kw = self._getDefaultGroupByParameters(**kw)
+      kw.update(self._getDefaultGroupByParameters(**kw))
       sql_kw = self._generateSQLKeywordDict(**kw)
       return self.Resource_zGetInventoryList(
                     src__=src__, ignore_variation=ignore_variation,




More information about the Erp5-report mailing list