[Erp5-report] r36739 kazuhiko - /erp5/trunk/products/ERP5/Document/SolverProcess.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jun 30 15:05:16 CEST 2010


Author: kazuhiko
Date: Wed Jun 30 15:05:10 2010
New Revision: 36739

URL: http://svn.erp5.org?rev=36739&view=rev
Log:
split Solver Dicision documents per application level list and per available target solver list.

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

Modified: erp5/trunk/products/ERP5/Document/SolverProcess.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/SolverProcess.py?rev=36739&r1=36738&r2=36739&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/SolverProcess.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/SolverProcess.py [utf8] Wed Jun 30 15:05:10 2010
@@ -217,18 +217,22 @@ class SolverProcess(XMLObject, ActivePro
     # We suppose here that movement_list is a list of
     # delivery movements. Let us group decisions in such way
     # that a single decision is created per divergence tester instance
-    # and per application level list
+    # and per application level list and per available target solver
+    # list
     solver_tool = self.getPortalObject().portal_solvers
     solver_decision_dict = {}
     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.compare(simulation_movement, 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_decision_key = (divergence_tester.getRelativeUrl(), tuple(application_list))
+          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
 
@@ -237,7 +241,7 @@ class SolverProcess(XMLObject, ActivePro
     solver_decision_list = self.objectValues(portal_type='Solver Decision')
     index = 1
     for solver_decision_key, movement_dict in solver_decision_dict.items():
-      causality, delivery_list = solver_decision_key
+      causality, delivery_list, solver_list = solver_decision_key
       matched_solver_decision_list = [
         x for x in solver_decision_list \
         if x.getDeliveryList() == list(delivery_list) and \




More information about the Erp5-report mailing list