[Erp5-report] r30638 - in /erp5/trunk/products/ERP5: Document/ Tool/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Nov 16 00:15:00 CET 2009


Author: jp
Date: Mon Nov 16 00:15:00 2009
New Revision: 30638

URL: http://svn.erp5.org?rev=30638&view=rev
Log:
Moved code from SolverTool to SolverProcess. 

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

Modified: erp5/trunk/products/ERP5/Document/SolverProcess.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/SolverProcess.py?rev=30638&r1=30637&r2=30638&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/SolverProcess.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/SolverProcess.py [utf8] Mon Nov 16 00:15:00 2009
@@ -137,3 +137,50 @@
     """
     for solver in self.contentValues(portal_type=self.getPortalObject().getPortalTargetSolverTypeList()):
       solver.activate(active_process=self).solve()
+
+
+  # API
+  def isSolverDecisionListConsistent(self):
+    """
+    Returns True is the Solver Process decisions do not 
+    need to be rebuilt, False else. This method can be
+    invoked before invoking buildSolverDecisionList if
+    this helps reducing CPU time.
+    """
+
+  def buildSolverDecisionList(self, delivery_or_movement=None):
+    """
+    Build (or rebuild) the solver decisions in the solver process
+
+    delivery_or_movement -- a movement, a delivery, 
+                            or a list thereof
+    """
+    if delivery_or_movement is None:
+      raise NotImplementedError
+      # Gather all delivery lines already found
+      # in already built solvers
+
+    # We suppose here that delivery_or_movement is a list of
+    # delivery lines. Let group decisions in such way
+    # that a single decision is created per divergence tester instance
+    # and per application level list
+    solver_decision_dict = {}
+    for movement in delivery_or_movement:
+      for simulation_movement in movement.getDeliveryRelatedValueList():
+        simulation_movemet_url = simulation_movement.getRelativeUrl()
+        for divergence_tester in simulation_movement.getParentValue().getDivergenceTesterValueList():
+          application_list = map(lambda x:x.getRelativeUrl(), 
+                 self.getSolverDecisionApplicationValueList(simulation_movement, divergence_tester))
+          application_list.sort()
+          solver_decision_key = (divergence_tester.getRelativeUrl(), application_list)
+          movement_dict = solver_decision_dict.setdefaults(solver_decision_key, {})
+          movement_dict[simulation_movemet_url] = None
+
+    # Now build the solver decision instances based on the previous
+    # grouping
+    #  XXX-JPS: pseudocode for update (ie. rebuild) is not present
+    for solver_decision_key, movement_dict in solver_decision_dict.items():
+      new_decision = self.newContent(portal_type='Solver Decision')
+      new_decision._setDeliveryList(movement_dict.keys())
+      new_decision._setSolver(solver_decision_key[0])
+      # No need to set application_list or....?

Modified: erp5/trunk/products/ERP5/Tool/SolverTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/SolverTool.py?rev=30638&r1=30637&r2=30638&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/SolverTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Tool/SolverTool.py [utf8] Mon Nov 16 00:15:00 2009
@@ -143,30 +143,11 @@
     if not self.isDivergent(delivery_or_movement=delivery_or_movement):
       return None
 
-    # We suppose here that delivery_or_movement is a list of
-    # delivery lines. Let group decisions in such way
-    # that a single decision is created per divergence tester instance
-    # and per application level list
-    solver_decision_dict = {}
-    for movement in delivery_or_movement:
-      for simulation_movement in movement.getDeliveryRelatedValueList():
-        simulation_movemet_url = simulation_movement.getRelativeUrl()
-        for divergence_tester in simulation_movement.getParentValue().getDivergenceTesterValueList():
-          application_list = map(lambda x:x.getRelativeUrl(), 
-                 self.getSolverDecisionApplicationValueList(simulation_movement, divergence_tester))
-          application_list.sort()
-          solver_decision_key = (divergence_tester.getRelativeUrl(), application_list)
-          movement_dict = solver_decision_dict.setdefaults(solver_decision_key, {})
-          movement_dict[simulation_movemet_url] = None
-
-    # Now build the solver process instances based on the previous
-    # grouping
+    # Create an empty solver process
     new_solver = self.newContent(portal_type='Solver Process')
-    for solver_decision_key, movement_dict in solver_decision_dict.items():
-      new_decision = self.newContent(portal_type='Solver Decision')
-      new_decision._setDeliveryList(movement_dict.keys())
-      new_decision._setSolver(solver_decision_key[0])
-      # No need to set application_list or....?
+    # And build decisions
+    new_solver.updateSolverDecision(delivery_or_movement=delivery_or_movement)
+    return new_solver
 
   def getSolverProcessValueList(self, delivery_or_movement=None, validation_state=None):
     """




More information about the Erp5-report mailing list