[Erp5-report] r25617 - /erp5/trunk/products/ERP5Type/DocumentationHelper/
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Feb 19 04:03:26 CET 2009
Author: jm
Date: Thu Feb 19 04:03:25 2009
New Revision: 25617
URL: http://svn.erp5.org?rev=25617&view=rev
Log:
Display permissions on workflow states for used roles on the workflow.
Modified:
erp5/trunk/products/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py
erp5/trunk/products/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py
erp5/trunk/products/ERP5Type/DocumentationHelper/DocumentationHelper.py
Modified: erp5/trunk/products/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py?rev=25617&r1=25616&r2=25617&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/DocumentationHelper/DCWorkflowDocumentationHelper.py [utf8] Thu Feb 19 04:03:25 2009
@@ -32,26 +32,15 @@
from Products.ERP5Type import Permissions
from Products.DCWorkflowGraph.DCWorkflowGraph import getGraph
-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 = ""
- 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
+
+def getRoleList(workflow):
+ role_set = set()
+ for state in workflow.states.objectValues():
+ if state.permission_roles:
+ for role_list in state.permission_roles.itervalues():
+ role_set.update(role_list)
+ return sorted(role_set)
+
class DCWorkflowDocumentationHelper(DocumentationHelper):
"""
@@ -97,55 +86,28 @@
"""
return "DC Workflow"
- # Specific methods
- security.declareProtected(Permissions.AccessContentsInformation, 'getStateIdList')
- def getStateIdList(self):
- """
- """
- state_list = []
- states = getattr(self.getDocumentedObject(), 'states', None)
- if states is not None:
- for state in states.objectValues():
- state_list.append(state.getId())
- return state_list
+ security.declareProtected(Permissions.AccessContentsInformation, 'getRoleColumnList')
+ def getRoleColumnList(self):
+ """Return the list of pertinent columns for permissions on states."""
+ return [(role.lower().replace(' ', '_') + '_permissions', role)
+ for role in getRoleList(self.getDocumentedObject())]
+
+ def getStateUriList(self):
+ return ['%s/states#%s' % (self.uri, state)
+ for state in sorted(self.getDocumentedObject().states.objectIds())]
security.declareProtected(Permissions.AccessContentsInformation, 'getStateItemList')
- def getStateItemList(self):
- """
- """
- state_list = []
- states = getattr(self.getDocumentedObject(), 'states', None)
- if states is not None:
- for state in states.objectValues():
- state_list.append((getattr(state, "id", ""),
- getattr(state, "title", ""),
- getStatePermissionsOfRole(state, 'Owner'),
- getStatePermissionsOfRole(state, 'Assignor'),
- getStatePermissionsOfRole(state, 'Assignee'),
- getStatePermissionsOfRole(state, 'Associate'),
- getStatePermissionsOfRole(state, 'Author'),
- getStatePermissionsOfRole(state, 'Auditor')
- ))
- return state_list
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getStateUriList')
- def getStateUriList(self):
- """
- """
- state_id_list = self.getStateIdList()
- return map(lambda x: ('%s/states/%s' % (self.uri, x)), state_id_list)
-
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getStateURIList')
- def getStateURIList(self):
- """
- """
- state_item_list = self.getStateItemList()
- klass = self.getDocumentedObject().__class__
- class_name = klass.__name__
- module = klass.__module__
- uri_prefix = '%s.%s.' % (module, class_name)
- return map(lambda x: ('%s%s' % (uri_prefix, x[0]), x[1], x[2], x[3], x[4], x[5], x[6], x[7]), state_item_list)
+ def getStateItemList(self, **kw):
+ """
+ """
+ item_list = []
+ role_column_list = self.getRoleColumnList()
+ for uri in self.getStateUriList():
+ helper = self.getDocumentationHelper('DCWorkflowStateDocumentationHelper', uri)
+ for column_id, role in role_column_list:
+ setattr(helper, column_id, helper.getPermissionsOfRole(role))
+ item_list.append(helper)
+ return item_list
security.declareProtected(Permissions.AccessContentsInformation, 'getTransitionIdList')
def getTransitionIdList(self):
@@ -278,7 +240,6 @@
worklist_list.append((wl.__name__, title, wl.__dict__["description"],guard_roles))
return worklist_list
-
security.declareProtected(Permissions.AccessContentsInformation, 'getWorklistURIList')
def getWorklistURIList(self):
"""
@@ -321,7 +282,6 @@
))
return script_list
-
security.declareProtected(Permissions.AccessContentsInformation, 'getScriptURIList')
def getScriptURIList(self):
"""
@@ -347,7 +307,6 @@
"""
""
-
security.declareProtected(Permissions.AccessContentsInformation, 'getGraphImageData')
def getGraphImageData(self, format='png'):
"""
@@ -355,4 +314,5 @@
"""
return getGraph(self, wf_id=getattr(self.getDocumentedObject(), "__name__", ''), format=format)
+
InitializeClass(DCWorkflowDocumentationHelper)
Modified: erp5/trunk/products/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py?rev=25617&r1=25616&r2=25617&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/DocumentationHelper/DCWorkflowStateDocumentationHelper.py [utf8] Thu Feb 19 04:03:25 2009
@@ -30,7 +30,7 @@
from Globals import InitializeClass
from Products.ERP5Type import Permissions
from DocumentationHelper import DocumentationHelper
-from DCWorkflowDocumentationHelper import getStatePermissionsOfRole
+from DCWorkflowDocumentationHelper import getRoleList
class DCWorkflowStateDocumentationHelper(DocumentationHelper):
"""
@@ -53,43 +53,38 @@
"""
return self.getDocumentedObject().transitions
- def getPermissionsOfRole(self, role):
- return getStatePermissionsOfRole(self.getDocumentedObject(), role)
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionsOfRoleOwner')
- def getPermissionsOfRoleOwner(self):
+ security.declareProtected(Permissions.AccessContentsInformation, 'getRoleList')
+ def getRoleList(self):
"""
"""
- return self.getPermissionsOfRole('Owner')
+ return getRoleList(self.getDocumentedObject().getWorkflow())
- security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionsOfRoleAssignor')
- def getPermissionsOfRoleAssignor(self):
+ security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionsList')
+ def getPermissionsList(self):
"""
"""
- return self.getPermissionsOfRole('Assignor')
+ return map(self.getPermissionsOfRole, self.getRoleList())
- security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionsOfRoleAssignee')
- def getPermissionsOfRoleAssignee(self):
+ 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
"""
- return self.getPermissionsOfRole('Assignee')
+ 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"
+ return permissions
- security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionsOfRoleAssociate')
- def getPermissionsOfRoleAssociate(self):
- """
- """
- return self.getPermissionsOfRole('Associate')
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionsOfRoleAuthor')
- def getPermissionsOfRoleAuthor(self):
- """
- """
- return self.getPermissionsOfRole('Author')
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getPermissionsOfRoleAuditor')
- def getPermissionsOfRoleAuditor(self):
- """
- """
- return self.getPermissionsOfRole('Auditor')
InitializeClass(DCWorkflowStateDocumentationHelper)
Modified: erp5/trunk/products/ERP5Type/DocumentationHelper/DocumentationHelper.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/DocumentationHelper/DocumentationHelper.py?rev=25617&r1=25616&r2=25617&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/DocumentationHelper/DocumentationHelper.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/DocumentationHelper/DocumentationHelper.py [utf8] Thu Feb 19 04:03:25 2009
@@ -26,6 +26,7 @@
#
##############################################################################
+from urllib import quote
from Acquisition import Implicit, aq_base
from AccessControl import ClassSecurityInfo
from Globals import InitializeClass
@@ -117,6 +118,13 @@
# Methods to override
def __init__(self, uri):
self.uri = uri
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getViewUrl')
+ def getViewUrl(self, **kw):
+ """
+ """
+ return 'DocumentationHelper_viewDocumentationHelper?uri=%s&class_name=%s' \
+ % (quote(self.uri), self.__class__.__name__)
security.declareProtected(Permissions.AccessContentsInformation, 'getId')
def getId(self):
More information about the Erp5-report
mailing list