From 5c756569011cfe19903132b97e1b78dbd4f41e7f Mon Sep 17 00:00:00 2001 From: Tatuya Kamada <tatuya@nexedi.com> Date: Mon, 5 Jul 2010 08:00:37 +0000 Subject: [PATCH] Revert it. Because it causes an error when runUnitTest.py with --save option. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@36843 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Document/BusinessTemplate.py | 77 ++--------------------- 1 file changed, 6 insertions(+), 71 deletions(-) diff --git a/product/ERP5/Document/BusinessTemplate.py b/product/ERP5/Document/BusinessTemplate.py index ab90069a71b..876b9a8faf7 100644 --- a/product/ERP5/Document/BusinessTemplate.py +++ b/product/ERP5/Document/BusinessTemplate.py @@ -32,7 +32,7 @@ from Shared.DC.ZRDB.Connection import Connection as RDBConnection from Products.ERP5Type.DiffUtils import DiffFile from Products.ERP5Type.Globals import Persistent, PersistentMapping from Acquisition import Implicit, aq_base, aq_inner, aq_parent -from AccessControl import ClassSecurityInfo, Unauthorized, getSecurityManager +from AccessControl import ClassSecurityInfo from Products.CMFCore.utils import getToolByName from Products.ERP5Type.Accessor.Constant import PropertyGetter as ConstantGetter from Products.ERP5Type.Base import WorkflowMethod, _aq_reset @@ -613,71 +613,6 @@ class BaseTemplateItem(Implicit, Persistent): """ return self.__class__.__name__[:-12] - def restrictedResolveValue(self, context=None, relative_url=None, default=None): - """ - Get the value with checking the security. - This method does not acquire the parent. - """ - def restrictedGetOb(container, key, default): - validate = getSecurityManager().validate - obj = container._getOb(key, None) - if obj is not None: - try: - if not validate(container, container, key, obj): - raise Unauthorized('unauthorized access to element %s' % key) - except Unauthorized: - # if user can't access object try to return default passed - if default is not None: - return default - else: - raise - return obj - return self._resolveValue(context, relative_url, default, getOb=restrictedGetOb) - - def unrestrictedResolveValue(self, context=None, relative_url=None, default=None): - """ - Get the value without checking the security. - This method does not acquire the parent. - """ - def unrestrictedGetOb(container, key, default): - return container._getOb(key, None) - return self._resolveValue(context, relative_url, default, getOb=unrestrictedGetOb) - - def _resolveValue(self, context, relative_url, default, getOb=None): - """ - Resolve the value without acquire the parent. - """ - if isinstance(relative_url, basestring): - stack = relative_url.split('/') - else: - stack = list(relative_url) - stack.reverse() - value = None - if stack: - portal = aq_inner(self.getPortalObject()) - # It can be passed with the context, so at first, searching from the context. - if context is None: - container = portal - else: - container = context - key = stack.pop() - value = getOb(container, key, default) - - # resolve the value from top to down - while value is not None and stack: - key = stack.pop() - value = value._getOb(key, default) - else: - # When relative_url is empty, returns the context - return context - - if value is None: - LOG('BusinessTemplate', WARNING, - 'Could not access object %s' % relative_url) - - return value - - class ObjectTemplateItem(BaseTemplateItem): """ This class is used for generic objects and as a subclass. @@ -998,7 +933,7 @@ class ObjectTemplateItem(BaseTemplateItem): container_path = path_list[:-1] object_id = path_list[-1] try: - container = self.unrestrictedResolveValue(portal, container_path) + container = portal.unrestrictedTraverse(container_path) except KeyError: # parent object can be set to nothing, in this case just go on container_url = '/'.join(container_path) @@ -1227,7 +1162,7 @@ class ObjectTemplateItem(BaseTemplateItem): if recursive_path in update_dict: action = update_dict[recursive_path] if action in ('remove', 'save_and_remove'): - document = self.restrictedResolveValue(portal, recursive_path, None) + document = portal.restrictedTraverse(recursive_path, None) if document is None: # It happens if the parent of target path is removed before continue @@ -1277,7 +1212,7 @@ class ObjectTemplateItem(BaseTemplateItem): container_path = relative_url.split('/')[0:-1] object_id = relative_url.split('/')[-1] try: - container = self.unrestrictedResolveValue(portal, container_path) + container = portal.unrestrictedTraverse(container_path) object = container._getOb(object_id) # We force access to the object to be sure # that appropriate exception is thrown # in case object is already backup and/or removed @@ -1335,7 +1270,7 @@ class PathTemplateItem(ObjectTemplateItem): try: container_path = relative_url.split('/')[0:-1] object_id = relative_url.split('/')[-1] - container = self.unrestrictedResolveValue(portal, container_path) + container = portal.unrestrictedTraverse(container_path) if trash and trashbin is not None: self.portal_trash.backupObject(trashbin, container_path, object_id, save=1, @@ -1822,7 +1757,7 @@ class WorkflowTemplateItem(ObjectTemplateItem): container_path = path.split('/')[:-1] object_id = path.split('/')[-1] try: - container = self.unrestrictedResolveValue(portal, container_path) + container = portal.unrestrictedTraverse(container_path) except KeyError: # parent object can be set to nothing, in this case just go on container_url = '/'.join(container_path) -- 2.30.9