[Erp5-report] r33957 kazuhiko - /erp5/trunk/products/ERP5/Document/SolverProcess.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Mar 22 17:02:02 CET 2010
Author: kazuhiko
Date: Mon Mar 22 17:02:02 2010
New Revision: 33957
URL: http://svn.erp5.org?rev=33957&view=rev
Log:
use list instead of dict.keys to store unhashable configuration parameters like lists.
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=33957&r1=33956&r2=33957&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/SolverProcess.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/SolverProcess.py [utf8] Mon Mar 22 17:02:02 2010
@@ -97,21 +97,22 @@
for movement in decision.getDeliveryValueList():
# Detect incompatibilities
movement_solver_dict = movement_dict.setdefault(movement.getRelativeUrl(), {})
- movement_solver_configuration_dict = movement_solver_dict.setdefault(solver_type, {})
- movement_solver_configuration_dict[solver_conviguration_key] = None
+ movement_solver_configuration_list = movement_solver_dict.setdefault(solver_type, [])
+ if solver_conviguration_key not in movement_solver_configuration_list:
+ movement_solver_configuration_list.append(solver_conviguration_key)
# Second, make sure solvers do not conflict and configuration is valid
# Build a movement and configuration structure per solver type
solver_dict = {}
for movement_url, movement_solver_dict in movement_dict.items():
- for solver_type, movement_solver_configuration_dict in movement_solver_dict.items():
+ for solver_type, movement_solver_configuration_list in movement_solver_dict.items():
solver_movement_dict = solver_dict.setdefault(solver_type, {})
configuration_list = solver_movement_dict.setdefault(movement_url, [])
- configuration_list.extend(movement_solver_configuration_dict) # XXX-JPS WRONG
+ configuration_list.extend(movement_solver_configuration_list) # XXX-JPS WRONG
# Then start the grouping procedure
solver_dict = {}
for movement_url, movement_solver_dict in movement_dict.items():
- for solver_type, movement_solver_configuration_dict in movement_solver_dict.items():
+ for solver_type, movement_solver_configuration_list in movement_solver_dict.items():
solver = types_tool[solver_type]
for other_solver_type in movement_solver_dict.keys():
if other_solver_type == solver_type:
@@ -123,12 +124,12 @@
try:
# Solver key contains only those properties which differentiate
# solvers (ex. there should be only Production Reduction Solver)
- solver_key = solver.getSolverProcessGroupingKey(movement_url, movement_solver_configuration_dict, movement_solver_dict, solver_dict[solver_type])
+ solver_key = solver.getSolverProcessGroupingKey(movement_url, movement_solver_configuration_list, movement_solver_dict)
except: # Raise the exception generated by the solver in case of failure of grouping
raise
solver_key_dict = solver_dict.setdefault(solver_type, {})
solver_movement_dict = solver_key_dict.setdefault(solver_key, {})
- solver_movement_dict[movement_url] = movement_solver_configuration_dict.keys()
+ solver_movement_dict[movement_url] = movement_solver_configuration_list
# Third, build target solvers
for solver_type, solver_key_dict in solver_dict.items():
More information about the Erp5-report
mailing list