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

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Aug 27 16:09:44 CEST 2007


Author: vincent
Date: Mon Aug 27 16:09:44 2007
New Revision: 15845

URL: http://svn.erp5.org?rev=15845&view=rev
Log:
Split _getSimulationStateQuery into 2 parts to allow accessing intermediate simulation state lists.

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=15845&r1=15844&r2=15845&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/SimulationTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/SimulationTool.py Mon Aug 27 16:09:44 2007
@@ -198,7 +198,43 @@
           property_uid_list['query'] = tmp_uid_list
       return property_uid_list
 
-    def _getSimulationStateQuery(self, simulation_state=None, omit_transit=0,
+    def _getSimulationStateQuery(self, **kw):
+      simulation_state_dict = self._getSimulationStateDict(**kw)
+      return self._buildSimulationStateQuery(simulation_state_dict)
+      
+    def _buildSimulationStateQuery(self, simulation_state_dict):
+      input_simulation_state = simulation_state_dict.get(
+                                 'input_simulation_state')
+      output_simulation_state = simulation_state_dict.get(
+                                 'output_simulation_state')
+      simulation_state = simulation_state_dict.get('simulation_state')
+      if simulation_state is not None:
+        simulation_query = Query(operator='IN',
+                                 **{'stock.simulation_state':
+                                    simulation_state})
+      elif input_simulation_state is not None:
+        input_quantity_query = Query(**{'stock.quantity': '>0'})
+        input_simulation_query = Query(operator='IN',
+                                       **{'stock.simulation_state':
+                                          input_simulation_state})
+        simulation_query = ComplexQuery(input_quantity_query,
+                                        input_simulation_query,
+                                        operator='AND')
+        if output_simulation_state is not None:
+          output_quantity_query = Query(**{'stock.quantity': '<0'})
+          output_simulation_query = Query(operator='IN',
+                                          **{'stock.simulation_state':
+                                             output_simulation_state})
+          output_query = ComplexQuery(output_quantity_query,
+                                      output_simulation_query,
+                                      operator='AND')
+          simulation_query = ComplexQuery(simulation_query, output_query,
+                                          operator='OR')
+      else:
+        simulation_query = '1'
+      return simulation_query
+
+    def _getSimulationStateDict(self, simulation_state=None, omit_transit=0,
                                 input_simulation_state=None,
                                 output_simulation_state=None,
                                 transit_simulation_state=None,
@@ -211,7 +247,7 @@
       string_or_list = (str, list, tuple)
       # Simulation States
       # If strict_simulation_state is set, we directly put it into the dictionary
-      simulation_query = None
+      simulation_dict = {}
       if strict_simulation_state:
         if isinstance(simulation_state, string_or_list)\
                 and simulation_state:
@@ -272,44 +308,15 @@
         if input_simulation_state is not None:
           if output_simulation_state is not None:
             if input_simulation_state == output_simulation_state:
-              simulation_query = Query(
-                         **{'stock.simulation_state': input_simulation_state,
-                         'operator':'OR'})
+              simulation_dict['simulation_state'] = input_simulation_state
             else:
-              input_quantity_query = Query(**{'stock.quantity': '>0'})
-              input_simulation_query = Query(
-                         **{'stock.simulation_state': input_simulation_state,
-                         'operator':'OR'})
-              input_query = ComplexQuery(input_quantity_query, 
-                                         input_simulation_query,
-                                         operator='AND')
-              output_quantity_query = Query(**{'stock.quantity': '<0'})
-              output_simulation_query = Query(
-                        **{'stock.simulation_state': output_simulation_state,
-                        'operator':'OR'})
-              output_query = ComplexQuery(output_quantity_query, 
-                                          output_simulation_query,
-                                         operator='AND')
-              simulation_query = ComplexQuery(input_query, output_query, operator='OR')
+              simulation_dict['input_simulation_state'] = input_simulation_state
+              simulation_dict['output_simulation_state'] = output_simulation_state
           else:
-            input_quantity_query = Query(**{'stock.quantity': '>0'})
-            input_simulation_query_kw = {
-                       'stock.simulation_state': input_simulation_state,
-                       'operator':'OR'}
-            input_simulation_query = Query(**input_simulation_query_kw)
-            simulation_query = ComplexQuery(input_quantity_query, 
-                                            input_simulation_query,
-                                            operator = 'AND')
+            simulation_dict['input_simulation_state'] = input_simulation_state
         elif output_simulation_state is not None:
-          output_quantity_query = Query(**{'stock.quantity': '<0'})
-          output_simulation_query_kw = {
-                  'stock.simulation_state': output_simulation_state,
-                  'operator':'OR'}
-          output_simulation_query = Query(**output_simulation_query_kw)
-          simulation_query = ComplexQuery(output_quantity_query, 
-                                          output_simulation_query,
-                                          operator = 'AND')
-      return simulation_query
+          simulation_dict['simulation_state'] = output_simulation_state
+      return simulation_dict
 
     def _getOmitQuery(self, query_table=None, omit_input=0, omit_output=0, **kw):
       """




More information about the Erp5-report mailing list