[Erp5-report] r36868 kazuhiko - in /erp5/trunk/products/ERP5: Tool/ interfaces/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jul 5 15:54:54 CEST 2010


Author: kazuhiko
Date: Mon Jul  5 15:54:51 2010
New Revision: 36868

URL: http://svn.erp5.org?rev=36868&view=rev
Log:
clean up IDeliverySolverFactory and its implementation.

Modified:
    erp5/trunk/products/ERP5/Tool/SolverTool.py
    erp5/trunk/products/ERP5/interfaces/delivery_solver_factory.py

Modified: erp5/trunk/products/ERP5/Tool/SolverTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/SolverTool.py?rev=36868&r1=36867&r2=36868&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/SolverTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Tool/SolverTool.py [utf8] Mon Jul  5 15:54:51 2010
@@ -28,6 +28,7 @@
 ##############################################################################
 
 import zope.interface
+import re
 
 from AccessControl import ClassSecurityInfo
 from Products.ERP5Type import Permissions, interfaces
@@ -49,46 +50,36 @@ class SolverTool(TypeProvider):
 
   # Declarative Security
   security = ClassSecurityInfo()
- 
+
   # Declarative interfaces
-  zope.interface.implements(interfaces.IDeliverySolverFactory, )
+  zope.interface.implements(interfaces.IDeliverySolverFactory,)
 
   # IDeliverySolverFactory implementation
-  def newDeliverySolver(self, class_name, movement_list):
-    """
-    """
-    __import__('%s.%s' % (DeliverySolver.__name__, class_name))
-    solver_class = getattr(getattr(DeliverySolver, class_name), class_name)
-    return solver_class(movement_list)
-
-  def getDeliverySolverClassNameList(self):
-    """
+  def newDeliverySolver(self, portal_type, movement_list):
     """
-    # XXX Hardcoded for now. We need a new registration system for
-    # delivery solvers.
-    return ['FIFO', 'LIFO', 'MinPrice',]
+    Return a new instance of delivery solver of the given
+    portal_type and with appropriate parameters.
 
-  def getDeliverySolverTranslatedItemList(self, class_name_list=None):
-    """
-    """
-    return sorted([(self.getDeliverySolverTranslatedTitle(x), x) \
-                   for x in self.getDeliverySolverClassNameList() \
-                   if class_name_list is None or x in class_name_list],
-                  key=lambda x:str(x[0]))
+    portal_type -- the portal type of the delivery solver.
 
-  def getDeliverySolverTranslatedTitle(self, class_name):
+    movement_list -- movements to initialise the instance with
     """
-    """
-    __import__('%s.%s' % (DeliverySolver.__name__, class_name))
-    return translateString(
-      getattr(getattr(DeliverySolver, class_name), class_name).title)
+    solver_type = self._getOb(portal_type)
+    solver_class = re.sub('^add', 'newTemp',
+                       solver_type.getTypeFactoryMethodId())
+    module = __import__('Products.ERP5Type.Document', globals(), locals(),
+                        [solver_class])
+    tmp_solver = getattr(module, solver_class)(self, 'delivery_solver')
+    tmp_solver.setDeliveryValueList(movement_list)
+    return tmp_solver
 
-  def getDeliverySolverTranslatedDescription(self, class_name):
+  def getDeliverySolverTranslatedItemList(self, portal_type_list=None):
     """
     """
-    __import__('%s.%s' % (DeliverySolver.__name__, class_name))
-    return translateString(
-      getattr(getattr(DeliverySolver, class_name), class_name).__doc__)
+    return sorted([(translateString(x), 'portal_solvers/%s' % x) \
+                   for x in self.getPortalDeliverySolverTypeList() \
+                   if portal_type_list is None or x in portal_type_list],
+                  key=lambda x:str(x[0]))
 
   def getSolverProcessValueList(self, delivery_or_movement=None, validation_state=None):
     """

Modified: erp5/trunk/products/ERP5/interfaces/delivery_solver_factory.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/interfaces/delivery_solver_factory.py?rev=36868&r1=36867&r2=36868&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/interfaces/delivery_solver_factory.py [utf8] (original)
+++ erp5/trunk/products/ERP5/interfaces/delivery_solver_factory.py [utf8] Mon Jul  5 15:54:51 2010
@@ -35,51 +35,24 @@ class IDeliverySolverFactory(Interface):
   IDeliverySolverFactory provides methods to create delivery
   solver instances and retrieve metadata related to delivery
   solvers.
-
-  NOTE:
-    - wouldn't it be better to use ERP5 document
-      classes for delivery solvers.
-      (only meaningful reason: use activities to
-      setTotalQuantity on 10,000+ movements)
   """
 
-  def newDeliverySolver(class_name, movement_list):
+  def newDeliverySolver(portal_type, movement_list):
     """
     Return a new instance of delivery solver of the given
-    class_name and with appropriate parameters.
+    portal_type and with appropriate parameters.
 
-    class_name -- the class name of the delivery solver.
+    portal_type -- the portal_type of the delivery solver.
 
     movement_list -- movements to initialise the instance with
     """
 
-  def getDeliverySolverClassNameList():
-    """
-    Return the list of class names of available delivery solvers.
-    """
-
-  def getDeliverySolverTranslatedItemList(class_name_list=None):
+  def getDeliverySolverTranslatedItemList(portal_type_list=None):
     """
-    Return the list of translated titles and class names of available
+    Return the list of translated titles and portal types of available
     delivery solvers. Use this method to fill listfields in user interface
     forms.
 
-    class_name_list -- optional parameter to filter results only
-                       with provided class names
-    """
-
-  def getDeliverySolverTranslatedTitle(class_name):
-    """
-    Return the title to be used in the user interface for the
-    delivery solver with given class_name
-
-    class_name -- the class name of a delivery solver
-    """
-
-  def getDeliverySolverTranslatedDescription(class_name):
-    """
-    Return the description to be used in the user interface for the
-    delivery solver with given class_name
-
-    class_name -- the class name of a delivery solver
+    portal_type_list -- optional parameter to filter results only
+                       with provided portal types
     """




More information about the Erp5-report mailing list