Commit 1b76e57e authored by Mayoro Diagne's avatar Mayoro Diagne

using getattr to get co_varnames; using unrestrictedTraverse instead of...

using getattr to get co_varnames; using unrestrictedTraverse instead of resolveCtagegory to avoid warning in case of unexisting category

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@22052 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 477a2236
...@@ -34,36 +34,38 @@ from Products.ERP5Type import Permissions ...@@ -34,36 +34,38 @@ from Products.ERP5Type import Permissions
#return the definition string of an object representing a workflow method or a class method or an accessor #return the definition string of an object representing a workflow method or a class method or an accessor
def getDefinitionString(obj=None): def getDefinitionString(obj=None):
if obj == None: if obj is None:
return "" return ""
func_code = getattr(obj, "func_code", None)
if func_code is None:
return ""
fc_var_names = getattr(func_code, "co_varnames", [])
fc = []
for i in range(len(fc_var_names)):
if fc_var_names[i] == 'args':
fc.append('*args')
elif fc_var_names[i] == 'kw':
fc.append('**kw')
else:
fc.append(fc_var_names[i])
fd = obj.func_defaults
acc_def = obj.__name__ + ' ('
if fd == None:
acc_def += ', '.join(fc)
else: else:
fc_var_names = obj.func_code.co_varnames for x in range(len(fc)):
fc = [] if (len(fc)-(x+1)<len(fd)):
for i in range(len(fc_var_names)): if (x == len(fc)-1):
if fc_var_names[i] == 'args': acc_def += " "+str(fc[x])+"='"+str(fd[x-len(fd)])+"'"
fc.append('*args') else:
elif fc_var_names[i] == 'kw': acc_def += " "+str(fc[x])+"='"+str(fd[x-len(fd)])+"',"
fc.append('**kw')
else: else:
fc.append(fc_var_names[i]) if (x == len(fc)-1):
fd = obj.func_defaults acc_def += " "+str(fc[x])
acc_def = obj.__name__ + ' ('
if fd == None:
acc_def += ', '.join(fc)
else:
for x in range(len(fc)):
if (len(fc)-(x+1)<len(fd)):
if (x == len(fc)-1):
acc_def += " "+str(fc[x])+"='"+str(fd[x-len(fd)])+"'"
else:
acc_def += " "+str(fc[x])+"='"+str(fd[x-len(fd)])+"',"
else: else:
if (x == len(fc)-1): acc_def += " "+str(fc[x])+","
acc_def += " "+str(fc[x]) acc_def += ")"
else: return acc_def
acc_def += " "+str(fc[x])+","
acc_def += ")"
return acc_def
class AccessorMethodDocumentationHelper(DocumentationHelper): class AccessorMethodDocumentationHelper(DocumentationHelper):
......
...@@ -31,6 +31,7 @@ from AccessControl import ClassSecurityInfo ...@@ -31,6 +31,7 @@ from AccessControl import ClassSecurityInfo
from Globals import InitializeClass from Globals import InitializeClass
from DocumentationHelper import DocumentationHelper from DocumentationHelper import DocumentationHelper
from Products.ERP5Type import Permissions from Products.ERP5Type import Permissions
from zLOG import LOG, INFO
class DCWorkflowPermissionDocumentationHelper(DocumentationHelper): class DCWorkflowPermissionDocumentationHelper(DocumentationHelper):
""" """
...@@ -44,7 +45,8 @@ class DCWorkflowPermissionDocumentationHelper(DocumentationHelper): ...@@ -44,7 +45,8 @@ class DCWorkflowPermissionDocumentationHelper(DocumentationHelper):
security.declareProtected(Permissions.AccessContentsInformation, 'getDescription') security.declareProtected(Permissions.AccessContentsInformation, 'getDescription')
def getDescription(self): def getDescription(self):
return getattr(self.getDocumentedObject(), "description", "") #return getattr(self.getDocumentedObject(), "description", "")
return ""
security.declareProtected(Permissions.AccessContentsInformation, 'getType' ) security.declareProtected(Permissions.AccessContentsInformation, 'getType' )
def getType(self): def getType(self):
......
...@@ -103,8 +103,6 @@ class DocumentationHelper(Implicit): ...@@ -103,8 +103,6 @@ class DocumentationHelper(Implicit):
if self.uri.startswith('portal_classes/temp_instance'): if self.uri.startswith('portal_classes/temp_instance'):
url, method = self.uri.split('#') url, method = self.uri.split('#')
portal_type = url.split('/')[-1] portal_type = url.split('/')[-1]
#temp_folder = self.getPortalObject().portal_classes.newContent(id='temp_instance', portal_type='Folder', temp_object=1)
#temp_object = temp_folder.newContent(id=portal_type, portal_type=portal_type, temp_object=1)
self.getTempInstance = TempObjectLibrary(self.getPortalObject().portal_classes) self.getTempInstance = TempObjectLibrary(self.getPortalObject().portal_classes)
temp_object = self.getTempInstance(portal_type) temp_object = self.getTempInstance(portal_type)
if '/' not in method: if '/' not in method:
...@@ -131,17 +129,14 @@ class DocumentationHelper(Implicit): ...@@ -131,17 +129,14 @@ class DocumentationHelper(Implicit):
elif '/' in self.uri and '#' not in self.uri: elif '/' in self.uri and '#' not in self.uri:
# URI refers to a portal object # URI refers to a portal object
# and is a relative URL # and is a relative URL
try: documented_object = self.getPortalObject().portal_categories.unrestrictedTraverse(self.uri, None)
documented_object = self.getPortalObject().portal_categories.resolveCategory(self.uri)
except:
documented_object = None
if documented_object is None: if documented_object is None:
documented_object = self.getPortalObject().unrestrictedTraverse(self.uri) documented_object = self.getPortalObject().unrestrictedTraverse(self.uri, None)
elif '/' in self.uri and '#' in self.uri: elif '/' in self.uri and '#' in self.uri:
if '?' in self.uri: if '?' in self.uri:
base_url, url = self.uri.split('?') base_url, url = self.uri.split('?')
type, name = url.split('#') type, name = url.split('#')
parent_object = self.getPortalObject().unrestrictedTraverse(base_url) parent_object = self.getPortalObject().unrestrictedTraverse(base_url, None)
object_list = getattr(parent_object, type, None) object_list = getattr(parent_object, type, None)
documented_object = None documented_object = None
if object_list is not None: if object_list is not None:
...@@ -150,9 +145,9 @@ class DocumentationHelper(Implicit): ...@@ -150,9 +145,9 @@ class DocumentationHelper(Implicit):
documented_object = obj documented_object = obj
else: else:
url, method = self.uri.split('#') url, method = self.uri.split('#')
documented_object = self.getPortalObject().unrestrictedTraverse(url) documented_object = self.getPortalObject().unrestrictedTraverse(url, None)
if '/' not in method: if '/' not in method:
documented_object = self.getPortalObject().unrestrictedTraverse(url) documented_object = self.getPortalObject().unrestrictedTraverse(url, None)
documented_object = getattr(documented_object, method, None) documented_object = getattr(documented_object, method, None)
else: else:
path_method = method.split('/') path_method = method.split('/')
...@@ -169,7 +164,7 @@ class DocumentationHelper(Implicit): ...@@ -169,7 +164,7 @@ class DocumentationHelper(Implicit):
import Products import Products
documented_object = Products documented_object = Products
for key in module_list[1:]: for key in module_list[1:]:
documented_object = getattr(documented_object, key) documented_object = getattr(documented_object, key, None)
else: else:
raise NotImplemented raise NotImplemented
#fp, pathname, description = imp.find_module(base_module) #fp, pathname, description = imp.find_module(base_module)
......
...@@ -62,7 +62,7 @@ class PortalTypePropertySheetDocumentationHelper(DocumentationHelper): ...@@ -62,7 +62,7 @@ class PortalTypePropertySheetDocumentationHelper(DocumentationHelper):
""" """
Returns the title of the documentation helper Returns the title of the documentation helper
""" """
return getattr(self.etDocumentedObject(), "name", '') return getattr(self.getDocumentedObject(), "name", '')
security.declareProtected( Permissions.AccessContentsInformation, 'getSourceCode' ) security.declareProtected( Permissions.AccessContentsInformation, 'getSourceCode' )
def getSourceCode(self): def getSourceCode(self):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment