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

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


Log message for revision 122805:
  - converted two more tools

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
  UU  Products.CMFDefault/trunk/Products/CMFDefault/Favorite.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/content/favorite.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/content/rss.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/metadata.txt
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/join.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/icons.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_icons.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml
  UU  Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/logout.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/setRedirect.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/RSS.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/breadcrumbs.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/discussion_reply_form.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/expanded_title.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_contents.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_rename_form.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py
  UU  Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/get_permalink.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/join_form.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_delete_form.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py
  UU  Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_email.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_form.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/recent_news.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/reconfig_form.py
  UU  Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/registered_email.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search_form.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt
  U   Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Favorite.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt	2011-09-14 12:31:04 UTC (rev 122805)
@@ -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.
 
 - skins and browser views: setRedirect now checks Action conditions.
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/Favorite.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/Favorite.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/Favorite.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -11,8 +11,6 @@
 #
 ##############################################################################
 """ Favorites are references to other objects within the same CMF site.
-
-$Id$
 """
 
 import urlparse
@@ -27,6 +25,7 @@
 from zope.interface import implements
 
 from Products.CMFCore.interfaces import ISiteRoot
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.DublinCore import DefaultDublinCoreImpl
 from Products.CMFDefault.interfaces import IFavorite
@@ -111,11 +110,11 @@
     def _getRemoteUrlTheOldWay(self):
         """Build the url without having taking the uid into account
         """
-        portal_url = getToolByName(self, 'portal_url')
+        utool = getUtility(IURLTool)
         if self.remote_url:
-            return portal_url() + '/' + self.remote_url
+            return utool() + '/' + self.remote_url
         else:
-            return portal_url()
+            return utool()
 
     security.declareProtected(View, 'getIconURL')
     def getIconURL(self):
@@ -126,7 +125,7 @@
         try:
             return self.getObject().getIconURL()
         except KeyError:
-            utool = getToolByName(self, 'portal_url')
+            utool = getUtility(IURLTool)
             return '%s/p_/broken' % utool()
 
     security.declareProtected(View, 'getObject')
@@ -138,9 +137,8 @@
         if remote_obj is not None:
             return remote_obj
 
-        # XXX: can't use ISiteRoot because absolute_url() depends on REQUEST
-        portal_url = getToolByName(self, 'portal_url')
-        return portal_url.getPortalObject().restrictedTraverse(self.remote_url)
+        utool = getUtility(IURLTool)
+        return utool.getPortalObject().restrictedTraverse(self.remote_url)
 
     security.declarePrivate('_edit')
     def _edit( self, remote_url ):
@@ -155,7 +153,7 @@
             t=('', '') + tokens[2:]
             remote_url=urlparse.urlunparse(t)
         # if URL begins with site URL, remove site URL
-        portal_url = getToolByName(self, 'portal_url').getPortalPath()
+        portal_url = getUtility(IURLTool).getPortalPath()
         i = remote_url.find(portal_url)
         if i==0:
             remote_url=remote_url[len(portal_url):]


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/Favorite.py
___________________________________________________________________
Deleted: svn:keywords
   - Id

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -20,9 +20,11 @@
 from zope.interface import alsoProvides
 from zope.testing.cleanup import cleanUp
 
+from Products.CMFCore.interfaces import IActionsTool
 from Products.CMFCore.interfaces import IFolderish
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import ISyndicationInfo
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.tests.base.dummy import DummyFolder
 from Products.CMFCore.tests.base.dummy import DummySite
 from Products.CMFCore.tests.base.dummy import DummyTool
@@ -51,9 +53,10 @@
         """Setup a site"""
         self.site = site = DummySite('site')
         site.portal_syndication = DummySyndicationTool()
-        site._setObject('portal_actions', DummyTool())
-        site._setObject('portal_url', DummyTool())
-        getSiteManager().registerUtility(DummyTool(), IMembershipTool)
+        sm = getSiteManager()
+        sm.registerUtility(DummyTool(), IActionsTool)
+        sm.registerUtility(DummyTool(), IMembershipTool)
+        sm.registerUtility(DummyTool().__of__(self.site), IURLTool)
 
     def tearDown(self):
         cleanUp()
@@ -118,13 +121,13 @@
         """Setup a site"""
         from Products.CMFDefault.SyndicationInfo import SyndicationInfo
 
