[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