[Erp5-report] r18600 - /erp5/trunk/products/ERP5Type/DocumentationHelper.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Sat Jan 5 17:14:19 CET 2008
Author: jp
Date: Sat Jan 5 17:14:18 2008
New Revision: 18600
URL: http://svn.erp5.org?rev=18600&view=rev
Log:
Experimental code by baye
Modified:
erp5/trunk/products/ERP5Type/DocumentationHelper.py
Modified: erp5/trunk/products/ERP5Type/DocumentationHelper.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/DocumentationHelper.py?rev=18600&r1=18599&r2=18600&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/DocumentationHelper.py (original)
+++ erp5/trunk/products/ERP5Type/DocumentationHelper.py Sat Jan 5 17:14:18 2008
@@ -1,6 +1,8 @@
from Acquisition import Implicit
from AccessControl import ClassSecurityInfo
from Globals import InitializeClass
+
+from Products.CMFCore.utils import getToolByName
from Products.ERP5Type.Accessor.Accessor import Accessor
from Products.ERP5Type.Base import WorkflowMethod
@@ -52,17 +54,24 @@
self.uri = uri
def getDocumentedObject(self):
- from zLOG import LOG
- if '/' in self.uri:
+ if '/' in self.uri and '#' not in self.uri:
# URI refers to a portal object
# and is a relative URL
- documented_object = self.getPortalObject().portal_categories.resolveCategory(uri)
+ documented_object = self.getPortalObject().portal_categories.resolveCategory(self.uri)
+ elif '/' in self.uri and '#' in self.uri:
+ url, method = self.uri.split('#')
+ # if / in method, method's not an acessor but a workflow method
+ documented_object = self.getPortalObject().unrestrictedTraverse(url)
+ if '/' not in method:
+ documented_object = self.getPortalObject().unrestrictedTraverse(url)
+ documented_object = getattr(documented_object, method, None)
+ else:
+ wf_url = 'portal_workflow/%s' % method
+ documented_object = self.getPortalObject().unrestrictedTraverse(wf_url)
else:
# URI refers to a python class / method
import imp
module_list = self.uri.split('.')
- LOG('module_list', 0, repr(module_list))
- LOG('uri', 0, repr(self.uri))
base_module = module_list[0]
if base_module == 'Products':
# For now, we do not even try to import
@@ -74,10 +83,9 @@
documented_object = getattr(documented_object, key)
else:
raise NotImplemented
- # fp, pathname, description = imp.find_module(base_module)
- # documented_object = imp.load_module(fp, pathname, description)
-
- LOG('documented_object', 0, repr(documented_object))
+ #fp, pathname, description = imp.find_module(base_module)
+ #documented_object = imp.load_module(fp, pathname, description)
+
return documented_object
def getTitle(self):
@@ -141,10 +149,10 @@
security.declareObjectProtected(Permissions.AccessContentsInformation)
def __init__(self, uri):
- self.instance_uri = uri
+ self.uri = uri
def getInstance(self):
- return self.getPortalObject().restrictedTraverse(self.instance_uri)
+ return self.getPortalObject().restrictedTraverse(self.uri)
# API Implementation
security.declareProtected( Permissions.AccessContentsInformation, 'getTitle' )
@@ -173,12 +181,18 @@
#class_name='InstancePropertyDocumentationHelper',
#uri_list=self.getClassPropertyURIList(),
#),
- #DocumentationSection(
- #id='accessor',
- #title='Accessors',
- #class_name='AccessorDocumentationHelper',
- #uri_list=self.getClassPropertyURIList(),
- #),
+ DocumentationSection(
+ id='workflow_method',
+ title='Workflow Method',
+ class_name='WorkflowMethodDocumentationHelper',
+ uri_list=self.getWorkflowMethodURIList(inherited=0),
+ ),
+ DocumentationSection(
+ id='accessor',
+ title='Accessor',
+ class_name='AccessorMethodDocumentationHelper',
+ uri_list=self.getAccessorMethodURIList(inherited=0),
+ ),
DocumentationSection(
id='class_method',
title='Class Methods',
@@ -210,19 +224,49 @@
"""
return self._getPropertyHolder().getAccessorMethodIdList()
- security.declareProtected( Permissions.AccessContentsInformation, 'getWorkflowMethodItemList' )
+ security.declareProtected( Permissions.AccessContentsInformation, 'getAccessorMethodURIList' )
+ def getAccessorMethodURIList(self, inherited=1, local=1):
+ """
+ Returns a list of URIs to accessor methods
+ """
+ method_id_list = self.getAccessorMethodIdList(inherited=inherited, local=local)
+ klass = self.getInstance().__class__
+ class_name = klass.__name__
+ module = klass.__module__
+ uri_prefix = '%s.%s.' % (module, class_name)
+ return map(lambda x: '%s%s' % (uri_prefix, x), method_id_list)
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getWorkflowMethodItemList' )
def getWorkflowMethodItemList(self):
"""
"""
return self._getPropertyHolder().getWorkflowMethodItemList()
- security.declareProtected( Permissions.AccessContentsInformation, 'getWorkflowMethodIdList' )
+ security.declareProtected(Permissions.AccessContentsInformation, 'getWorkflowObject' )
+ def getWorkflowObject(self):
+ """
+ """
+ return self._getPropertyHolder()
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getWorkflowMethodIdList' )
def getWorkflowMethodIdList(self):
"""
"""
- return self._getPropertyHolder().getWorkflowMethodIdList()
-
- security.declareProtected( Permissions.AccessContentsInformation, 'getActionMethodItemList' )
+ return self._getPropertyHolder().getWorkflowMethodIdList()
+
+ def getWorkflowMethodURIList(self, inherited=1, local=1):
+ """
+ Returns a list of URIs to workflow methods
+ """
+ method_id_list = self.getWorkflowMethodIdList(inherited=inherited, local=local)
+ klass = self.getInstance().__class__
+ class_name = klass.__name__
+ module = klass.__module__
+ uri_prefix = '%s.%s.' % (module, class_name)
+ return map(lambda x: '%s%s' % (uri_prefix, x), method_id_list)
+
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getActionMethodItemList' )
def getActionMethodItemList(self):
"""
"""
@@ -302,6 +346,14 @@
"""
"""
+class AccessorDocumentationHelper(DocumentationHelper):
+ """
+ """
+class WorkflowDocumentationHelper(DocumentationHelper):
+ """
+ """
+
+
class ClassMethodDocumentationHelper(DocumentationHelper):
"""
Provides documentation about a class method
@@ -327,9 +379,53 @@
"""
return self.getDocumentedObject().__name__
-
InitializeClass(ClassMethodDocumentationHelper)
+class AccessorMethodDocumentationHelper(DocumentationHelper):
+ """
+ Provides documentation about an accessor
+ """
+ security = ClassSecurityInfo()
+ security.declareObjectProtected(Permissions.AccessContentsInformation)
+
+ def __init__(self, uri):
+ self.uri = uri
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getDescription')
+ def getDescription(self):
+ return self.getDocumentedObject().__doc__
+
+ security.declareProtected( Permissions.AccessContentsInformation, 'getType' )
+ def getType(self):
+ """
+ Returns the type of the documentation helper
+ """
+ return self.getDocumentedObject().func_code.__module__
+
+ security.declareProtected( Permissions.AccessContentsInformation, 'getTitle' )
+ def getTitle(self):
+ """
+ Returns the title of the documentation helper
+ """
+ return self.getDocumentedObject().__name__
+
+ security.declareProtected( Permissions.AccessContentsInformation, 'getArgCount' )
+ def getArgCount(self):
+ """
+ Returns the number of args of the accessor
+ """
+ return self.getDocumentedObject().func_code.co_argcount
+
+ security.declareProtected( Permissions.AccessContentsInformation, 'getVarNames' )
+ def getVarNames(self):
+ """
+ Returns the list of args of the accessor
+ """
+ return self.getDocumentedObject().func_code.co_varnames
+
+
+InitializeClass(AccessorMethodDocumentationHelper)
+
class CallableDocumentationHelper(DocumentationHelper):
"""
"""
@@ -342,10 +438,65 @@
"""
"""
-class WorkflowDocumentationHelper(DocumentationHelper):
- """
- """
-
+class WorkflowMethodDocumentationHelper(DocumentationHelper):
+ """
+ Provides documentation about a workflow method
+ """
+ security = ClassSecurityInfo()
+ security.declareObjectProtected(Permissions.AccessContentsInformation)
+
+ def __init__(self, uri):
+ self.uri = uri
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getDescription')
+ def getDescription(self):
+ return self.getDocumentedObject().__dict__['description']
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getType' )
+ def getType(self):
+ """
+ Returns the type of the documentation helper
+ """
+ return self.getDocumentedObject().__module__
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getTitle' )
+ def getTitle(self):
+ """
+ Returns the title of the documentation helper
+ """
+ return self.getDocumentedObject().__dict__['title']
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getDestinationState' )
+ def getDestinationState(self):
+ """
+ Returns the destination_state of the transition workflow method
+ """
+ return self.getDocumentedObject().__dict__['new_state_id']
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getTriggerType' )
+ def getTriggerType(self):
+ """
+ Returns the trigger type of the workflow method
+ """
+ TT = ['Automatic','Initiated by user action','Initiated by WorkflowMethod']
+ TT_id = self.getDocumentedObject().__dict__['trigger_type']
+ return TT[TT_id]
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getLocalRoles' )
+ def getLocalRoles(self):
+ """
+ Returns the local roles of the workflow method
+ """
+ return self.getDocumentedObject().__ac_local_roles__
+
+ security.declareProtected(Permissions.AccessContentsInformation, 'getAvailableStateIds' )
+ def getAvailableStateIds(self):
+ """
+ Returns available states in the workflow
+ """
+ return self.getDocumentedObject().getAvailableStateIds()
+
+InitializeClass(WorkflowMethodDocumentationHelper)
if 0:
More information about the Erp5-report
mailing list