-        self.site = site = DummySite('site')
+        self.site = DummySite('site')
+        self.site.portal_syndication = DummySyndicationTool()
         sm = getSiteManager()
         sm.registerAdapter(SyndicationInfo, [IFolderish], ISyndicationInfo)
-        site.portal_syndication = DummySyndicationTool()
-        site._setObject('portal_actions', DummyTool())
-        site._setObject('portal_url', DummyTool())
+        sm.registerUtility(DummyTool(), IActionsTool)
         sm.registerUtility(DummyTool(), IMembershipTool)
+        sm.registerUtility(DummyTool().__of__(self.site), IURLTool)
 
     def tearDown(self):
         cleanUp()

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/favorite.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/favorite.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/favorite.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -16,6 +16,7 @@
 import urlparse
 
 from zope.component import adapts
+from zope.component import getUtility
 from zope.formlib import form
 from zope.formlib.widgets import BytesWidget
 from zope.interface import implements
@@ -25,7 +26,7 @@
 from zope.schema import Text
 from zope.schema import TextLine
 
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFDefault.formlib.form import ContentAddFormBase
 from Products.CMFDefault.formlib.form import ContentEditFormBase
 from Products.CMFDefault.formlib.schema import ProxyFieldProperty
@@ -98,9 +99,7 @@
             tokens = ('', '') + tokens[2:]
             value = urlparse.urlunparse(tokens)
         # if URL begins with site URL, remove site URL
-        context = getattr(self.context.context, 'context',
-                          self.context.context)
-        portal_url = getToolByName(context, 'portal_url').getPortalPath()
+        portal_url = getUtility(IURLTool).getPortalPath()
         if value.startswith(portal_url):
             value = value[len(portal_url):]
         # if site is still absolute, make it relative

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/rss.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/rss.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/rss.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -12,12 +12,13 @@
 ##############################################################################
 """RSS view for syndicatable items"""
 
-from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
 from zope.component import getAdapter
+from zope.component import getUtility
 from zope.sequencesort.ssort import sort
 from ZTUtils import LazyFilter
 
 from Products.CMFCore.interfaces import ISyndicationInfo
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFDefault.browser.utils import decode
 from Products.CMFDefault.browser.utils import memoize
 from Products.CMFDefault.browser.utils import ViewBase
@@ -64,6 +65,6 @@
                 'period': self.synd_info['period'],
                 'title': self.context.Title(),
                 'description': self.context.Description(),
-                'portal_url': self._getTool('portal_url')()
+                'portal_url': getUtility(IURLTool)()
                 }
         return info

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/metadata.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/metadata.txt	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/metadata.txt	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,8 +1,11 @@
 Metadata Views
 --------------
 
-Set up content and user.
+Set up site, content and user.
 
+    >>> from zope.site.hooks import setSite
+    >>> setSite(app.site)
+
     >>> from Products.CMFDefault.Document import Document
     >>> id = app.site._setObject('myContent', Document('myContent'))
     >>> app.site.myContent._setPortalTypeName('Document')

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -23,6 +23,7 @@
 
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import IPropertiesTool
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.PortalFolder import PortalFolder
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -42,8 +43,8 @@
         sm = getSiteManager()
         sm.registerUtility(DummyTool(), IMembershipTool)
         sm.registerUtility(DummyTool().__of__(site), IPropertiesTool)
+        sm.registerUtility(DummyTool().__of__(site), IURLTool)
         site._setObject('portal_types', DummyTool())
-        site._setObject('portal_url', DummyTool())
         folder = PortalFolder('test_folder')
         self.folder = site._setObject('test_folder', folder)
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -35,10 +35,10 @@
 
 from Products.CMFCore.CookieCrumbler import ATTEMPT_LOGIN
 from Products.CMFCore.CookieCrumbler import ATTEMPT_NONE
+from Products.CMFCore.interfaces import IActionsTool
 from Products.CMFCore.interfaces import ICookieCrumbler
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import IRegistrationTool
-from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.browser.utils import ViewBase, memoize
 from Products.CMFDefault.formlib.form import EditFormBase
 from Products.CMFDefault.utils import Message as _
@@ -62,10 +62,14 @@
     forbidden_template = ViewPageTemplateFile('forbidden.pt')
 
     def __call__(self):
+        atool = queryUtility(IActionsTool)
+        if atool is None:
+            # re-raise the unhandled exception
+            raise self.context
+
         try:
-            atool = getToolByName(self, 'portal_actions')
             target = atool.getActionInfo('user/login')['url']
