[Erp5-report] r28468 - /erp5/trunk/products/ERP5/Document/SimulationMovement.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Aug 19 17:13:40 CEST 2009
Author: luke
Date: Wed Aug 19 17:13:39 2009
New Revision: 28468
URL: http://svn.erp5.org?rev=28468&view=rev
Log:
- introduce appendDecision method, which appends user decision to simulation movement special property (divergence_history)
- introduce isPropertyForced method, which is querying this list to know if property is forced by user
Modified:
erp5/trunk/products/ERP5/Document/SimulationMovement.py
Modified: erp5/trunk/products/ERP5/Document/SimulationMovement.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/SimulationMovement.py?rev=28468&r1=28467&r2=28468&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/SimulationMovement.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/SimulationMovement.py [utf8] Wed Aug 19 17:13:39 2009
@@ -32,6 +32,7 @@
from Products.ERP5Type import Permissions, PropertySheet, Constraint, interfaces
from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
+from Globals import PersistentMapping
from Products.ERP5.Document.Movement import Movement
@@ -40,6 +41,7 @@
from Acquisition import aq_base
from Products.ERP5.Document.AppliedRule import TREE_DELIVERED_CACHE_KEY, TREE_DELIVERED_CACHE_ENABLED
+from Products.ERP5Type.patches.WorkflowTool import WorkflowHistoryList
# XXX Do we need to create groups ? (ie. confirm group include confirmed, getting_ready and ready
@@ -576,3 +578,34 @@
# related movements delivery is not completed
return False
return True
+
+ security.declareProtected( Permissions.ModifyPortalContent,
+ 'appendDecision')
+ def appendDecision(self, decision):
+ """Appends decision, optionally initialises"""
+ property = decision.divergence.tested_property
+ if getattr(aq_base(self), 'divergence_history', None) is None:
+ # initialise divergence history mapping
+ self.divergence_history = PersistentMapping()
+ if self.divergence_history.get(property, None) is None:
+ self.divergence_history[property] = WorkflowHistoryList()
+ self.divergence_history[property].append(decision)
+
+ security.declareProtected( Permissions.AccessContentsInformation,
+ 'isPropertyForced')
+ def isPropertyForced(self, property):
+ """Check if property was forced by user"""
+ divergence_history = getattr(aq_base(self), 'divergence_history', None)
+ if divergence_history is None:
+ return False
+
+ for decision in divergence_history.get(property, [])[::-1]:
+ # fuzzy logic:
+ # * if there was accept decision with force - force
+ # * but if there was accept without force after - do not force
+ # To be discussed.
+ if decision.decision == 'accept':
+ if decision.force_property:
+ return True
+ return False
+ return False
More information about the Erp5-report
mailing list