[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ - converted two more tools

Yvo Schubbe y.2011 at wcm-solutions.de
Wed Sep 14 07:30:41 EST 2011


Log message for revision 122804:
  - converted two more tools

Changed:
  U   Products.CMFCore/trunk/Products/CMFCore/ActionInformation.py
  UU  Products.CMFCore/trunk/Products/CMFCore/ActionsTool.py
  U   Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
  U   Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py
  UU  Products.CMFCore/trunk/Products/CMFCore/DynamicType.py
  U   Products.CMFCore/trunk/Products/CMFCore/Expression.py
  U   Products.CMFCore/trunk/Products/CMFCore/SkinsTool.py
  UU  Products.CMFCore/trunk/Products/CMFCore/URLTool.py
  UU  Products.CMFCore/trunk/Products/CMFCore/exportimport/actions.py
  U   Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_actions.py
  U   Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py
  U   Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionsTool.py
  U   Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py

-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/ActionInformation.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/ActionInformation.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/ActionInformation.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -23,6 +23,7 @@
 from OFS.PropertyManager import PropertyManager
 from OFS.SimpleItem import SimpleItem
 from zope.component import getUtility
+from zope.globalrequest import getRequest
 from zope.i18nmessageid import Message
 from zope.interface import implements
 
@@ -33,7 +34,6 @@
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.permissions import View
 from Products.CMFCore.utils import _checkPermission
-from Products.CMFCore.utils import getToolByName
 
 _unchanged = [] # marker
 
@@ -536,7 +536,7 @@
 
 
 def getOAI(context, object=None):
-    request = getattr(context, 'REQUEST', None)
+    request = getRequest()
     if request:
         cache = request.get('_oai_cache', None)
         if cache is None:

Modified: Products.CMFCore/trunk/Products/CMFCore/ActionsTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/ActionsTool.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/ActionsTool.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -11,8 +11,6 @@
 #
 ##############################################################################
 """ Basic action list tool.
-
-$Id$
 """
 
 from warnings import warn
@@ -30,6 +28,8 @@
 from Products.CMFCore.interfaces import IActionsTool
 from Products.CMFCore.permissions import ManagePortal
 from Products.CMFCore.utils import _dtmldir
+from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import registerToolInterface
 from Products.CMFCore.utils import UniqueObject
 
 
@@ -40,8 +40,6 @@
         Weave together the various sources of "actions" which are apropos
         to the current user and context.
     """
-    # XXX: this class violates the rules for tools/utilities:
-    # ActionProviderBase depends implicitly on REQUEST
 
     implements(IActionsTool)
 
@@ -134,13 +132,15 @@
         return self.action_providers
 
     security.declareProtected(ManagePortal, 'addActionProvider')
-    def addActionProvider( self, provider_name ):
+    def addActionProvider(self, provider_name):
         """ Add an Action Provider id to the providers queried by this tool.
         """
-        ap = list( self.action_providers )
-        if hasattr( self, provider_name ) and provider_name not in ap:
-            ap.append( provider_name )
-            self.action_providers = tuple( ap )
+        if getToolByName(self, provider_name, None) is None:
+            return
+        ap = list(self.action_providers)
+        if provider_name not in ap:
+            ap.append(provider_name)
+            self.action_providers = tuple(ap)
 
     security.declareProtected(ManagePortal, 'deleteActionProvider')
     def deleteActionProvider( self, provider_name ):
@@ -162,7 +162,7 @@
 
         # Include actions from specific tools.
         for provider_name in self.listActionProviders():
-            provider = getattr(self, provider_name)
+            provider = getToolByName(self, provider_name)
             if IActionProvider.providedBy(provider):
                 actions.extend( provider.listActionInfos(object=object) )
 
@@ -186,3 +186,4 @@
         return filtered_actions
 
 InitializeClass(ActionsTool)
+registerToolInterface('portal_actions', IActionsTool)


Property changes on: Products.CMFCore/trunk/Products/CMFCore/ActionsTool.py
___________________________________________________________________
Deleted: svn:keywords
   - Author Date Id Revision

Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt	2011-09-14 12:30:40 UTC (rev 122804)
@@ -5,8 +5,8 @@
 ------------------------
 
 - tools: Converted several tools into utilities.
-  CookieCrumbler, MemberDataTool, MembershipTool and RegistrationTool are now
-  local utilities.
+  ActionsTool, CookieCrumbler, MemberDataTool, MembershipTool, RegistrationTool
+  and URLTool are now local utilities.
 
 - MemberDataTool: Changed property modes to 'w' and added 'fullname' property.
 

Modified: Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -26,15 +26,15 @@
 from OFS.interfaces import IObjectWillBeMovedEvent
 from OFS.PropertyManager import PropertyManager
 from OFS.SimpleItem import SimpleItem
+from zope.component import getUtility
 from zope.container.interfaces import IObjectMovedEvent
 from zope.globalrequest import getRequest
 from zope.interface import implements
 from ZPublisher import BeforeTraverse
-from ZPublisher.BaseRequest import RequestContainer
 from ZPublisher.HTTPRequest import HTTPRequest
 
+from Products.CMFCore.interfaces import IActionsTool
 from Products.CMFCore.interfaces import ICookieCrumbler
-from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.utils import registerToolInterface
 from Products.CMFCore.utils import UniqueObject
 
@@ -281,9 +281,7 @@
         target = None
         if response is None:
             response = getRequest()['RESPONSE'] # BBB for App.Management
-            request_container = RequestContainer(REQUEST=getRequest())
-            rich_context = self.__of__(request_container)
-            atool = getToolByName(rich_context, 'portal_actions')
+            atool = getUtility(IActionsTool)
             target = atool.getActionInfo('user/logout')['url']
         method = self.getCookieMethod('expireAuthCookie',
                                        self.defaultExpireAuthCookie)

Modified: Products.CMFCore/trunk/Products/CMFCore/DynamicType.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/DynamicType.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/DynamicType.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -11,18 +11,18 @@
 #
 ##############################################################################
 """ DynamicType: Mixin for dynamic properties.
-
-$Id$
 """
 
 from AccessControl.SecurityInfo import ClassSecurityInfo
 from App.class_init import InitializeClass
-from zope.publisher.defaultview import queryDefaultViewName
+from zope.component import getUtility
 from zope.component import queryMultiAdapter
 from zope.interface import implements
+from zope.publisher.defaultview import queryDefaultViewName
 
 from Products.CMFCore.Expression import getExprContext
 from Products.CMFCore.interfaces import IDynamicType
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.utils import getToolByName
 
 
@@ -91,7 +91,7 @@
         """
         ti = self.getTypeInfo()
         if ti is None:
-            utool = getToolByName(self, 'portal_url')
+            utool = getUtility(IURLTool)
             return '%s/misc_/OFSP/dtmldoc.gif' % utool()
         icon_expr_object = ti.getIconExprObject()
         if icon_expr_object is None:
@@ -109,7 +109,7 @@
         creator to grab icons on the fly instead of using a fixed
         attribute on the class.
         """
-        utool = getToolByName(self, 'portal_url')
+        utool = getUtility(IURLTool)
         portal_url = utool()
         icon = self.getIconURL()
         if icon.startswith(portal_url):


Property changes on: Products.CMFCore/trunk/Products/CMFCore/DynamicType.py
___________________________________________________________________
Deleted: svn:keywords
   - Author Date Id Revision

Modified: Products.CMFCore/trunk/Products/CMFCore/Expression.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/Expression.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/Expression.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -15,6 +15,7 @@
 
 from AccessControl.SecurityInfo import ClassSecurityInfo
 from Acquisition import aq_base
+from Acquisition import aq_get
 from Acquisition import aq_inner
 from Acquisition import aq_parent
 from App.class_init import InitializeClass
@@ -23,9 +24,10 @@
 from Products.PageTemplates.Expressions import SecureModuleImporter
 from zope.component import getUtility
 from zope.component.interfaces import ComponentLookupError
+from zope.globalrequest import getRequest
 
 from Products.CMFCore.interfaces import IMembershipTool
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.interfaces import IURLTool
 
 
 class Expression(Persistent):
@@ -57,7 +59,7 @@
 
 
 def getExprContext(context, object=None):
-    request = getattr(context, 'REQUEST', None)
+    request = getRequest()
     if request:
         cache = request.get('_ec_cache', None)
         if cache is None:
@@ -66,7 +68,11 @@
     else:
         ec = None
     if ec is None:
-        utool = getToolByName(context, 'portal_url')
+        try:
+            utool = getUtility(IURLTool)
+        except ComponentLookupError:
+            # BBB: fallback for CMF 2.2 instances
+            utool = aq_get(context, 'portal_url')
         portal = utool.getPortalObject()
         if object is None or not hasattr(object, 'aq_base'):
             folder = portal
@@ -94,7 +100,7 @@
         mtool = getUtility(IMembershipTool)
     except ComponentLookupError:
         # BBB: fallback for CMF 2.2 instances
-        mtool = getToolByName(portal, 'portal_membership')
+        mtool = aq_get(portal, 'portal_membership')
     if object is None:
         object_url = ''
     else:

Modified: Products.CMFCore/trunk/Products/CMFCore/SkinsTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/SkinsTool.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/SkinsTool.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -36,12 +36,12 @@
 from Products.CMFCore.DirectoryView import ignore_re
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import ISkinsTool
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.permissions import AccessContentsInformation
 from Products.CMFCore.permissions import ManagePortal
 from Products.CMFCore.permissions import View
 from Products.CMFCore.SkinsContainer import SkinsContainer
 from Products.CMFCore.utils import _dtmldir
-from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.utils import UniqueObject
 
 def modifiedOptions():
@@ -305,9 +305,8 @@
         """ If needed, updates the skin cookie based on the member preference.
         """
         # XXX: this method violates the rules for tools/utilities:
-        # it depends on a non-utility tool and uses self.REQUEST
+        # it uses self.REQUEST
         mtool = getUtility(IMembershipTool)
-        utool = getToolByName(self, 'portal_url')
         member = mtool.getAuthenticatedMember()
         if hasattr(aq_base(member), 'getProperty'):
             mskin = member.getProperty('portal_skin')
@@ -316,6 +315,7 @@
                 cookie = req.cookies.get(self.request_varname, None)
                 if cookie != mskin:
                     resp = req.RESPONSE
+                    utool = getUtility(IURLTool)
                     portal_path = req['BASEPATH1'] + '/' + utool(1)
 
                     if not self.cookie_persistence:
@@ -341,10 +341,10 @@
         """ Expire the skin cookie.
         """
         # XXX: this method violates the rules for tools/utilities:
-        # it depends on a non-utility tool and uses self.REQUEST
+        # it uses self.REQUEST
         req = self.REQUEST
         resp = req.RESPONSE
-        utool = getToolByName(self, 'portal_url')
+        utool = getUtility(IURLTool)
         portal_path = req['BASEPATH1'] + '/' + utool(1)
         resp.expireCookie(self.request_varname, path=portal_path)
 

Modified: Products.CMFCore/trunk/Products/CMFCore/URLTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/URLTool.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/URLTool.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -11,23 +11,24 @@
 #
 ##############################################################################
 """ CMFCore portal_url tool.
-
-$Id$
 """
 
 from AccessControl.SecurityInfo import ClassSecurityInfo
-from Acquisition import aq_inner
-from Acquisition import aq_parent
 from App.class_init import InitializeClass
 from App.special_dtml import DTMLFile
 from OFS.SimpleItem import SimpleItem
+from zope.component import getUtility
+from zope.globalrequest import getRequest
 from zope.interface import implements
+from ZPublisher.BaseRequest import RequestContainer
 
 from Products.CMFCore.ActionProviderBase import ActionProviderBase
+from Products.CMFCore.interfaces import ISiteRoot
 from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.permissions import ManagePortal
 from Products.CMFCore.permissions import View
 from Products.CMFCore.utils import _dtmldir
+from Products.CMFCore.utils import registerToolInterface
 from Products.CMFCore.utils import UniqueObject
 
 
@@ -65,17 +66,14 @@
     def __call__(self, relative=0, *args, **kw):
         """ Get by default the absolute URL of the portal.
         """
-        # XXX: this method violates the rules for tools/utilities:
-        # absolute_url() depends implicitly on REQUEST
         return self.getPortalObject().absolute_url(relative=relative)
 
     security.declarePublic('getPortalObject')
     def getPortalObject(self):
         """ Get the portal object itself.
         """
-        # XXX: this method violates the rules for tools/utilities:
-        # queryUtility(ISiteRoot) doesn't work because we need the REQUEST
-        return aq_parent( aq_inner(self) )
+        request_container = RequestContainer(REQUEST=getRequest())
+        return getUtility(ISiteRoot).__of__(request_container)
 
     security.declarePublic('getRelativeContentPath')
     def getRelativeContentPath(self, content):
@@ -101,3 +99,4 @@
         return '/'.join( self.getPortalObject().getPhysicalPath() )
 
 InitializeClass(URLTool)
+registerToolInterface('portal_url', IURLTool)


Property changes on: Products.CMFCore/trunk/Products/CMFCore/URLTool.py
___________________________________________________________________
Deleted: svn:keywords
   - Author Date Id Revision

Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/actions.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/actions.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/actions.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -11,11 +11,10 @@
 #
 ##############################################################################
 """Actions tool node adapters.
-
-$Id$
 """
 
 from zope.component import adapts
+from zope.component import getSiteManager
 
 from Products.GenericSetup.interfaces import ISetupEnviron
 from Products.GenericSetup.utils import exportObjects
@@ -259,8 +258,8 @@
 def importActionProviders(context):
     """Import actions tool.
     """
-    site = context.getSite()
-    tool = getToolByName(site, 'portal_actions', None)
+    sm = getSiteManager(context.getSite())
+    tool = sm.queryUtility(IActionsTool)
     if tool is None:
         logger = context.getLogger('actions')
         logger.debug('Nothing to import.')
@@ -271,8 +270,8 @@
 def exportActionProviders(context):
     """Export actions tool.
     """
-    site = context.getSite()
-    tool = getToolByName(site, 'portal_actions', None)
+    sm = getSiteManager(context.getSite())
+    tool = sm.queryUtility(IActionsTool)
     if tool is None:
         logger = context.getLogger('actions')
         logger.debug('Nothing to export.')


Property changes on: Products.CMFCore/trunk/Products/CMFCore/exportimport/actions.py
___________________________________________________________________
Deleted: svn:keywords
   - Id

Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_actions.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_actions.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_actions.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -19,6 +19,7 @@
 from Acquisition import aq_parent
 from Acquisition import Implicit
 from OFS.OrderedFolder import OrderedFolder
+from zope.component import getSiteManager
 from zope.interface import implements
 
 from Products.CMFCore.ActionProviderBase import ActionProviderBase
@@ -345,10 +346,9 @@
     def setUp(self):
         from Products.CMFCore.ActionsTool import ActionsTool
 
-        site = DummySite('site')
-        site._setObject('portal_actions', ActionsTool('portal_actions'))
-        self._obj = site.portal_actions
+        self._obj = ActionsTool('portal_actions')
         self._BODY = _ACTIONSTOOL_BODY
+        getSiteManager().registerUtility(self._obj, IActionsTool)
 
 
 class _ActionSetup(BaseRegistryTests):
@@ -358,8 +358,9 @@
         site = self.root.site
         site.portal_membership = DummyMembershipTool()
 
-        site.portal_actions = DummyActionsTool()
-        site.portal_actions.addActionProvider('portal_actions')
+        self.atool = DummyActionsTool()
+        getSiteManager().registerUtility(self.atool, IActionsTool)
+        self.atool.addActionProvider('portal_actions')
 
         if foo > 0:
             site.portal_foo = DummyTool()
@@ -372,7 +373,7 @@
                                       permission=(),
                                       category='dummy',
                                       visible=1)
-            site.portal_actions.addActionProvider('portal_foo')
+            self.atool.addActionProvider('portal_foo')
 
         if bar > 0:
             site.portal_bar = DummyTool()
@@ -385,7 +386,7 @@
                                       permission=('Manage portal',),
                                       category='dummy',
                                       visible=0)
-            site.portal_actions.addActionProvider('portal_bar')
+            self.atool.addActionProvider('portal_bar')
 
         return site
 
@@ -414,13 +415,13 @@
 
         site = self._initSite()
         # Set up an old action for added difficulty
-        site.portal_actions.addAction(id='baz',
-                                      name='Baz',
-                                      action='baz',
-                                      condition='python:1',
-                                      permission=(),
-                                      category='dummy',
-                                      visible=1)
+        self.atool.addAction(id='baz',
+                             name='Baz',
+                             action='baz',
+                             condition='python:1',
+                             permission=(),
+                             category='dummy',
+                             visible=1)
 
         context = DummyExportContext(site)
         exportActionProviders(context)
@@ -441,7 +442,7 @@
                 import importActionProviders
 
         site = self._initSite(2, 0)
-        atool = site.portal_actions
+        atool = self.atool
 
         self.assertEqual(len(atool.listActionProviders()), 2)
         self.failUnless('portal_foo' in atool.listActionProviders())
@@ -461,7 +462,7 @@
                 import importActionProviders
 
         site = self._initSite(2, 0)
-        atool = site.portal_actions
+        atool = self.atool
 
         self.assertEqual(len(atool.listActionProviders()), 2)
         self.failUnless('portal_foo' in atool.listActionProviders())
@@ -481,7 +482,7 @@
                 import importActionProviders
 
         site = self._initSite(2, 0)
-        atool = site.portal_actions
+        atool = self.atool
 
         self.assertEqual(len(atool.listActionProviders()), 2)
         self.failUnless('portal_foo' in atool.listActionProviders())
@@ -502,7 +503,7 @@
                 import importActionProviders
 
         site = self._initSite(1, 1)
-        atool = site.portal_actions
+        atool = self.atool
         foo = site.portal_foo
         bar = site.portal_bar
 
@@ -549,7 +550,7 @@
                 import importActionProviders
 
         site = self._initSite(0, 0)
-        atool = site.portal_actions
+        atool = self.atool
 
         context = DummyImportContext(site)
         context._files['actions.xml'] = _I18N_IMPORT
@@ -575,7 +576,7 @@
                 import importActionProviders
 
         site = self._initSite(0, 0)
-        atool = site.portal_actions
+        atool = self.atool
 
         context = DummyImportContext(site)
         context._files['actions.xml'] = _NEWSYTLE_EXPORT
@@ -600,7 +601,7 @@
                 import importActionProviders
 
         site = self._initSite(2, 2)
-        atool = site.portal_actions
+        atool = self.atool
 
         self.assertEqual(atool.listActionProviders(),
                           ['portal_actions', 'portal_foo', 'portal_bar'])

Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -21,6 +21,7 @@
 from zope.testing.cleanup import cleanUp
 
 from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.tests.base.dummy import DummySite
 from Products.CMFCore.tests.base.dummy import DummyTool
 from Products.CMFCore.tests.base.testcase import SecurityTest
@@ -67,8 +68,9 @@
         self._trap_warning_output()
         SecurityTest.setUp(self)
         self.site = DummySite('site').__of__(self.root)
-        self.site._setObject('portal_url', DummyTool())
-        getSiteManager().registerUtility(DummyTool(), IMembershipTool)
+        sm = getSiteManager()
+        sm.registerUtility(DummyTool(), IMembershipTool)
+        sm.registerUtility(DummyTool().__of__(self.site), IURLTool)
 
     def tearDown(self):
         cleanUp()

Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionsTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionsTool.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionsTool.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -27,6 +27,7 @@
 from Products.CMFCore.Expression import Expression
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import ISiteRoot
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.MembershipTool import MembershipTool
 from Products.CMFCore.tests.base.security import OmnipotentUser
 from Products.CMFCore.tests.base.testcase import SecurityTest
@@ -126,16 +127,17 @@
         return self._getTargetClass()(*args, **kw)
 
     def setUp(self):
+        from Products.CMFCore.interfaces import IActionsTool
+
         SecurityTest.setUp(self)
-
+        self.tool = self._makeOne()
+        self.tool.action_providers = ('portal_actions',)
+        self.app._setObject('foo', URLTool())
         sm = getSiteManager()
+        sm.registerUtility(self.tool, IActionsTool)
+        sm.registerUtility(MembershipTool(), IMembershipTool)
         sm.registerUtility(self.app, ISiteRoot)
-        self.app._setObject('portal_actions', self._makeOne())
-        self.app._setObject('portal_url', URLTool())
-        self.app._setObject('foo', URLTool())
-        sm.registerUtility(MembershipTool(), IMembershipTool)
-        self.tool = self.app.portal_actions
-        self.tool.action_providers = ('portal_actions',)
+        sm.registerUtility(URLTool(), IURLTool)
 
     def tearDown(self):
         cleanUp()

Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py	2011-09-14 08:46:37 UTC (rev 122803)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py	2011-09-14 12:30:40 UTC (rev 122804)
@@ -36,6 +36,7 @@
 
 from Products.CMFCore.DynamicType import DynamicType
 from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.tests.base.dummy import DummyObject
 from Products.CMFCore.tests.base.dummy import DummySite
 from Products.CMFCore.tests.base.dummy import DummyTool
@@ -153,9 +154,10 @@
     def setUp(self):
         SecurityTest.setUp(self)
         self.site = DummySite('site').__of__(self.root)
-        getSiteManager().registerUtility(DummyTool(), IMembershipTool)
+        sm = getSiteManager()
+        sm.registerUtility(DummyTool(), IMembershipTool)
+        sm.registerUtility(DummyTool().__of__(self.site), IURLTool)
         self.site._setObject( 'portal_types', TypesTool() )
-        self.site._setObject( 'portal_url', DummyTool() )
         fti = FTIDATA_CMF[0].copy()
         self.site.portal_types._setObject( 'Dummy Content 15', FTI(**fti) )
         self.site._setObject( 'foo', DummyContent() )
@@ -176,7 +178,7 @@
         # carries some useful information
         INVALID_ID = 'invalid_id'
         try:
-            rval = foo.getActionInfo('object/%s' % INVALID_ID)
+            foo.getActionInfo('object/%s' % INVALID_ID)
         except ValueError, e:
             message = e.args[0]
             detail = '"%s" does not offer action "%s"' % (message, INVALID_ID)



More information about the checkins mailing list