[Erp5-report] r31196 kazuhiko - /erp5/trunk/products/ERP5/mixin/rule.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Dec 9 16:09:22 CET 2009
Author: kazuhiko
Date: Wed Dec 9 16:09:21 2009
New Revision: 31196
URL: http://svn.erp5.org?rev=31196&view=rev
Log:
Rule should be IDivergenceController.
Modified:
erp5/trunk/products/ERP5/mixin/rule.py
Modified: erp5/trunk/products/ERP5/mixin/rule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/mixin/rule.py?rev=31196&r1=31195&r2=31196&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/mixin/rule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/mixin/rule.py [utf8] Wed Dec 9 16:09:21 2009
@@ -50,6 +50,7 @@
# Declarative interfaces
zope.interface.implements(interfaces.IRule,
+ interfaces.IDivergenceController,
interfaces.IMovementCollectionUpdater,)
# Portal Type of created children
@@ -100,6 +101,40 @@
# And forward expand
for movement in applied_rule.getMovementList():
movement.expand(**kw)
+
+ # Implementation of IDivergenceController
+ security.declareProtected( Permissions.AccessContentsInformation,
+ 'isDivergent')
+ def isDivergent(self, movement, ignore_list=[]):
+ """
+ Returns true if the Simulation Movement is divergent comparing to
+ the delivery value
+ """
+ delivery = movement.getDeliveryValue()
+ if delivery is None:
+ return False
+ if len(self.getDivergenceList(movement)) == 0:
+ return False
+ else:
+ return True
+
+ 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
+ """
+ result_list = []
+ for divergence_tester in self._getDivergenceTesterList():
+ 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
# Implementation of IMovementCollectionUpdater
def getMovementCollectionDiff(self, context, rounding=False, movement_generator=None):
More information about the Erp5-report
mailing list