From 67337cd1fef2389d88d2907225a261865a95193c Mon Sep 17 00:00:00 2001
From: Julien Muchembled <jm@nexedi.com>
Date: Wed, 18 Feb 2009 17:36:56 +0000
Subject: [PATCH] Fix display of permissions on workflow states.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@25612 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../DCWorkflowDocumentationHelper.py          | 35 ++++++++++---------
 .../DCWorkflowStateDocumentationHelper.py     | 23 ++----------
 2 files changed, 21 insertions(+), 37 deletions(-)

diff --git a/product/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py b/product/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py
index 1b738fa0bd..ddfbf2d69d 100644
--- a/product/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py
+++ b/product/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py
@@ -32,26 +32,27 @@ from DocumentationHelper import DocumentationHelper
 from Products.ERP5Type import Permissions
 from Products.DCWorkflowGraph.DCWorkflowGraph import getGraph
 
-def getStatePermissionsOfRole(state=None, role=''):
+def getStatePermissionsOfRole(state, role):
+  """
+  Returns list of permissions for a given role with AVMC format above
+    A = Access contents information
+    V = View
+    M = Modify Portal Content
+    C = Add Portal Content
+  """
   permissions = ""
-  if state != None:
-    if hasattr(state, '__dict__'):
-      if 'permission_roles' in state.__dict__.keys():
-        if 'View' in state.__dict__['permission_roles'].keys():
-          if role in state.__dict__['permission_roles']['View']:
-            permissions += "V"
-        if 'Access contents information' in state.__dict__['permission_roles'].keys():
-          if role in state.__dict__['permission_roles']['Access contents information']:
-            permissions += "A"
-        if 'Modify portal content' in state.__dict__['permission_roles'].keys():
-          if role in state.__dict__['permission_roles']['Modify portal content']:
-            permissions += "M"
-        if 'Add portal content' in state.__dict__['permission_roles'].keys():
-          if role in state.__dict__['permission_roles']['Add portal content']:
-            permissions += "C"
+  permission_roles = state.permission_roles
+  if permission_roles:
+    if role in permission_roles.get('Access contents information', ()):
+      permissions += "A"
+    if role in permission_roles.get('View', ()):
+      permissions += "V"
+    if role in permission_roles.get('Modify portal content', ()):
+      permissions += "M"
+    if role in permission_roles.get('Add portal content', ()):
+      permissions += "C"
   return permissions
 
-
 class DCWorkflowDocumentationHelper(DocumentationHelper):
   """
     Provides access to all documentation information
diff --git a/product/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py b/product/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py
index 198d93a1d1..70a7c5286e 100644
--- a/product/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py
+++ b/product/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py
@@ -28,8 +28,9 @@
 
 from AccessControl import ClassSecurityInfo
 from Globals import InitializeClass
-from DocumentationHelper import DocumentationHelper
 from Products.ERP5Type import Permissions
+from DocumentationHelper import DocumentationHelper
+from DCWorkflowDocumentationHelper import getStatePermissionsOfRole
 
 class DCWorkflowStateDocumentationHelper(DocumentationHelper):
   """
@@ -53,25 +54,7 @@ class DCWorkflowStateDocumentationHelper(DocumentationHelper):
     return self.getDocumentedObject().transitions
 
   def getPermissionsOfRole(self, role):
-    """
-    Returns list of permissions for a given role with AVMC format above
-      A = Access contents information
-      V = View
-      M = Modify Portal Content
-      C = Add Portal Content
-    """
-    permissions = ""
-    permission_roles = self.getDocumentedObject().permission_roles
-    if permission_roles:
-      if role in state.permission_roles.get('Access contents information', ()):
-        permissions += "A"
-      if role in state.permission_roles.get('View', ()):
-        permissions += "V"
-      if role in state.permission_roles.get('Modify portal content', ()):
-        permissions += "M"
-      if role in state.permission_roles.get('Add portal content', ()):
-        permissions += "C"
-    return permissions
+    return getStatePermissionsOfRole(self.getDocumentedObject(), role)
 
   security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionsOfRoleOwner')
   def getPermissionsOfRoleOwner(self):
-- 
2.30.9