[Erp5-report] r45811 jerome - in /erp5/trunk/products/ERP5: Document/ mixin/

nobody at svn.erp5.org nobody at svn.erp5.org
Wed May 4 11:12:24 CEST 2011


Author: jerome
Date: Wed May  4 11:12:24 2011
New Revision: 45811

URL: http://svn.erp5.org?rev=45811&view=rev
Log:
As divergence tester are predicates, test if they apply on the simulation movements before explaining the divergence

Modified:
    erp5/trunk/products/ERP5/Document/SolverProcess.py
    erp5/trunk/products/ERP5/mixin/rule.py

Modified: erp5/trunk/products/ERP5/Document/SolverProcess.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/SolverProcess.py?rev=45811&r1=45810&r2=45811&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/SolverProcess.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/SolverProcess.py [utf8] Wed May  4 11:12:24 2011
@@ -239,17 +239,18 @@ class SolverProcess(XMLObject, ActivePro
     for movement in movement_list:
       for simulation_movement in movement.getDeliveryRelatedValueList():
         for divergence_tester in simulation_movement.getParentValue().getSpecialiseValue()._getDivergenceTesterList(exclude_quantity=False):
-          if divergence_tester.explain(simulation_movement) in (None, []):
-            continue
-          application_list = map(lambda x:x.getRelativeUrl(),
-                 solver_tool.getSolverDecisionApplicationValueList(movement, divergence_tester))
-          application_list.sort()
-          solver_list = solver_tool.searchTargetSolverList(
-            divergence_tester, simulation_movement)
-          solver_list.sort(key=lambda x:x.getId())
-          solver_decision_key = (divergence_tester.getRelativeUrl(), tuple(application_list), tuple(solver_list))
-          movement_dict = solver_decision_dict.setdefault(solver_decision_key, {})
-          movement_dict[simulation_movement] = None
+          if divergence_tester.test(simulation_movement):
+            if divergence_tester.explain(simulation_movement) in (None, []):
+              continue
+            application_list = map(lambda x:x.getRelativeUrl(),
+                   solver_tool.getSolverDecisionApplicationValueList(movement, divergence_tester))
+            application_list.sort()
+            solver_list = solver_tool.searchTargetSolverList(
+              divergence_tester, simulation_movement)
+            solver_list.sort(key=lambda x:x.getId())
+            solver_decision_key = (divergence_tester.getRelativeUrl(), tuple(application_list), tuple(solver_list))
+            movement_dict = solver_decision_dict.setdefault(solver_decision_key, {})
+            movement_dict[simulation_movement] = None
 
     # Now build the solver decision instances based on the previous
     # grouping

Modified: erp5/trunk/products/ERP5/mixin/rule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/mixin/rule.py?rev=45811&r1=45810&r2=45811&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/mixin/rule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/mixin/rule.py [utf8] Wed May  4 11:12:24 2011
@@ -243,12 +243,13 @@ class RuleMixin(Predicate):
     """
     result_list = []
     for divergence_tester in self._getDivergenceTesterList(
-      exclude_quantity=False):
-      result = divergence_tester.explain(movement)
-      if isinstance(result, (list, tuple)): # for compatibility
-        result_list.extend(result)
-      elif result is not None:
-        result_list.append(result)
+                                          exclude_quantity=False):
+      if divergence_tester.test(movement):
+        result = divergence_tester.explain(movement)
+        if isinstance(result, (list, tuple)): # for compatibility
+          result_list.extend(result)
+        elif result is not None:
+          result_list.append(result)
     return result_list
 
   # Placeholder for methods to override



More information about the Erp5-report mailing list