[Erp5-report] r31337 kazuhiko - /erp5/trunk/products/ERP5/Document/NewOrderRule.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Dec 16 15:37:28 CET 2009


Author: kazuhiko
Date: Wed Dec 16 15:37:24 2009
New Revision: 31337

URL: http://svn.erp5.org?rev=31337&view=rev
Log:
define Rule class in NewOrderRule.py temporarily, that will be a super class of any rule in the new simulation implementation.

Modified:
    erp5/trunk/products/ERP5/Document/NewOrderRule.py

Modified: erp5/trunk/products/ERP5/Document/NewOrderRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/NewOrderRule.py?rev=31337&r1=31336&r2=31337&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/NewOrderRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/NewOrderRule.py [utf8] Wed Dec 16 15:37:24 2009
@@ -38,17 +38,9 @@
      MovementCollectionUpdaterMixin
 from Products.ERP5.MovementCollectionDiff import _getPropertyAndCategoryList
 
-class NewOrderRule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
-  """
-  Order Rule object make sure an Order in the simulation
-  is consistent with the real order
-
-  WARNING: what to do with movement split ?
-  """
-  # CMF Type Definition
-  meta_type = 'ERP5 New Order Rule'
-  portal_type = 'New Order Rule'
-
+# XXX this class should be moved to Rule.py once new simulation is fully
+# integrated.
+class Rule(RuleMixin, MovementCollectionUpdaterMixin, Predicate):
   # Declarative security
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
@@ -70,6 +62,38 @@
     PropertySheet.Version,
     PropertySheet.Rule
     )
+
+  security.declareProtected(Permissions.View, 'getDivergenceList')
+  def getDivergenceList(self, movement):
+    """
+    Returns a list of divergences of the movements provided
+    in delivery_or_movement.
+
+    movement -- a movement, a delivery, a simulation movement,
+                or a list thereof
+    """
+    if movement.getDelivery() is None:
+      return []
+    result_list = []
+    for divergence_tester in self._getDivergenceTesterList(
+      exclude_quantity=False):
+      result = divergence_tester.explain(movement)
+      if isinstance(result, (list, tuple)): # for compatibility
+        result_list.extend(result)
+      elif result is not None:
+        result_list.append(result)
+    return result_list
+
+class NewOrderRule(Rule):
+  """
+  Order Rule object make sure an Order in the simulation
+  is consistent with the real order
+
+  WARNING: what to do with movement split ?
+  """
+  # CMF Type Definition
+  meta_type = 'ERP5 New Order Rule'
+  portal_type = 'New Order Rule'
 
   # XXX this method is missing in interface.
   def isOrderable(self, movement):




More information about the Erp5-report mailing list