From cbd66c77cb0be18c339057471cc165d287ec03cc Mon Sep 17 00:00:00 2001
From: Wenjie Zheng <wenjie.zheng@tiolive.com>
Date: Fri, 27 Mar 2015 15:20:06 +0000
Subject: [PATCH] Interaction.py: add more functions.

---
 product/ERP5Workflow/Document/Interaction.py | 64 +++++++++++++++++++-
 1 file changed, 63 insertions(+), 1 deletion(-)

diff --git a/product/ERP5Workflow/Document/Interaction.py b/product/ERP5Workflow/Document/Interaction.py
index aee749fed4..6ec6a27a5b 100644
--- a/product/ERP5Workflow/Document/Interaction.py
+++ b/product/ERP5Workflow/Document/Interaction.py
@@ -53,6 +53,17 @@ class Interaction(XMLObject):
   managed_role = ()
   erp5_permission_roles = {} # { permission: [role] or (role,) }
   manager_bypass = 0
+  trigger_type = TRIGGER_WORKFLOW_METHOD
+  script_name = ()  # Executed before transition
+  after_script_name = ()  # Executed after transition
+  before_commit_script_name = () #Executed Before Commit Transaction
+  activate_script_name = ()  # Executed as activity
+  portal_type_filter = None
+  portal_type_group_filter = None
+  once_per_transaction = False
+  temporary_document_disallowed = False
+  var_exprs = None  # A mapping.
+
 
   # Declarative security
   security = ClassSecurityInfo()
@@ -65,4 +76,55 @@ class Interaction(XMLObject):
     PropertySheet.CategoryCore,
     PropertySheet.DublinCore,
     PropertySheet.Interaction,
-  )
\ No newline at end of file
+  )
+
+  def getGuardSummary(self):
+    res = None
+    if self.guard is not None:
+      res = self.guard.getSummary()
+    return res
+
+  def getGuard(self):
+    if self.guard is None:
+      self.generateGuard()
+    return self.guard
+
+  def getVarExprText(self, id):
+    if not self.var_exprs:
+      return ''
+    else:
+      expr = self.var_exprs.get(id, None)
+      if expr is not None:
+        return expr.text
+      else:
+        return ''
+
+  def generateGuard(self):
+    if self.trigger_type == TRIGGER_USER_ACTION:
+      if self.guard == None:
+        self.guard = Guard(permissions=self.getPermissionList(),
+                      roles=self.getRoleList(),
+                      groups=self.getGroupList(),
+                      expr=self.getExpression())
+
+      if self.guard.roles != self.getRoleList():
+        self.guard.roles = self.getRoleList()
+      elif self.guard.permissions != self.getPermissionList():
+        self.guard.permissions = self.getPermissionList()
+      elif self.guard.groups != self.getGroupList():
+        self.guard.groups = self.getGroupList()
+      elif self.guard.expr != self.getExpression():
+        self.guard.expr = self.getExpression()
+
+  def getVarExprText(self, id):
+    if not self.var_exprs:
+      return ''
+    else:
+      expr = self.var_exprs.get(id, None)
+      if expr is not None:
+        return expr.text
+      else:
+        return ''
+
+  def getWorkflow(self):
+      return aq_parent(aq_inner(aq_parent(aq_inner(self))))
-- 
2.30.9