-        except (AttributeError, ValueError):
+        except ValueError:
             # re-raise the unhandled exception
             raise self.context
 
@@ -218,7 +222,7 @@
 
     def first_login(self, member):
         """First time login, reset password"""
-        atool = self._getTool('portal_actions')
+        atool = getUtility(IActionsTool)
         now = DateTime()
         member.setProperties(last_login_time='1999/01/01', login_time=now)
         target = atool.getActionInfo('user/change_password')['url']

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/join.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/join.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/join.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -23,6 +23,7 @@
 from zope.schema import Bool
 from zope.schema import Password
 
+from Products.CMFCore.interfaces import IActionsTool
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import IPropertiesTool
 from Products.CMFCore.interfaces import IRegistrationTool
@@ -121,7 +122,7 @@
             return _(u'Become a Member')
 
     def personalize(self):
-        atool = self._getTool('portal_actions')
+        atool = getUtility(IActionsTool)
         return atool.getActionInfo("user/preferences")['url']
 
     def handle_register_validate(self, action, data):

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -21,7 +21,9 @@
 from zope.publisher.interfaces.browser import IBrowserPublisher
 from zope.testing.cleanup import cleanUp
 
+from Products.CMFCore.interfaces import IActionsTool
 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.dummy import DummyUser
@@ -66,11 +68,12 @@
 
     def setUp(self):
         """Setup a site"""
-        self.site = site = DummySite('site')
+        self.site = DummySite('site')
         self.mtool = DummyMemberTool()
-        getSiteManager().registerUtility(self.mtool, IMembershipTool)
-        site._setObject('portal_actions', DummyTool())
-        site._setObject('portal_url', DummyTool())
+        sm = getSiteManager()
+        sm.registerUtility(DummyTool(), IActionsTool)
+        sm.registerUtility(self.mtool, IMembershipTool)
+        sm.registerUtility(DummyTool().__of__(self.site), IURLTool)
 
     def tearDown(self):
         cleanUp()

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/icons.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/icons.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/icons.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -17,16 +17,15 @@
 
 LOG = getLogger("Action Icons CSS")
 
+from Products.Five import BrowserView
 from zope.component import getUtility
 
-from Products.Five.browser import BrowserView
-
-from Products.CMFCore.interfaces import IPropertiesTool
 from Products.CMFCore.Expression import getExprContext
-from Products.CMFCore.utils import getToolByName
-
+from Products.CMFCore.interfaces import IActionsTool
+from Products.CMFCore.interfaces import IPropertiesTool
 from Products.CMFDefault.browser.utils import memoize, ViewBase
 
+
 class View(ViewBase):
     """
     CSS that dynamically checks whether Action Icons are can be used.
@@ -44,7 +43,7 @@
     @memoize
     def _show_icons(self):
         """Are action icons enabled?"""
-        ptool = self._getTool('portal_properties')
+        ptool = getUtility(IPropertiesTool)
         show = ptool.getProperty('enable_actionicons', False)
         if show:
             self.icon = ".icon {padding-left: 1.5em;}\n\n"
@@ -64,7 +63,7 @@
     @memoize
     def actions(self):
         """List all action icons"""
-        atool = self._getTool('portal_actions')
+        atool = getUtility(IActionsTool)
         all_actions = atool.listFilteredActionsFor(self.context)
         icons = []
         for cat in ['user', 'object', 'folder', 'workflow', 'global']:

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_icons.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_icons.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_icons.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -14,13 +14,16 @@
 """
 
 import unittest
+
+from Acquisition import Implicit
 from zope.component.testing import PlacelessSetup
+from zope.globalrequest import setRequest
 
 from .test_ursa import DummyActionsTool
-from .test_ursa import DummyContext
 from .test_ursa import DummyPropertiesTool
-from .test_ursa import DummyRequest
+from .test_ursa import DummyResponse
 from .test_ursa import DummyURLTool
+from Products.CMFCore.interfaces import IActionsTool
 from Products.CMFCore.interfaces import IMembershipTool
 
 
@@ -40,6 +43,7 @@
         if site is None:
             site = self._makeSite()
         request = DummyRequest()
+        setRequest(request)
         return self._getTargetClass()(site, request)
 
     def _makeSite(self, types=None, actions=None):
@@ -54,7 +58,7 @@
             site.portal_url = DummyURLTool(site)
             sm.registerUtility(DummyMembershipTool(), IMembershipTool)
         if actions is not None:
