From c3b7cc4ae0cc59983207516b63c8c665b285e379 Mon Sep 17 00:00:00 2001
From: Romain Courteaud <romain@nexedi.com>
Date: Wed, 19 Dec 2007 15:47:09 +0000
Subject: [PATCH] Use Guard_checkWithoutRoles to check guard expression.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@18426 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/patches/DCWorkflow.py | 34 ++++++++++++++++----------
 1 file changed, 21 insertions(+), 13 deletions(-)

diff --git a/product/ERP5Type/patches/DCWorkflow.py b/product/ERP5Type/patches/DCWorkflow.py
index 645ef990a9..1f89b2f0a7 100644
--- a/product/ERP5Type/patches/DCWorkflow.py
+++ b/product/ERP5Type/patches/DCWorkflow.py
@@ -240,20 +240,28 @@ def DCWorkflowDefinition_getWorklistVariableMatchDict(self, info):
     if action_box_name:
       variable_match = dict([(x, [y % info for y in worklist_definition.getVarMatch(x)]) for x in worklist_definition.getVarMatchKeys()])
       variable_match.setdefault('portal_type', portal_type_list)
-      if not (guard is None or guard.check(security_manager, self, portal)):
+
+      is_permitted_worklist = 0
+      if guard is None:
+        is_permitted_worklist = 1
+      elif Guard_checkWithoutRoles(guard, security_manager, self, portal):
+        is_permitted_worklist = 1
         variable_match[SECURITY_PARAMETER_ID] = guard.roles
-      format_data = TemplateDict()
-      format_data._push(info)
-      format_data._push({'portal_type': ' OR '.join(variable_match['portal_type']),
-                         'local_roles': ';'.join(variable_match.get(SECURITY_PARAMETER_ID, []))})
-      variable_match[WORKLIST_METADATA_KEY] = {'format_data': format_data,
-                                               'worklist_title': action_box_name,
-                                               'worklist_id': worklist_id,
-                                               'workflow_title': self.title,
-                                               'workflow_id': self.id,
-                                               'action_box_url': worklist_definition.actbox_url,
-                                               'action_box_category': worklist_definition.actbox_category}
-      variable_match_dict[worklist_id] = variable_match
+
+      if is_permitted_worklist:
+        format_data = TemplateDict()
+        format_data._push(info)
+        format_data._push({'portal_type': ' OR '.join(variable_match['portal_type']),
+                           'local_roles': ';'.join(variable_match.get(SECURITY_PARAMETER_ID, []))})
+        variable_match[WORKLIST_METADATA_KEY] = {'format_data': format_data,
+                                                 'worklist_title': action_box_name,
+                                                 'worklist_id': worklist_id,
+                                                 'workflow_title': self.title,
+                                                 'workflow_id': self.id,
+                                                 'action_box_url': worklist_definition.actbox_url,
+                                                 'action_box_category': worklist_definition.actbox_category}
+        variable_match_dict[worklist_id] = variable_match
+
   if len(variable_match_dict) == 0:
     return None
   return variable_match_dict
-- 
2.30.9