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

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Mar 10 11:45:45 CET 2010


Author: kazuhiko
Date: Wed Mar 10 11:45:38 2010
New Revision: 33573

URL: http://svn.erp5.org?rev=33573&view=rev
Log:
support updating solver decisions in buildSolverDecisionList().

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=33573&r1=33572&r2=33573&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/SolverProcess.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/SolverProcess.py [utf8] Wed Mar 10 11:45:38 2010
@@ -207,19 +207,29 @@
 
     # Now build the solver decision instances based on the previous
     # grouping
-    #  XXX-JPS: pseudocode for update (ie. rebuild) is not present
+    solver_decision_list = self.objectValues(portal_type='Solver Decision')
     index = 1
     for solver_decision_key, movement_dict in solver_decision_dict.items():
-      if temp_object:
-        new_decision = self.newContent(portal_type='Solver Decision',
-                                       temp_object=True,
-                                       #id=index,
-                                       uid='new_%s' % index)
-        index += 1
+      causality, delivery_list = solver_decision_key
+      matched_solver_decision_list = [
+        x for x in solver_decision_list \
+        if x.getDeliveryList() == list(delivery_list) and \
+        x.getCausality() == causality]
+      if len(matched_solver_decision_list) > 0:
+        solver_decision_list.remove(matched_solver_decision_list[0])
       else:
-        new_decision = self.newContent(portal_type='Solver Decision')
-      new_decision._setDeliveryList(solver_decision_key[1])
-      new_decision._setCausality(solver_decision_key[0])
+        if temp_object:
+          new_decision = self.newContent(portal_type='Solver Decision',
+                                         temp_object=True,
+                                         #id=index,
+                                         uid='new_%s' % index)
+          index += 1
+        else:
+          new_decision = self.newContent(portal_type='Solver Decision')
+        new_decision._setDeliveryList(solver_decision_key[1])
+        new_decision._setCausality(solver_decision_key[0])
+    # XXX what should we do for non-matched existing solver decisions?
+    # do we need to cancel them by using an appropriate workflow?
 
   def _generateRandomId(self):
     # call ActiveProcess._generateRandomId() explicitly otherwise




More information about the Erp5-report mailing list