-            site.portal_actions = DummyActionsTool(actions)
+            sm.registerUtility(DummyActionsTool(actions), IActionsTool)
         site.absolute_url = lambda: 'http://example.com'
         return site
 
@@ -162,6 +166,20 @@
 .Undo {background: url(Undo.png) no-repeat 0.1em}""")
 
 
+class DummyContext(Implicit):
+
+    pass
+
+
+class DummyRequest:
+
+    def __init__(self):
+        self.RESPONSE = DummyResponse()
+
+    def get(self, key, default=None):
+        return {}
+
+
 class DummyType:
 
     def __init__(self, id):

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -18,8 +18,10 @@
 from zope.component import getSiteManager
 from zope.component.testing import PlacelessSetup
 
+from Products.CMFCore.interfaces import IActionsTool
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import IPropertiesTool
+from Products.CMFCore.interfaces import IURLTool
 
 
 class UrsineGlobalsTests(unittest.TestCase, PlacelessSetup):
@@ -54,7 +56,7 @@
         context = self._makeContext()
         request = DummyRequest()
         response = request.RESPONSE
-        view = self._makeOne(context, request)
+        self._makeOne(context, request)
         self.assertEqual(len(response._set_headers), 0)
 
     def test_ctor_w_resp_charset_doesnt_set_content_type(self):
@@ -62,7 +64,7 @@
         request = DummyRequest()
         response = request.RESPONSE
         response._orig_headers['content-type'] = 'text/html; charset=UTF-8'
-        view = self._makeOne(context, request)
+        self._makeOne(context, request)
         self.assertEqual(len(response._set_headers), 0)
 
     def test_ctor_w_resp_charset_w_def_charset_doesnt_override_charset(self):
@@ -71,7 +73,7 @@
         request = DummyRequest()
         response = request.RESPONSE
         response._orig_headers['content-type'] = 'text/html; charset=UTF-8'
-        view = self._makeOne(context, request)
+        self._makeOne(context, request)
         self.assertEqual(len(response._set_headers), 0)
 
     def test_ctor_wo_resp_charst_w_def_charset_sets_charset(self):
@@ -80,7 +82,7 @@
         request = DummyRequest()
         response = request.RESPONSE
         response._orig_headers['content-type'] = 'text/html'
-        view = self._makeOne(context, request)
+        self._makeOne(context, request)
         self.assertEqual(len(response._set_headers), 1)
         self.assertEqual(response._set_headers[0],
                          ('content-type', 'text/html; charset=latin1'))
@@ -92,7 +94,8 @@
 
     def test_utool(self):
         view = self._makeOne()
-        tool = view.context.portal_url = DummyURLTool()
+        tool = DummyURLTool()
+        getSiteManager().registerUtility(tool, IURLTool)
         self.failUnless(view.utool is tool)
 
     def test_mtool(self):
@@ -102,7 +105,8 @@
 
     def test_atool(self):
         view = self._makeOne()
-        tool = view.context.portal_actions = DummyActionsTool()
+        tool = DummyActionsTool()
+        getSiteManager().registerUtility(tool, IActionsTool)
         self.failUnless(view.atool is tool)
 
     def test_wtool(self):
@@ -145,23 +149,26 @@
 
     def test_portal_object(self):
         view = self._makeOne()
-        tool = view.context.portal_url = DummyURLTool()
         portal = DummyContext()
+        tool = DummyURLTool()
         tool.getPortalObject = lambda: portal
+        getSiteManager().registerUtility(tool, IURLTool)
         self.failUnless(view.portal_object is portal)
 
     def test_portal_url(self):
         view = self._makeOne()
-        tool = view.context.portal_url = DummyURLTool()
+        tool = DummyURLTool()
         tool.__call__ = lambda: 'http://example.com/'
+        getSiteManager().registerUtility(tool, IURLTool)
         self.assertEqual(view.portal_url, 'http://example.com/')
 
     def test_portal_title(self):
         view = self._makeOne()
-        tool = view.context.portal_url = DummyURLTool()
         portal = DummyContext()
         portal.Title = lambda: 'TITLE'
+        tool = DummyURLTool()
         tool.getPortalObject = lambda: portal
+        getSiteManager().registerUtility(tool, IURLTool)
         self.assertEqual(view.portal_title, 'TITLE')
 
     def test_object_title(self):
@@ -212,19 +219,21 @@
     def test_page_title_wo_match(self):
         view = self._makeOne()
         view.context.Title = lambda: 'CONTEXT'
-        tool = view.context.portal_url = DummyURLTool()
         portal = DummyContext()
         portal.Title = lambda: 'SITE'
+        tool = DummyURLTool()
         tool.getPortalObject = lambda: portal
+        getSiteManager().registerUtility(tool, IURLTool)
         self.assertEqual(view.page_title, 'SITE: CONTEXT')
 
     def test_page_title_w_match(self):
         view = self._makeOne()
         view.context.Title = lambda: 'MATCH'
-        tool = view.context.portal_url = DummyURLTool()
         portal = DummyContext()
         portal.Title = lambda: 'MATCH'
+        tool = DummyURLTool()
         tool.getPortalObject = lambda: portal
+        getSiteManager().registerUtility(tool, IURLTool)
         self.assertEqual(view.page_title, 'MATCH')
 
     def test_breadcrumbs_at_root(self):
@@ -236,6 +245,7 @@
         ptool.title = lambda: 'SITE'
         utool = site.portal_url = DummyURLTool(site, PATHS_TO_CONTEXTS)
         utool.__call__ = lambda: 'http://example.com/'
+        sm.registerUtility(utool, IURLTool)
         view = self._makeOne(context=site)
         crumbs = view.breadcrumbs
         self.assertEqual(len(crumbs), 1)
@@ -260,6 +270,7 @@
         ptool.title = lambda: 'SITE'
         utool = context.portal_url = DummyURLTool(site, PATHS_TO_CONTEXTS)
         utool.__call__ = lambda: 'http://example.com/'
+        sm.registerUtility(utool, IURLTool)
 
         view = self._makeOne(context=context)
 
@@ -345,7 +356,8 @@
                    'workflow': [],
                   }
         view = self._makeOne()
-        tool = view.context.portal_actions = DummyActionsTool(ACTIONS)
+        tool = DummyActionsTool(ACTIONS)
+        getSiteManager().registerUtility(tool, IActionsTool)
         self.assertEqual(view.actions, ACTIONS)
 
     def test_global_actions(self):
@@ -356,7 +368,8 @@
                    'workflow': [],
                   }
         view = self._makeOne()
-        tool = view.context.portal_actions = DummyActionsTool(ACTIONS)
+        tool = DummyActionsTool(ACTIONS)
+        getSiteManager().registerUtility(tool, IActionsTool)
         self.assertEqual(view.global_actions, ACTIONS['global'])
 
     def test_user_actions(self):
@@ -367,7 +380,8 @@
                    'workflow': [],
                   }
         view = self._makeOne()
-        tool = view.context.portal_actions = DummyActionsTool(ACTIONS)
+        tool = DummyActionsTool(ACTIONS)
+        getSiteManager().registerUtility(tool, IActionsTool)
         self.assertEqual(view.user_actions, ACTIONS['user'])
 
     def test_object_actions(self):
@@ -378,7 +392,8 @@
                    'workflow': [],
                   }
         view = self._makeOne()
-        tool = view.context.portal_actions = DummyActionsTool(ACTIONS)
+        tool = DummyActionsTool(ACTIONS)
+        getSiteManager().registerUtility(tool, IActionsTool)
         self.assertEqual(view.object_actions, ACTIONS['object'])
 
     def test_folder_actions(self):
@@ -389,7 +404,8 @@
                    'workflow': [],
                   }
         view = self._makeOne()
-        tool = view.context.portal_actions = DummyActionsTool(ACTIONS)
+        tool = DummyActionsTool(ACTIONS)
+        getSiteManager().registerUtility(tool, IActionsTool)
         self.assertEqual(view.folder_actions, ACTIONS['folder'])
 
     def test_workflow_actions(self):
@@ -400,7 +416,8 @@
                    'workflow': [DummyAction('a'), DummyAction('b')],
                   }
         view = self._makeOne()
-        tool = view.context.portal_actions = DummyActionsTool(ACTIONS)
+        tool = DummyActionsTool(ACTIONS)
+        getSiteManager().registerUtility(tool, IActionsTool)
         self.assertEqual(view.workflow_actions, ACTIONS['workflow'])
 
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -15,8 +15,10 @@
 
 from zope.component import getUtility
 
+from Products.CMFCore.interfaces import IActionsTool
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import IPropertiesTool
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.browser.utils import memoize
 from Products.CMFDefault.browser.utils import ViewBase
@@ -48,7 +50,7 @@
     @property
     @memoize
     def utool(self):
-        return self._getTool('portal_url')
+        return getUtility(IURLTool)
 
     @property
     @memoize
@@ -58,7 +60,7 @@
     @property
     @memoize
     def atool(self):
-        return self._getTool('portal_actions')
+        return getUtility(IActionsTool)
 
     @property
     @memoize

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -20,6 +20,7 @@
 
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import IPropertiesTool
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.permissions import View
 from Products.CMFDefault.utils import getBrowserCharset
@@ -75,7 +76,7 @@
 
     @memoize
     def _getPortalURL(self):
-        utool = self._getTool('portal_url')
+        utool = getUtility(IURLTool)
         return utool()
 
     @memoize

Modified: Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml	2011-09-14 12:31:04 UTC (rev 122805)
@@ -3,6 +3,8 @@
  <adapters/>
  <subscribers/>
  <utilities>
+  <utility interface="Products.CMFCore.interfaces.IActionsTool"
+     object="portal_actions"/>
   <utility interface="Products.CMFCore.interfaces.ICookieCrumbler"
      object="cookie_authentication"/>
   <utility interface="Products.CMFCore.interfaces.IDiscussionTool"
@@ -22,6 +24,8 @@
      object="portal_syndication"/>
   <utility interface="Products.CMFCore.interfaces.IUndoTool"
      object="portal_undo"/>
+  <utility interface="Products.CMFCore.interfaces.IURLTool"
+     object="portal_url"/>
   <utility interface="Products.GenericSetup.interfaces.ISetupTool"
      object="portal_setup"/>
   <utility interface="Products.MailHost.interfaces.IMailHost"

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/logout.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/logout.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/logout.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -5,7 +5,7 @@
 from Products.CMFCore.utils import getUtilityByInterfaceName
 
 stool = getToolByName(context, 'portal_skins')
-utool = getToolByName(context, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 REQUEST = context.REQUEST
 
 stool.clearSkinCookie()


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/logout.py
___________________________________________________________________
Deleted: svn:keywords
   - Author Date Id Revision

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/setRedirect.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/setRedirect.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/setRedirect.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,11 +1,11 @@
 ##parameters=provider, action_path, **kw
 ##
 from ZTUtils import make_query
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.CMFDefault.exceptions import zExceptions_Unauthorized
 from Products.CMFDefault.utils import getBrowserCharset
 
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal_url = utool()
 
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/RSS.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/RSS.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/RSS.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -3,11 +3,10 @@
 from ZTUtils import Batch
 from ZTUtils import LazyFilter
 from Products.CMFCore.utils import getUtilityByInterfaceName
-from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 
-utool = getToolByName(script, 'portal_url')
 stool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ISyndicationTool')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 
 
 if not stool.isSyndicationAllowed(context):

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/breadcrumbs.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/breadcrumbs.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/breadcrumbs.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -2,11 +2,10 @@
 ##title=Return breadcrumbs
 ##
 from Products.CMFCore.utils import getUtilityByInterfaceName
-from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import Message as _
 
 ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal_url = utool()
 result = []
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/discussion_reply_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/discussion_reply_form.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/discussion_reply_form.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,12 +1,12 @@
 ##parameters=add='', edit='', preview=''
 ##
 from Products.PythonScripts.standard import structured_text
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import html_marshal
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByName(script, 'portal_actions')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
 
 
 form = context.REQUEST.form

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/expanded_title.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/expanded_title.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/expanded_title.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -2,10 +2,10 @@
 ##parameters=
 ##title=Build title which includes site title
 ##
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.CMFDefault.utils import decode
 
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 
 site_title = utool.getPortalObject().Title()
 page_title = context.Title()

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_contents.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_contents.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_contents.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -2,7 +2,6 @@
 ##
 from ZTUtils import Batch
 from ZTUtils import make_query
-from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.CMFDefault.permissions import AddPortalContent
 from Products.CMFDefault.permissions import DeleteObjects
@@ -14,7 +13,7 @@
 from Products.CMFDefault.utils import Message as _
 
 mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal_url = utool()
 
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_rename_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_rename_form.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_rename_form.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,11 +1,11 @@
 ##parameters=b_start=0, key='', reverse=0, ids=(), new_ids=(), rename='', cancel=''
 ##
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import html_marshal
 from Products.CMFDefault.utils import Message as _
 
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal_url = utool()
 
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -5,13 +5,17 @@
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import getBrowserCharset
 
-atool = getToolByName(script, 'portal_actions')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool',
+                                  # BBB: fallback for CMF 2.2 instances
+                                  getToolByName(script, 'portal_actions'))
 caltool = getToolByName(script, 'portal_calendar', None)
-# BBB: fallback for CMF 2.2 instances
 mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool',
+                                  # BBB: fallback for CMF 2.2 instances
                                   getToolByName(script, 'portal_membership'))
 ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool',
+                                  # BBB: fallback for CMF 2.2 instances
+                                  getToolByName(script, 'portal_url'))
 wtool = getToolByName(script, 'portal_workflow')
 uidtool = getToolByName(script, 'portal_uidhandler', None)
 syndtool = getToolByName(script, 'portal_syndication', None)

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/get_permalink.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/get_permalink.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/get_permalink.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,9 +1,3 @@
-## Script (Python) "get_permalink"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
 ##parameters=
 ##title=Returns the permalink url or None
 ##
@@ -17,10 +11,10 @@
     ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
     showPermalink = getattr(ptool, 'enable_permalink', None)
     isFolderish = getattr(context.aq_explicit, 'isPrincipiaFolderish', None)
-    
+
     if showPermalink and not isFolderish:
         # returns the uid (generates one if necessary)
-        utool = getToolByName(context, 'portal_url')
+        utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
         uid = uidtool.register(context)
         url = "%s/permalink/%s" % (utool(), uid)
         return url


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/get_permalink.py
___________________________________________________________________
Deleted: svn:executable
   - *
Deleted: svn:keywords
   - Author Date Id Revision

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/join_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/join_form.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/join_form.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,15 +1,14 @@
 ##parameters=b_start=0, member_id='', member_email='', password='', confirm='', send_password='', add='', cancel=''
 ##
 from Products.CMFCore.utils import getUtilityByInterfaceName
-from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.permissions import ManageUsers
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByName(script, 'portal_actions')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
 mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal_url = utool()
 validate_email = ptool.getProperty('validate_email')
 is_anon = mtool.isAnonymousUser()

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -5,7 +5,7 @@
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByName(script, 'portal_actions')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
 mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
 stool = getToolByName(script, 'portal_skins')

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_delete_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_delete_form.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_delete_form.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,12 +1,11 @@
 ##parameters=ids, b_start=0, delete='', cancel=''
 ##
-from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import html_marshal
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByName(script, 'portal_actions')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
 mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,13 +1,12 @@
 ##parameters=b_start=0, ids=(), members_new='', members_delete=''
 ##
 from ZTUtils import Batch
-from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import html_marshal
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByName(script, 'portal_actions')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
 mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_email.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_email.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_email.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,14 +1,13 @@
 ##parameters=member=None, password='secret'
 ##
 from Products.CMFCore.utils import getUtilityByInterfaceName
-from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import makeEmail
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByName(script, 'portal_actions')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
 ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal_url = utool()
 
 


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_email.py
___________________________________________________________________
Deleted: svn:keywords
   - Id

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_form.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_form.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,14 +1,13 @@
 ##parameters=change='', cancel=''
 ##
 from Products.CMFCore.utils import getUtilityByInterfaceName
-from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByName(script, 'portal_actions')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
 mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 member = mtool.getAuthenticatedMember()
 portal_url = utool()
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/recent_news.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/recent_news.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/recent_news.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -3,10 +3,11 @@
 from Products.PythonScripts.standard import structured_text
 from ZTUtils import Batch
 from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.CMFDefault.utils import decode
 
 ctool = getToolByName(script, 'portal_catalog')
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal_url = utool()
 
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/reconfig_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/reconfig_form.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/reconfig_form.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,11 +1,10 @@
 ##parameters=change=''
 ##
 from Products.CMFCore.utils import getUtilityByInterfaceName
-from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByName(script, 'portal_actions')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
 ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
 
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/registered_email.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/registered_email.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/registered_email.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -1,14 +1,13 @@
 ##parameters=member=None, password='secret', email='foo at example.org'
 ##
 from Products.CMFCore.utils import getUtilityByInterfaceName
-from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import makeEmail
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByName(script, 'portal_actions')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
 ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal_url = utool()
 
 


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/registered_email.py
___________________________________________________________________
Deleted: svn:keywords
   - Id

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -3,11 +3,12 @@
 from Products.PythonScripts.standard import thousands_commas
 from ZTUtils import Batch
 from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import Message as _
 
 ctool = getToolByName(script, 'portal_catalog')
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal_url = utool()
 epoch = DateTime('1970/01/01 00:00:01 GMT')
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search_form.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search_form.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -9,7 +9,7 @@
 ctool = getToolByName(script, 'portal_catalog')
 mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 ttool = getToolByName(script, 'portal_types')
-utool = getToolByName(script, 'portal_url')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal_url = utool()
 
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt	2011-09-14 12:31:04 UTC (rev 122805)
@@ -28,10 +28,12 @@
 
     >>> from zope.component import getSiteManager
     >>> from zope.component import getUtility
+    >>> from zope.globalrequest import setRequest
     >>> from zope.site.hooks import setSite
     >>> from Products.CMFCore.interfaces import IMembershipTool
     >>> from Products.MailHost.interfaces import IMailHost
     >>> setSite(app.site)
+    >>> setRequest(app.REQUEST)
     >>> app.site.setupCurrentSkin(app.REQUEST)
     >>> sm = getSiteManager()
     >>> sm.registerUtility(MailHost(), IMailHost)

Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Favorite.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Favorite.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Favorite.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -20,7 +20,9 @@
 from zope.interface.verify import verifyClass
 from zope.testing.cleanup import cleanUp
 
+from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import ISiteRoot
+from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.testing import ConformsToContent
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -38,11 +40,11 @@
         return self._getTargetClass()(*args, **kw)
 
     def setUp(self):
+        self.site = DummySite('site')
         sm = getSiteManager()
-        self.site = DummySite('site')
         sm.registerUtility(self.site, ISiteRoot)
-        self.site._setObject( 'portal_membership', DummyTool() )
-        self.site._setObject( 'portal_url', DummyTool() )
+        sm.registerUtility(DummyTool(), IMembershipTool)
+        sm.registerUtility(DummyTool().__of__(self.site), IURLTool)
         self.site._setObject( 'target', DummyContent() )
 
     def tearDown(self):
@@ -60,7 +62,7 @@
         verifyClass(IMutableLink, self._getTargetClass())
 
     def test_Empty( self ):
-        utool = self.site.portal_url
+        utool = getSiteManager().getUtility(IURLTool)
         f = self.site._setObject('foo', self._makeOne('foo'))
 
         self.assertEqual( f.getId(), 'foo' )
@@ -72,7 +74,7 @@
         self.assertEqual( f.icon(), self.site.icon() )
 
     def test_CtorArgs( self ):
-        utool = self.site.portal_url
+        utool = getSiteManager().getUtility(IURLTool)
         target = self.site.target
         self.assertEqual( self._makeOne( 'foo'
                                        , title='Title'
@@ -90,7 +92,7 @@
         self.assertEqual( baz.icon(), target.icon() )
 
     def test_edit( self ):
-        utool = self.site.portal_url
+        utool = getSiteManager().getUtility(IURLTool)
         target = self.site.target
         f = self.site._setObject('foo', self._makeOne('foo'))
         f.edit( 'target' )
@@ -100,7 +102,7 @@
         self.assertEqual( f.icon(), target.icon() )
 
     def test_editEmpty( self ):
-        utool = self.site.portal_url
+        utool = getSiteManager().getUtility(IURLTool)
         f = self.site._setObject('gnnn', self._makeOne('gnnn'))
         f.edit( '' )
         self.assertEqual( f.getObject(), self.site )

Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py	2011-09-14 12:30:40 UTC (rev 122804)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py	2011-09-14 12:31:04 UTC (rev 122805)
@@ -264,9 +264,11 @@
 
 _TOOL_UTILITIES = (
     ('cookie_authentication', 'Products.CMFCore.interfaces.ICookieCrumbler'),
+    ('portal_actions', 'Products.CMFCore.interfaces.IActionsTool'),
     ('portal_memberdata', 'Products.CMFCore.interfaces.IMemberDataTool'),
     ('portal_membership', 'Products.CMFCore.interfaces.IMembershipTool'),
     ('portal_registration', 'Products.CMFCore.interfaces.IRegistrationTool'),
+    ('portal_url', 'Products.CMFCore.interfaces.IURLTool'),
 )
 
 def check_root_site_manager(tool):



More information about the checkins mailing list