[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