[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