diff --git a/product/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py b/product/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py index fc0ad7ecd049a8e45b4ace6115f19b37cc5e799f..6c5d36222f324ce7f83ca6fbc36f6085332bc8ff 100644 --- a/product/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py +++ b/product/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py @@ -33,6 +33,12 @@ from Products.ERP5Type import Permissions from Products.DCWorkflowGraph.DCWorkflowGraph import getGraph +permission_code_dict = { 'Access contents information': (0, 'A') + , 'View' : (1, 'V') + , 'Modify portal content' : (2, 'M') + , 'Add portal content' : (3, 'C') + } + def getRoleList(workflow): role_set = set() for state in workflow.states.objectValues(): @@ -139,7 +145,7 @@ class DCWorkflowDocumentationHelper(DocumentationHelper): variable_list = [] variables = getattr(self.getDocumentedObject(), 'variables', None) if variables is not None: - for variable in variables.objectValues(): + for variable in variables.objectValues(): variable_list.append((variable.getId(), getattr(variable, "title", ""), getattr(variable, "description", "") @@ -164,11 +170,23 @@ class DCWorkflowDocumentationHelper(DocumentationHelper): variable_id_list = self.getVariableIdList() return map(lambda x: ('%s/variables/%s' % (self.uri, x)), variable_id_list) - security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionList') - def getPermissionList(self): - """ - """ - return getattr(self.getDocumentedObject(), "permissions", ()) + security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionItemList') + def getPermissionItemList(self, **kw): + """ + """ + permission_list = [] + extra_code = 0 + for permission in sorted(getattr(self.getDocumentedObject(), + "permissions", ())): + permission_code = permission_code_dict.get(permission) + if permission_code: + permission_code = permission_code[1] + else: + permission_code = str(extra_code) + extra_code += 1 + permission_list.append(self.asContext(permission=permission, + code=permission_code)) + return permission_list security.declareProtected(Permissions.AccessContentsInformation, 'getWorklistIdList') def getWorklistIdList(self): diff --git a/product/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py b/product/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py index aa91ea59da669e87f14f3660b4877c323ba8de1e..93b44fb0407c9c25841636a06a5a9278bd36ee4a 100644 --- a/product/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py +++ b/product/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py @@ -30,7 +30,7 @@ from AccessControl import ClassSecurityInfo from Globals import InitializeClass from Products.ERP5Type import Permissions from DocumentationHelper import DocumentationHelper -from DCWorkflowDocumentationHelper import getRoleList +from DCWorkflowDocumentationHelper import getRoleList, permission_code_dict class DCWorkflowStateDocumentationHelper(DocumentationHelper): """ @@ -62,6 +62,12 @@ class DCWorkflowStateDocumentationHelper(DocumentationHelper): """ return getRoleList(self.getDocumentedObject().getWorkflow()) + security.declareProtected(Permissions.AccessContentsInformation, 'getAcquiredPermissions') + def getAcquiredPermissions(self): + """ + """ + return self.getPermissionsOfRole(None) + security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionsList') def getPermissionsList(self): """ @@ -76,17 +82,25 @@ class DCWorkflowStateDocumentationHelper(DocumentationHelper): M = Modify Portal Content C = Add Portal Content """ - permissions = "" - permission_roles = self.getDocumentedObject().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" + permissions = [] + state = self.getDocumentedObject() + permission_list = getattr(state.getWorkflow(), 'permissions', ()) + if permission_list: + extra_sort = len(permission_code_dict) + extra_code = 0 + for permission in sorted(permission_list): + permission_code = permission_code_dict.get(permission) + if permission_code is None: + permission_code = extra_sort, str(extra_code) + extra_code += 1 + permission_info = state.getPermissionInfo(permission) + if role and role in permission_info['roles'] \ + or not role and permission_info['acquired']: + permissions.append(permission_code) + + permissions.sort() + permissions = ''.join(y for x,y in permissions) + return permissions