[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