[Checkins] SVN: CMF/branches/2.1/ Backported r76896:76935 aka only-half-of-the-tools-as-utilities from the trunk.

Hanno Schlichting plone at hannosch.info
Sat Jun 23 20:18:55 EDT 2007


Log message for revision 76996:
  Backported r76896:76935 aka only-half-of-the-tools-as-utilities from the trunk.
  

Changed:
  U   CMF/branches/2.1/CMFCalendar/CalendarTool.py
  U   CMF/branches/2.1/CMFCalendar/browser/calendartool.py
  D   CMF/branches/2.1/CMFCalendar/profiles/default/componentregistry.xml
  U   CMF/branches/2.1/CMFCalendar/skins/zpt_calendar/calendar_day_view.py
  U   CMF/branches/2.1/CMFCalendar/skins/zpt_calendar/getMonthAndYear.py
  U   CMF/branches/2.1/CMFCore/ActionsTool.py
  U   CMF/branches/2.1/CMFCore/CMFCatalogAware.py
  U   CMF/branches/2.1/CMFCore/CatalogTool.py
  U   CMF/branches/2.1/CMFCore/ContentTypeRegistry.py
  U   CMF/branches/2.1/CMFCore/CookieCrumbler.py
  U   CMF/branches/2.1/CMFCore/DiscussionTool.py
  U   CMF/branches/2.1/CMFCore/DynamicType.py
  U   CMF/branches/2.1/CMFCore/Expression.py
  U   CMF/branches/2.1/CMFCore/FSObject.py
  U   CMF/branches/2.1/CMFCore/MemberDataTool.py
  U   CMF/branches/2.1/CMFCore/MembershipTool.py
  U   CMF/branches/2.1/CMFCore/PortalFolder.py
  U   CMF/branches/2.1/CMFCore/PortalObject.py
  U   CMF/branches/2.1/CMFCore/RegistrationTool.py
  U   CMF/branches/2.1/CMFCore/Skinnable.py
  U   CMF/branches/2.1/CMFCore/SkinsTool.py
  U   CMF/branches/2.1/CMFCore/TypesTool.py
  U   CMF/branches/2.1/CMFCore/URLTool.py
  U   CMF/branches/2.1/CMFCore/UndoTool.py
  U   CMF/branches/2.1/CMFCore/WorkflowTool.py
  U   CMF/branches/2.1/CMFCore/exportimport/actions.py
  U   CMF/branches/2.1/CMFCore/exportimport/catalog.py
  U   CMF/branches/2.1/CMFCore/exportimport/content.py
  U   CMF/branches/2.1/CMFCore/exportimport/contenttyperegistry.py
  U   CMF/branches/2.1/CMFCore/exportimport/cookieauth.py
  U   CMF/branches/2.1/CMFCore/exportimport/skins.py
  U   CMF/branches/2.1/CMFCore/exportimport/tests/test_actions.py
  U   CMF/branches/2.1/CMFCore/exportimport/tests/test_catalog.py
  U   CMF/branches/2.1/CMFCore/exportimport/tests/test_content.py
  U   CMF/branches/2.1/CMFCore/exportimport/tests/test_contenttyperegistry.py
  U   CMF/branches/2.1/CMFCore/exportimport/tests/test_cookieauth.py
  U   CMF/branches/2.1/CMFCore/exportimport/tests/test_skins.py
  U   CMF/branches/2.1/CMFCore/exportimport/tests/test_typeinfo.py
  U   CMF/branches/2.1/CMFCore/exportimport/tests/test_workflow.py
  U   CMF/branches/2.1/CMFCore/exportimport/typeinfo.py
  U   CMF/branches/2.1/CMFCore/exportimport/workflow.py
  U   CMF/branches/2.1/CMFCore/tests/base/dummy.py
  U   CMF/branches/2.1/CMFCore/tests/test_ActionProviderBase.py
  U   CMF/branches/2.1/CMFCore/tests/test_ActionsTool.py
  U   CMF/branches/2.1/CMFCore/tests/test_CMFCatalogAware.py
  U   CMF/branches/2.1/CMFCore/tests/test_CachingPolicyManager.py
  U   CMF/branches/2.1/CMFCore/tests/test_DynamicType.py
  U   CMF/branches/2.1/CMFCore/tests/test_FSDTMLMethod.py
  U   CMF/branches/2.1/CMFCore/tests/test_FSPageTemplate.py
  U   CMF/branches/2.1/CMFCore/tests/test_FSPropertiesObject.py
  U   CMF/branches/2.1/CMFCore/tests/test_FSPythonScript.py
  U   CMF/branches/2.1/CMFCore/tests/test_FSReSTMethod.py
  U   CMF/branches/2.1/CMFCore/tests/test_FSSTXMethod.py
  U   CMF/branches/2.1/CMFCore/tests/test_FSZSQLMethod.py
  U   CMF/branches/2.1/CMFCore/tests/test_MemberDataTool.py
  U   CMF/branches/2.1/CMFCore/tests/test_MembershipTool.py
  U   CMF/branches/2.1/CMFCore/tests/test_OpaqueItems.py
  U   CMF/branches/2.1/CMFCore/tests/test_PortalContent.py
  U   CMF/branches/2.1/CMFCore/tests/test_PortalFolder.py
  U   CMF/branches/2.1/CMFCore/tests/test_RegistrationTool.py
  U   CMF/branches/2.1/CMFCore/tests/test_SkinsTool.py
  U   CMF/branches/2.1/CMFCore/tests/test_UndoTool.py
  U   CMF/branches/2.1/CMFCore/tests/test_WorkflowTool.py
  U   CMF/branches/2.1/CMFDefault/DefaultWorkflow.py
  U   CMF/branches/2.1/CMFDefault/DiscussionTool.py
  U   CMF/branches/2.1/CMFDefault/Extensions/update_catalogIndexes.py
  U   CMF/branches/2.1/CMFDefault/Favorite.py
  U   CMF/branches/2.1/CMFDefault/MetadataTool.py
  U   CMF/branches/2.1/CMFDefault/PropertiesTool.py
  U   CMF/branches/2.1/CMFDefault/RegistrationTool.py
  U   CMF/branches/2.1/CMFDefault/SyndicationTool.py
  U   CMF/branches/2.1/CMFDefault/browser/favorite.py
  U   CMF/branches/2.1/CMFDefault/browser/folder.py
  U   CMF/branches/2.1/CMFDefault/browser/folder.txt
  U   CMF/branches/2.1/CMFDefault/browser/metadata.py
  U   CMF/branches/2.1/CMFDefault/browser/utils.py
  U   CMF/branches/2.1/CMFDefault/formlib/form.py
  U   CMF/branches/2.1/CMFDefault/profiles/default/componentregistry.xml
  U   CMF/branches/2.1/CMFDefault/skins/zpt_content/content_status_modify.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_control/members_add_control.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_control/setRedirect.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/breadcrumbs.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/discussion_reply_form.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/expanded_title.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/folder_contents.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/folder_rename_form.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/getBatchItemInfos.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/getMainGlobals.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/get_permalink.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/join_form.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/logged_in.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/members_delete_form.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/members_manage_form.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/news_box.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/password_email.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/password_form.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/recent_news.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/reconfig_form.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/registered_email.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/rejectItems.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/search.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/search_form.py
  U   CMF/branches/2.1/CMFDefault/skins/zpt_generic/setup_talkback_tree.py
  U   CMF/branches/2.1/CMFDefault/tests/RegistrationTool.txt
  U   CMF/branches/2.1/CMFDefault/tests/test_DiscussionTool.py
  U   CMF/branches/2.1/CMFDefault/tests/test_Discussions.py
  U   CMF/branches/2.1/CMFDefault/tests/test_Favorite.py
  U   CMF/branches/2.1/CMFDefault/tests/test_MembershipTool.py
  U   CMF/branches/2.1/CMFDefault/tests/test_MetadataTool.py
  U   CMF/branches/2.1/CMFDefault/tests/test_Portal.py
  U   CMF/branches/2.1/CMFDefault/tests/test_PropertiesTool.py
  U   CMF/branches/2.1/CMFDefault/tests/test_RegistrationTool.py
  U   CMF/branches/2.1/CMFDefault/tests/test_SyndicationTool.py
  U   CMF/branches/2.1/CMFTopic/Topic.py
  U   CMF/branches/2.1/CMFTopic/tests/test_Topic.py
  U   CMF/branches/2.1/CMFUid/UniqueIdAnnotationTool.py
  U   CMF/branches/2.1/CMFUid/UniqueIdGeneratorTool.py
  U   CMF/branches/2.1/CMFUid/UniqueIdHandlerTool.py
  U   CMF/branches/2.1/CMFUid/profiles/default/componentregistry.xml
  U   CMF/branches/2.1/CMFUid/tests/test_uidhandling.py
  U   CMF/branches/2.1/DCWorkflow/DCWorkflow.py
  U   CMF/branches/2.1/DCWorkflow/tests/test_exportimport.py

-=-
Modified: CMF/branches/2.1/CMFCalendar/CalendarTool.py
===================================================================
--- CMF/branches/2.1/CMFCalendar/CalendarTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCalendar/CalendarTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -24,6 +24,7 @@
 from zope.interface import implements
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
+from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.utils import registerToolInterface
 from Products.CMFCore.utils import UniqueObject
 
@@ -31,6 +32,7 @@
 from permissions import ManagePortal
 
 class CalendarTool (UniqueObject, SimpleItem):
+
     """ A tool for encapsulating how calendars work and are displayed """
 
     id = 'portal_calendar'
@@ -68,6 +70,8 @@
                           ):
         """ Change the configuration of the calendar tool 
         """
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on self.REQUEST
         self.calendar_types = tuple(show_types)
         self.use_session = bool(use_session)
 
@@ -176,13 +180,16 @@
     def catalog_getevents(self, year, month):
         """ given a year and month return a list of days that have events 
         """
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on a non-utility tool
         year = int(year)
         month = int(month)
         last_day = self._getCalendar().monthrange(year, month)[1]
         first_date = self.getBeginAndEndTimes(1, month, year)[0]
         last_date = self.getBeginAndEndTimes(last_day, month, year)[1]
 
-        query = self.portal_catalog(
+        ctool = getToolByName(self, 'portal_catalog')
+        query = ctool(
                         portal_type=self.getCalendarTypes(),
                         review_state=self.getCalendarStates(),
                         start={'query': last_date, 'range': 'max'},
@@ -263,7 +270,8 @@
             B) End on this day  OR
             C) Start before this day  AND  end after this day
         """
-        catalog = self.portal_catalog
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on a non-utility tool
         day, month, year = ( int(thisDay.day())
                            , int(thisDay.month())
                            , int(thisDay.year())
@@ -275,21 +283,22 @@
         after_midnight = DateTime(after_midnight_str)
 
         # Get all events that Start on this day
-        query = self.portal_catalog(
+        ctool = getToolByName(self, 'portal_catalog')
+        query = ctool(
                         portal_type=self.getCalendarTypes(),
                         review_state=self.getCalendarStates(),
                         start={'query': (first_date, last_date),
                                'range': 'minmax'} )
 
         # Get all events that End on this day
-        query += self.portal_catalog(
+        query += ctool(
                          portal_type=self.getCalendarTypes(),
                          review_state=self.getCalendarStates(),
                          end={'query': (after_midnight, last_date),
                               'range': 'minmax'} )
 
         # Get all events that Start before this day AND End after this day
-        query += self.portal_catalog(
+        query += ctool(
                          portal_type=self.getCalendarTypes(),
                          review_state=self.getCalendarStates(),
                          start={'query': first_date, 'range': 'max'},
@@ -358,4 +367,3 @@
         return (begin, end)
 
 InitializeClass(CalendarTool)
-registerToolInterface('portal_calendar', ICalendarTool)

Modified: CMF/branches/2.1/CMFCalendar/browser/calendartool.py
===================================================================
--- CMF/branches/2.1/CMFCalendar/browser/calendartool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCalendar/browser/calendartool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -16,15 +16,12 @@
 """
 
 from DateTime.DateTime import DateTime
-from zope.component import getUtility
 
 from Products.CMFDefault.browser.utils import decode
 from Products.CMFDefault.browser.utils import memoize
 from Products.CMFDefault.browser.utils import ViewBase
 
-from Products.CMFCalendar.interfaces import ICalendarTool
 
-
 class CalendarView(ViewBase):
 
     """ Helper class for calendar-related templates
@@ -95,7 +92,7 @@
     def listItemInfos(self):
         """ List item infos for all event catalog records for a specific day.
         """
-        caltool = getUtility(ICalendarTool)
+        caltool = self._getTool('portal_calendar')
         thisDay = self.viewDay()
 
         items = [ {'title': item.Title,
@@ -115,7 +112,7 @@
     def getMonthAndYear(self):
         """ Retrieve month/year tuple
         """
-        caltool = getUtility(ICalendarTool)
+        caltool = self._getTool('portal_calendar')
         current = DateTime()
         session = None
 
@@ -149,7 +146,7 @@
     def getNextMonthLink(self, base_url, month, year):
         """ Return URL for the next month link
         """
-        caltool = getUtility(ICalendarTool)
+        caltool = self._getTool('portal_calendar')
         nextMonthTime = caltool.getNextMonth(month, year)
 
         x = '%s?month:int=%d&year:int=%d' % ( base_url
@@ -162,7 +159,7 @@
     def getPreviousMonthLink(self, base_url, month, year):
         """ Return URL for the previous month link
         """
-        caltool = getUtility(ICalendarTool)
+        caltool = self._getTool('portal_calendar')
         prevMonthTime = caltool.getPreviousMonth(month, year)
 
         x = '%s?month:int=%d&year:int=%d' % ( base_url

Deleted: CMF/branches/2.1/CMFCalendar/profiles/default/componentregistry.xml
===================================================================
--- CMF/branches/2.1/CMFCalendar/profiles/default/componentregistry.xml	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCalendar/profiles/default/componentregistry.xml	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-<componentregistry>
- <adapters/>
- <utilities>
-  <utility
-     interface="Products.CMFCalendar.interfaces.ICalendarTool"
-     object="/portal_calendar"/>
- </utilities>
-</componentregistry>

Modified: CMF/branches/2.1/CMFCalendar/skins/zpt_calendar/calendar_day_view.py
===================================================================
--- CMF/branches/2.1/CMFCalendar/skins/zpt_calendar/calendar_day_view.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCalendar/skins/zpt_calendar/calendar_day_view.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,9 +1,9 @@
 ##parameters=
 ##
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 
-caltool = getToolByInterfaceName('Products.CMFCalendar.interfaces.ICalendarTool')
+caltool = getToolByName(script, 'portal_calendar')
 
 options = {}
 base_url = script.absolute_url()

Modified: CMF/branches/2.1/CMFCalendar/skins/zpt_calendar/getMonthAndYear.py
===================================================================
--- CMF/branches/2.1/CMFCalendar/skins/zpt_calendar/getMonthAndYear.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCalendar/skins/zpt_calendar/getMonthAndYear.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,9 +1,9 @@
 
 # Get the year and month that the calendar should display.
 
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 
-caltool = getToolByInterfaceName('Products.CMFCalendar.interfaces.ICalendarTool')
+caltool = getToolByName(script, 'portal_calendar')
 current = DateTime()
 session = None
 

Modified: CMF/branches/2.1/CMFCore/ActionsTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/ActionsTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/ActionsTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -30,7 +30,6 @@
 from interfaces.portal_actions import portal_actions as z2IActionsTool
 from permissions import ManagePortal
 from utils import _dtmldir
-from utils import registerToolInterface
 from utils import UniqueObject
 
 
@@ -41,6 +40,8 @@
         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)
     __implements__ = (z2IActionsTool, OrderedFolder.__implements__,
@@ -184,4 +185,3 @@
         return filtered_actions
 
 InitializeClass(ActionsTool)
-registerToolInterface('portal_actions', IActionsTool)

Modified: CMF/branches/2.1/CMFCore/CMFCatalogAware.py
===================================================================
--- CMF/branches/2.1/CMFCore/CMFCatalogAware.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/CMFCatalogAware.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -27,7 +27,6 @@
 
 from zope.app.container.interfaces import IObjectAddedEvent
 from zope.app.container.interfaces import IObjectMovedEvent
-from zope.component import queryUtility
 from zope.component import subscribers
 
 from permissions import AccessContentsInformation
@@ -35,6 +34,7 @@
 from permissions import ModifyPortalContent
 from utils import _dtmldir
 from utils import _getAuthenticatedUser
+from utils import getToolByName
 
 from interfaces import ICallableOpaqueItem
 from interfaces import ICatalogTool
@@ -58,10 +58,10 @@
     # for a given content type
 
     def _getCatalogTool(self):
-        return queryUtility(ICatalogTool)
+        return getToolByName(self, 'portal_catalog', None)
 
     def _getWorkflowTool(self):
-        return queryUtility(IConfigurableWorkflowTool)
+        return getToolByName(self, 'portal_workflow', None)
 
     # Cataloging methods
     # ------------------

Modified: CMF/branches/2.1/CMFCore/CatalogTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/CatalogTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/CatalogTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -46,7 +46,7 @@
 from utils import _dtmldir
 from utils import _getAuthenticatedUser
 from utils import _mergedLocalRoles
-from utils import registerToolInterface
+from utils import getToolByName
 from utils import UniqueObject
 
 
@@ -253,7 +253,9 @@
                        pghandler=None):
         # Wraps the object with workflow and accessibility
         # information just before cataloging.
-        wftool = queryUtility(IConfigurableWorkflowTool)
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on a non-utility tool
+        wftool = getToolByName(self, 'portal_workflow', None)
         if wftool is not None:
             vars = wftool.getCatalogVariablesFor(obj)
         else:
@@ -298,4 +300,3 @@
         self.catalog_object(object, uid, idxs, update_metadata)
 
 InitializeClass(CatalogTool)
-registerToolInterface('portal_catalog', ICatalogTool)

Modified: CMF/branches/2.1/CMFCore/ContentTypeRegistry.py
===================================================================
--- CMF/branches/2.1/CMFCore/ContentTypeRegistry.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/ContentTypeRegistry.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -36,7 +36,7 @@
         import ContentTypeRegistryPredicate as z2IContentTypeRegistryPredicate
 from permissions import ManagePortal
 from utils import _dtmldir
-from utils import registerToolInterface
+from utils import getToolByName
 
 
 class MajorMinorPredicate( SimpleItem ):
@@ -435,11 +435,13 @@
     def doTestRegistry( self, name, content_type, body, REQUEST ):
         """
         """
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on a non-utility tool
         typeName = self.findTypeName( name, content_type, body )
         if typeName is None:
             typeName = '<unknown>'
         else:
-            types_tool = getUtility(ITypesTool)
+            types_tool = getToolByName(self, 'portal_types')
             typeName = types_tool.getTypeInfo(typeName).Title()
         REQUEST[ 'RESPONSE' ].redirect( self.absolute_url()
                                + '/manage_testRegistry'
@@ -552,8 +554,8 @@
         return None
 
 InitializeClass( ContentTypeRegistry )
-registerToolInterface('content_type_registry', IContentTypeRegistry)
 
+
 def manage_addRegistry( self, REQUEST=None ):
     """
         Add a CTR to self.

Modified: CMF/branches/2.1/CMFCore/CookieCrumbler.py
===================================================================
--- CMF/branches/2.1/CMFCore/CookieCrumbler.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/CookieCrumbler.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -32,7 +32,6 @@
 from OFS.interfaces import IObjectWillBeMovedEvent
 
 from interfaces import ICookieCrumbler
-from utils import registerToolInterface
 
 
 # Constants.
@@ -131,6 +130,8 @@
 
     security.declarePrivate('defaultSetAuthCookie')
     def defaultSetAuthCookie(self, resp, cookie_name, cookie_value):
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on self.REQUEST
         kw = {}
         req = getattr(self, 'REQUEST', None)
         if req is not None and req.get('SERVER_URL', '').startswith('https:'):
@@ -233,7 +234,7 @@
 
     def __call__(self, container, req):
         '''The __before_publishing_traverse__ hook.'''
-        resp = self.REQUEST['RESPONSE']
+        resp = req['RESPONSE']
         try:
             attempt = self.modifyRequest(req, resp)
         except CookieCrumblerDisabled:
@@ -267,6 +268,8 @@
 
     security.declarePublic('credentialsChanged')
     def credentialsChanged(self, user, name, pw):
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on self.REQUEST
         ac = encodestring('%s:%s' % (name, pw)).rstrip()
         method = self.getCookieMethod( 'setAuthCookie'
                                        , self.defaultSetAuthCookie )
@@ -274,6 +277,8 @@
         method( resp, self.auth_cookie, quote( ac ) )
 
     def _cleanupResponse(self):
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on self.REQUEST
         resp = self.REQUEST['RESPONSE']
         # No errors of any sort may propagate, and we don't care *what*
         # they are, even to log them.
@@ -315,6 +320,8 @@
         '''
         Redirects to the login page.
         '''
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on self.REQUEST
         req = self.REQUEST
         resp = req['RESPONSE']
         attempt = getattr(req, '_cookie_auth', ATTEMPT_NONE)
@@ -359,6 +366,8 @@
         '''
         Logs out the user and redirects to the logout page.
         '''
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on self.REQUEST
         req = self.REQUEST
         resp = req['RESPONSE']
         method = self.getCookieMethod( 'expireAuthCookie'
@@ -383,8 +392,8 @@
         return id
 
 Globals.InitializeClass(CookieCrumbler)
-registerToolInterface('cookie_authentication', ICookieCrumbler)
 
+
 def handleCookieCrumblerEvent(ob, event):
     """ Event subscriber for (un)registering a CC as a before traverse hook.
     """

Modified: CMF/branches/2.1/CMFCore/DiscussionTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/DiscussionTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/DiscussionTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -37,6 +37,7 @@
 from interfaces.portal_discussion \
         import oldstyle_portal_discussion as z2IOldstyleDiscussionTool
 from utils import _dtmldir
+from utils import getToolByName
 from utils import UniqueObject
 
 
@@ -93,7 +94,7 @@
             Often, the actual objects are not needed.  This is less expensive
             than fetching the objects.
         """
-        catalog = getUtility(ICatalogTool)
+        catalog = getToolByName(self.content, 'portal_catalog')
         return catalog.searchResults(in_reply_to=
                                       urllib.unquote('/'+self.absolute_url(1)))
 
@@ -103,7 +104,7 @@
             Return a sequence of the DiscussionResponse objects which are
             associated with this Discussable
         """
-        catalog = getUtility(ICatalogTool)
+        catalog = getToolByName(self.content, 'portal_catalog')
         results = self.getReplyResults()
         rids    = map(lambda x: x.data_record_id_, results)
         objects = map(catalog.getobject, rids)
@@ -157,7 +158,7 @@
         '''
         if hasattr( content, 'allow_discussion' ):
             return content.allow_discussion
-        typeInfo = getUtility(ITypesTool).getTypeInfo( content )
+        typeInfo = content.getTypeInfo()
         if typeInfo:
             return typeInfo.allowDiscussion()
         return 0

Modified: CMF/branches/2.1/CMFCore/DynamicType.py
===================================================================
--- CMF/branches/2.1/CMFCore/DynamicType.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/DynamicType.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -20,14 +20,11 @@
 from AccessControl import ClassSecurityInfo
 from Globals import InitializeClass
 from zope.app.publisher.browser import queryDefaultViewName
-from zope.component import getUtility
 from zope.component import queryMultiAdapter
-from zope.component import queryUtility
 from zope.interface import implements
 
 from interfaces import IDynamicType
-from interfaces import ITypesTool
-from interfaces import IURLTool
+from utils import getToolByName
 from interfaces.Dynamic import DynamicType as z2IDynamicType
 
 
@@ -69,7 +66,7 @@
     def getTypeInfo(self):
         """ Get the TypeInformation object specified by the portal type.
         """
-        tool = queryUtility(ITypesTool)
+        tool = getToolByName(self, 'portal_types', None)
         if tool is None:
             return None
         return tool.getTypeInfo(self)  # Can return None.
@@ -105,7 +102,7 @@
                     return icon
                 else:
                     # Relative to REQUEST['BASEPATH1']
-                    portal_url = getUtility(IURLTool)
+                    portal_url = getToolByName( self, 'portal_url' )
                     res = portal_url(relative=1) + '/' + icon
                     while res[:1] == '/':
                         res = res[1:]

Modified: CMF/branches/2.1/CMFCore/Expression.py
===================================================================
--- CMF/branches/2.1/CMFCore/Expression.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/Expression.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -25,7 +25,7 @@
 from Products.PageTemplates.Expressions import SecureModuleImporter
 
 from interfaces import IMembershipTool
-from interfaces import ISiteRoot
+from utils import getToolByName
 
 
 class Expression(Persistent):
@@ -66,7 +66,8 @@
     else:
         ec = None
     if ec is None:
-        portal = getUtility(ISiteRoot)
+        utool = getToolByName(context, 'portal_url')
+        portal = utool.getPortalObject()
         if object is None or not hasattr(object, 'aq_base'):
             folder = portal
         else:

Modified: CMF/branches/2.1/CMFCore/FSObject.py
===================================================================
--- CMF/branches/2.1/CMFCore/FSObject.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/FSObject.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -28,15 +28,12 @@
 from DateTime import DateTime
 from OFS.Cache import Cacheable
 from OFS.SimpleItem import Item
-
-from zope.component import getUtility
-
 from Products.PythonScripts.standard import html_quote
 
-from interfaces import ISkinsTool
 from permissions import ManagePortal
 from permissions import View
 from permissions import ViewManagementScreens
+from utils import getToolByName
 
 
 class FSObject(Implicit, Item, RoleManager, Cacheable):
@@ -118,10 +115,16 @@
                 # The permission was invalid, never mind
                 pass
 
+        skins_tool_namegetter = getattr(self, 'getSkinsFolderName', None)
+        if skins_tool_namegetter is not None:
+            skins_tool_name = skins_tool_namegetter()
+        else:
+            skins_tool_name = 'portal_skins'
+
         id = obj.getId()
         fpath = tuple( folder_path.split('/') )
         if root is None:
-            portal_skins = getUtility(ISkinsTool)
+            portal_skins = getToolByName(self, skins_tool_name)
         else:
             portal_skins = root
         if folder_path == '.':

Modified: CMF/branches/2.1/CMFCore/MemberDataTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/MemberDataTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/MemberDataTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -28,7 +28,6 @@
 from zope.component import queryUtility
 from zope.interface import implements
 
-from ActionProviderBase import ActionProviderBase
 from exceptions import BadRequest
 from interfaces import IMemberData
 from interfaces import IMemberDataTool
@@ -48,30 +47,24 @@
 _marker = []  # Create a new marker object.
 
 
-class MemberDataTool(UniqueObject, SimpleItem, PropertyManager,
-                     ActionProviderBase):
+class MemberDataTool(UniqueObject, SimpleItem, PropertyManager):
 
     """ This tool wraps user objects, making them act as Member objects.
     """
 
     implements(IMemberDataTool)
-    __implements__ = (z2IMemberDataTool, ActionProviderBase.__implements__)
+    __implements__ = (z2IMemberDataTool, )
 
     id = 'portal_memberdata'
     meta_type = 'CMF Member Data Tool'
-    _v_temps = None
     _properties = ()
 
     security = ClassSecurityInfo()
 
-    manage_options=( ActionProviderBase.manage_options +
-                     ({ 'label' : 'Overview'
-                       , 'action' : 'manage_overview'
-                       }
-                     , { 'label' : 'Contents'
-                       , 'action' : 'manage_showContents'
-                       }
-                     )
+    manage_options=( ({'label': 'Overview',
+                       'action': 'manage_overview'},
+                      {'label': 'Contents',
+                       'action': 'manage_showContents'})
                    + PropertyManager.manage_options
                    + SimpleItem.manage_options
                    )
@@ -184,7 +177,7 @@
     def pruneMemberDataContents(self):
         """ Delete data contents of all members not listet in acl_users.
         """
-        membertool= getUtility(IMembershipTool)
+        membertool = getUtility(IMembershipTool)
         members = self._members
         user_list = membertool.listMemberIds()
 
@@ -200,27 +193,12 @@
         '''
         id = u.getId()
         members = self._members
-        if not members.has_key(id):
-            # Get a temporary member that might be
-            # registered later via registerMemberData().
-            temps = self._v_temps
-            if temps is not None and temps.has_key(id):
-                m = temps[id]
-            else:
-                base = aq_base(self)
-                m = MemberData(base, id)
-                if temps is None:
-                    self._v_temps = {id:m}
-                    if hasattr(self, 'REQUEST'):
-                        # No REQUEST during tests.
-                        self.REQUEST._hold(CleanupTemp(self))
-                else:
-                    temps[id] = m
-        else:
-            m = members[id]
+        if not id in members:
+            base = aq_base(self)
+            members[id] = MemberData(base, id)
         # Return a wrapper with self as containment and
         # the user as context.
-        return m.__of__(self).__of__(u)
+        return members[id].__of__(self).__of__(u)
 
     security.declarePrivate('registerMemberData')
     def registerMemberData(self, m, id):
@@ -243,21 +221,6 @@
 registerToolInterface('portal_memberdata', IMemberDataTool)
 
 
-class CleanupTemp:
-
-    """Used to cleanup _v_temps at the end of the request."""
-
-    def __init__(self, tool):
-        self._tool = tool
-
-    def __del__(self):
-        try:
-            del self._tool._v_temps
-        except (AttributeError, KeyError):
-            # The object has already been deactivated.
-            pass
-
-
 class MemberData(SimpleItem):
 
     implements(IMemberData)
@@ -267,17 +230,11 @@
 
     def __init__(self, tool, id):
         self.id = id
-        # Make a temporary reference to the tool.
-        # The reference will be removed by notifyModified().
-        self._tool = tool
 
     security.declarePrivate('notifyModified')
     def notifyModified(self):
         # Links self to parent for full persistence.
-        tool = getattr(self, '_tool', None)
-        if tool is not None:
-            del self._tool
-            tool.registerMemberData(self, self.getId())
+        self.getTool().registerMemberData(self, self.getId())
 
     security.declarePublic('getUser')
     def getUser(self):

Modified: CMF/branches/2.1/CMFCore/MembershipTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/MembershipTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/MembershipTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -32,7 +32,6 @@
 from zope.component import queryUtility
 from zope.interface import implements
 
-from ActionProviderBase import ActionProviderBase
 from exceptions import AccessControl_Unauthorized
 from exceptions import BadRequest
 from interfaces import IMemberDataTool
@@ -58,7 +57,7 @@
 logger = logging.getLogger('CMFCore.MembershipTool')
 
 
-class MembershipTool(UniqueObject, Folder, ActionProviderBase):
+class MembershipTool(UniqueObject, Folder):
 
     """ This tool accesses member data through an acl_users object.
 
@@ -67,7 +66,7 @@
     """
 
     implements(IMembershipTool)
-    __implements__ = (z2IMembershipTool, ActionProviderBase.__implements__)
+    __implements__ = (z2IMembershipTool, )
 
     id = 'portal_membership'
     meta_type = 'CMF Membership Tool'
@@ -78,7 +77,6 @@
     manage_options=( ({ 'label' : 'Configuration'
                      , 'action' : 'manage_mapRoles'
                      },) +
-                     ActionProviderBase.manage_options +
                    ( { 'label' : 'Overview'
                      , 'action' : 'manage_overview'
                      },

Modified: CMF/branches/2.1/CMFCore/PortalFolder.py
===================================================================
--- CMF/branches/2.1/CMFCore/PortalFolder.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/PortalFolder.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -27,8 +27,6 @@
 from OFS.OrderSupport import OrderSupport
 from OFS.Folder import Folder
 
-from zope.component import getUtility
-from zope.component import queryUtility
 from zope.component.factory import Factory
 from zope.interface import implements
 
@@ -37,11 +35,9 @@
 from exceptions import AccessControl_Unauthorized
 from exceptions import BadRequest
 from exceptions import zExceptions_Unauthorized
-from interfaces import IContentTypeRegistry
 from interfaces import IFolderish
 from interfaces import IMutableMinimalDublinCore
 from interfaces import ISiteRoot
-from interfaces import ITypesTool
 from interfaces.Folderish import Folderish as z2IFolderish
 from permissions import AddPortalContent
 from permissions import AddPortalFolders
@@ -51,6 +47,7 @@
 from permissions import ManageProperties
 from permissions import View
 from utils import _checkPermission
+from utils import getToolByName
 
 
 class PortalFolderBase(DynamicType, CMFCatalogAware, Folder):
@@ -127,7 +124,7 @@
             this folder.
         """
         result = []
-        portal_types = getUtility(ITypesTool)
+        portal_types = getToolByName(self, 'portal_types')
         myType = portal_types.getTypeInfo(self)
 
         if myType is not None:
@@ -155,7 +152,7 @@
         pt = filt.get('portal_type', [])
         if isinstance(pt, basestring):
             pt = [pt]
-        types_tool = getUtility(ITypesTool)
+        types_tool = getToolByName(self, 'portal_types')
         allowed_types = types_tool.listContentTypes()
         if not pt:
             pt = allowed_types
@@ -286,7 +283,7 @@
         Returns -- Bare and empty object of the appropriate type (or None, if
         we don't know what to do)
         """
-        registry = queryUtility(IContentTypeRegistry)
+        registry = getToolByName(self, 'content_type_registry', None)
         if registry is None:
             return None
 
@@ -305,7 +302,7 @@
     def invokeFactory(self, type_name, id, RESPONSE=None, *args, **kw):
         """ Invokes the portal_types tool.
         """
-        pt = getUtility(ITypesTool)
+        pt = getToolByName(self, 'portal_types')
         myType = pt.getTypeInfo(self)
 
         if myType is not None:
@@ -436,7 +433,7 @@
 
             if type_name is not None:
 
-                pt = getUtility(ITypesTool)
+                pt = getToolByName(self, 'portal_types')
                 myType = pt.getTypeInfo(self)
 
                 if myType is not None and not myType.allowType(type_name):

Modified: CMF/branches/2.1/CMFCore/PortalObject.py
===================================================================
--- CMF/branches/2.1/CMFCore/PortalObject.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/PortalObject.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -15,8 +15,6 @@
 $Id$
 """
 
-from warnings import warn
-
 from five.localsitemanager import find_next_sitemanager
 from five.localsitemanager.registry import PersistentComponents
 from Globals import InitializeClass
@@ -59,9 +57,6 @@
         )
 
     def getSkinsFolderName(self):
-        warn('getSkinsFolderName is deprecated and will be removed in '
-             'CMF 2.3, please use "getUtility(ISkinsTool)" to retrieve '
-             'the skins tool object.', DeprecationWarning, stacklevel=2)
         return PORTAL_SKINS_TOOL_ID
 
     def getSiteManager(self):

Modified: CMF/branches/2.1/CMFCore/RegistrationTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/RegistrationTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/RegistrationTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -26,7 +26,6 @@
 from zope.component import getUtility
 from zope.interface import implements
 
-from ActionProviderBase import ActionProviderBase
 from interfaces import IMembershipTool
 from interfaces import IRegistrationTool
 from interfaces.portal_registration \
@@ -42,13 +41,13 @@
 from utils import postonly
 
 
-class RegistrationTool(UniqueObject, SimpleItem, ActionProviderBase):
+class RegistrationTool(UniqueObject, SimpleItem):
 
     """ Create and modify users by making calls to portal_membership.
     """
 
     implements(IRegistrationTool)
-    __implements__ = (z2IRegistrationTool, ActionProviderBase.__implements__)
+    __implements__ = (z2IRegistrationTool, )
 
     id = 'portal_registration'
     meta_type = 'CMF Registration Tool'
@@ -58,10 +57,12 @@
 
     security = ClassSecurityInfo()
 
-    manage_options = (ActionProviderBase.manage_options +
-                     ({ 'label' : 'Overview', 'action' : 'manage_overview' }
-                     ,{ 'label' : 'Configure', 'action' : 'manage_configuration' }
-                     ) + SimpleItem.manage_options)
+    manage_options = ( ({'label': 'Overview',
+                         'action': 'manage_overview'},
+                        {'label': 'Configure',
+                         'action': 'manage_configuration'})
+                     + SimpleItem.manage_options
+                     )
 
     #
     #   ZMI methods

Modified: CMF/branches/2.1/CMFCore/Skinnable.py
===================================================================
--- CMF/branches/2.1/CMFCore/Skinnable.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/Skinnable.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -21,7 +21,6 @@
 import logging
 from thread import get_ident
 from warnings import warn
-from zope.component import getSiteManager
 
 from AccessControl import ClassSecurityInfo
 from Acquisition import aq_base
@@ -29,10 +28,6 @@
 from OFS.ObjectManager import ObjectManager
 from ZODB.POSException import ConflictError
 
-from zope.component import queryUtility
-
-from Products.CMFCore.interfaces import ISkinsTool
-
 logger = logging.getLogger('CMFCore.Skinnable')
 
 
@@ -70,9 +65,6 @@
     security.declarePrivate('getSkinsFolderName')
     def getSkinsFolderName(self):
         # Not implemented.
-        warn('getSkinsFolderName is deprecated and will be removed in '
-             'CMF 2.3, please use "getUtility(ISkinsTool)" to retrieve '
-             'the skins tool object.', DeprecationWarning, stacklevel=2)
         return None
 
     def __getattr__(self, name):
@@ -108,26 +100,28 @@
         """Returns the requested skin.
         """
         skinob = None
-        sf = queryUtility(ISkinsTool)
+        sfn = self.getSkinsFolderName()
 
-        if sf is not None:
-           if name is not None:
-               skinob = sf.getSkinByName(name)
-           if skinob is None:
-               skinob = sf.getSkinByName(sf.getDefaultSkin())
+        if sfn is not None:
+            sf = getattr(self, sfn, None)
+            if sf is not None:
+               if name is not None:
+                   skinob = sf.getSkinByName(name)
                if skinob is None:
-                   skinob = sf.getSkinByPath('')
-
+                   skinob = sf.getSkinByName(sf.getDefaultSkin())
+                   if skinob is None:
+                       skinob = sf.getSkinByPath('')
         return skinob
 
     security.declarePublic('getSkinNameFromRequest')
     def getSkinNameFromRequest(self, REQUEST=None):
         '''Returns the skin name from the Request.'''
-        sf = queryUtility(ISkinsTool)
+        sfn = self.getSkinsFolderName()
+        if sfn is not None:
+            sf = getattr(self, sfn, None)
+            if sf is not None:
+                return REQUEST.get(sf.getRequestVarname(), None)
 
-        if sf is not None:
-            return REQUEST.get(sf.getRequestVarname(), None)
-
     security.declarePublic('changeSkin')
     def changeSkin(self, skinname, REQUEST=_MARKER):
         '''Change the current skin.
@@ -157,9 +151,11 @@
             if skinname is not None:
                 return skinname
         # nothing here, so assume the default skin
-        sf = queryUtility(ISkinsTool)
-        if sf is not None:
-            return sf.getDefaultSkin()
+        sfn = self.getSkinsFolderName()
+        if sfn is not None:
+            sf = getattr(self, sfn, None)
+            if sf is not None:
+                return sf.getDefaultSkin()
         # and if that fails...
         return None
 

Modified: CMF/branches/2.1/CMFCore/SkinsTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/SkinsTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/SkinsTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -44,7 +44,7 @@
 from permissions import View
 from SkinsContainer import SkinsContainer
 from utils import _dtmldir
-from utils import registerToolInterface
+from utils import getToolByName
 from utils import UniqueObject
 
 
@@ -309,8 +309,10 @@
     def updateSkinCookie(self):
         """ 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
         mtool = getUtility(IMembershipTool)
-        utool = getUtility(IURLTool)
+        utool = getToolByName(self, 'portal_url')
         member = mtool.getAuthenticatedMember()
         if hasattr(aq_base(member), 'getProperty'):
             mskin = member.getProperty('portal_skin', None)
@@ -343,9 +345,11 @@
     def clearSkinCookie(self):
         """ Expire the skin cookie.
         """
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on a non-utility tool and uses self.REQUEST
         req = self.REQUEST
         resp = req.RESPONSE
-        utool = getUtility(IURLTool)
+        utool = getToolByName(self, 'portal_url')
         portal_path = req['BASEPATH1'] + '/' + utool(1)
         resp.expireCookie(self.request_varname, path=portal_path)
 
@@ -375,5 +379,4 @@
             self.default_skin = skinname
 
 InitializeClass(SkinsTool)
-registerToolInterface('portal_skins', ISkinsTool)
 

Modified: CMF/branches/2.1/CMFCore/TypesTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/TypesTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/TypesTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -49,7 +49,6 @@
 from utils import _checkPermission
 from utils import _dtmldir
 from utils import _wwwdir
-from utils import registerToolInterface
 from utils import SimpleItemWithProperties
 from utils import UniqueObject
 
@@ -438,6 +437,8 @@
 
         Returns the object without calling _finishConstruction().
         """
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on self.REQUEST
         id = str(id)
 
         if self.product:
@@ -752,5 +753,4 @@
         return rval
 
 InitializeClass(TypesTool)
-registerToolInterface('portal_types', ITypesTool)
 

Modified: CMF/branches/2.1/CMFCore/URLTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/URLTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/URLTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -32,7 +32,6 @@
 from permissions import ManagePortal
 from permissions import View
 from utils import _dtmldir
-from utils import registerToolInterface
 from utils import UniqueObject
 
 
@@ -71,17 +70,17 @@
     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.
         """
-        site = queryUtility(ISiteRoot)
-        if site is None:
-            # fallback
-            return aq_parent(aq_inner(self))
-        return site
+        # 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) )
 
     security.declarePublic('getRelativeContentPath')
     def getRelativeContentPath(self, content):
@@ -107,4 +106,3 @@
         return '/'.join( self.getPortalObject().getPhysicalPath() )
 
 InitializeClass(URLTool)
-registerToolInterface('portal_url', IURLTool)

Modified: CMF/branches/2.1/CMFCore/UndoTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/UndoTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/UndoTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -22,7 +22,6 @@
 from zope.interface import implements
 
 from zope.component import queryUtility
-from ActionProviderBase import ActionProviderBase
 from exceptions import AccessControl_Unauthorized
 from interfaces import ISiteRoot
 from interfaces import IUndoTool
@@ -36,24 +35,24 @@
 from utils import UniqueObject
 
 
-class UndoTool(UniqueObject, SimpleItem, ActionProviderBase):
+class UndoTool(UniqueObject, SimpleItem):
 
     """ This tool is used to undo changes.
     """
 
     implements(IUndoTool)
-    __implements__ = (z2IUndoTool, ActionProviderBase.__implements__)
+    __implements__ = (z2IUndoTool, )
 
     id = 'portal_undo'
     meta_type = 'CMF Undo Tool'
 
     security = ClassSecurityInfo()
 
-    manage_options = ( ActionProviderBase.manage_options +
-                       SimpleItem.manage_options +
-                       ({ 'label' : 'Overview', 'action' : 'manage_overview' }
-                     ,
-                     ))
+    manage_options = ( SimpleItem.manage_options
+                     + ({'label': 'Overview',
+                         'action': 'manage_overview'},)
+                     )
+
     #
     #   ZMI methods
     #
@@ -72,7 +71,7 @@
         '''
         # arg list for undoable_transactions() changed in Zope 2.2.
         portal = queryUtility(ISiteRoot)
-        if site is None:
+        if portal is None:
             # fallback
             portal = self.aq_inner.aq_parent
 

Modified: CMF/branches/2.1/CMFCore/WorkflowTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/WorkflowTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/WorkflowTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -32,14 +32,13 @@
 
 from ActionProviderBase import ActionProviderBase
 from interfaces import IConfigurableWorkflowTool
-from interfaces import ITypesTool
 from interfaces import IWorkflowDefinition
 from interfaces import IWorkflowTool
 from interfaces.portal_workflow import portal_workflow as z2IWorkflowTool
 from permissions import ManagePortal
 from utils import _dtmldir
+from utils import getToolByName
 from utils import Message as _
-from utils import registerToolInterface
 from utils import UniqueObject
 from utils import postonly
 from WorkflowCore import ObjectDeleted
@@ -487,7 +486,9 @@
     def getDefaultChainFor(self, ob):
         """ Get the default chain, if applicable, for ob.
         """
-        types_tool = queryUtility(ITypesTool)
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on a non-utility tool
+        types_tool = getToolByName( self, 'portal_types', None )
         if ( types_tool is not None
             and types_tool.getTypeInfo( ob ) is not None ):
             return self._default_chain
@@ -535,7 +536,9 @@
 
         """ List the portal types which are available.
         """
-        pt = queryUtility(ITypesTool)
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on a non-utility tool
+        pt = getToolByName(self, 'portal_types', None)
         if pt is None:
             return ()
         else:
@@ -642,5 +645,4 @@
             ob.reindexObjectSecurity()
 
 InitializeClass(WorkflowTool)
-registerToolInterface('portal_workflow', IWorkflowTool)
 

Modified: CMF/branches/2.1/CMFCore/exportimport/actions.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/actions.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/actions.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -30,12 +30,9 @@
 from Products.CMFCore.interfaces import IActionsTool
 from Products.CMFCore.interfaces.portal_actions \
         import ActionProvider as z2IActionProvider
-from Products.CMFCore.utils import getToolInterface
+from Products.CMFCore.utils import getToolByName
 
 from zope.component import adapts
-from zope.component import getUtility
-from zope.component import getSiteManager
-from zope.component import queryUtility
 
 _SPECIAL_PROVIDERS = ('portal_actions', 'portal_types', 'portal_workflow')
 
@@ -148,8 +145,7 @@
     def _extractOldstyleActions(self, provider_id):
         # BBB: for CMF 1.6 profiles
         fragment = self._doc.createDocumentFragment()
-        provider_iface = getToolInterface(provider_id)
-        provider = getUtility(provider_iface)
+        provider = getToolByName(self.context, provider_id)
 
         if not (IActionProvider.providedBy(provider) or
                 z2IActionProvider.isImplementedBy(provider)):
@@ -250,16 +246,16 @@
 def importActionProviders(context):
     """Import actions tool.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.getUtility(IActionsTool)
+    site = context.getSite()
+    tool = getToolByName(site, 'portal_actions')
 
     importObjects(tool, '', context)
 
 def exportActionProviders(context):
     """Export actions tool.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.queryUtility(IActionsTool)
+    site = context.getSite()
+    tool = getToolByName(site, 'portal_actions', None)
     if tool is None:
         logger = context.getLogger('actions')
         logger.info('Nothing to export.')

Modified: CMF/branches/2.1/CMFCore/exportimport/catalog.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/catalog.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/catalog.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -15,11 +15,10 @@
 $Id$
 """
 
-from Products.CMFCore.interfaces import ICatalogTool
 from Products.GenericSetup.utils import exportObjects
 from Products.GenericSetup.utils import importObjects
 
-from zope.component import getSiteManager
+from Products.CMFCore.utils import getToolByName
 from zope.component import getUtility
 from zope.component import queryUtility
 
@@ -27,16 +26,16 @@
 def importCatalogTool(context):
     """Import catalog tool.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.getUtility(ICatalogTool)
+    site = context.getSite()
+    tool = getToolByName(site, 'portal_catalog')
 
     importObjects(tool, '', context)
 
 def exportCatalogTool(context):
     """Export catalog tool.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.queryUtility(ICatalogTool)
+    site = context.getSite()
+    tool = getToolByName(site, 'portal_catalog', None)
     if tool is None:
         logger = context.getLogger('catalog')
         logger.info('Nothing to export.')

Modified: CMF/branches/2.1/CMFCore/exportimport/content.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/content.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/content.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -21,14 +21,14 @@
 from ConfigParser import ConfigParser
 from StringIO import StringIO
 
-from zope.component import getUtility
 from zope.interface import implements
 from zope.interface import directlyProvides
 
 from Products.GenericSetup.interfaces import IFilesystemExporter
 from Products.GenericSetup.interfaces import IFilesystemImporter
 from Products.GenericSetup.content import _globtest
-from Products.CMFCore.interfaces import ITypesTool
+from Products.CMFCore.utils import getToolByName
+
 #
 #   setup_tool handlers
 #
@@ -181,7 +181,7 @@
         context = self.context
         properties = import_context.readDataFile('.properties',
                                                  '%s/%s' % (subdir, id))
-        tool = getUtility(ITypesTool)
+        tool = getToolByName(context, 'portal_types')
 
         try:
             tool.constructContent(portal_type, context, id)

Modified: CMF/branches/2.1/CMFCore/exportimport/contenttyperegistry.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/contenttyperegistry.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/contenttyperegistry.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -16,17 +16,14 @@
 """
 
 from zope.component import adapts
-from zope.component import getSiteManager
-from zope.component import getUtility
-from zope.component import queryUtility
 
-from Products.CMFCore.interfaces import IContentTypeRegistry
 from Products.GenericSetup.interfaces import ISetupEnviron
 from Products.GenericSetup.utils import exportObjects
 from Products.GenericSetup.utils import importObjects
 from Products.GenericSetup.utils import XMLAdapterBase
 
 from Products.CMFCore.interfaces import IContentTypeRegistry
+from Products.CMFCore.utils import getToolByName
 
 
 class ContentTypeRegistryXMLAdapter(XMLAdapterBase):
@@ -114,16 +111,16 @@
 def importContentTypeRegistry(context):
     """Import content type registry settings from an XML file.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.getUtility(IContentTypeRegistry)
+    site = context.getSite()
+    tool = getToolByName(site, 'content_type_registry')
 
     importObjects(tool, '', context)
 
 def exportContentTypeRegistry(context):
     """Export content type registry settings as an XML file.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.queryUtility(IContentTypeRegistry)
+    site = context.getSite()
+    tool = getToolByName(site, 'content_type_registry', None)
     if tool is None:
         logger = context.getLogger('contenttypes')
         logger.info('Nothing to export.')

Modified: CMF/branches/2.1/CMFCore/exportimport/cookieauth.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/cookieauth.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/cookieauth.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -27,6 +27,7 @@
 from Products.GenericSetup.utils import XMLAdapterBase
 
 from Products.CMFCore.interfaces import ICookieCrumbler
+from Products.CMFCore.utils import getToolByName
 
 
 class CookieCrumblerXMLAdapter(XMLAdapterBase, PropertyManagerHelpers):
@@ -63,16 +64,16 @@
 def importCookieCrumbler(context):
     """Import cookie crumbler settings from an XML file.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.getUtility(ICookieCrumbler)
+    site = context.getSite()
+    tool = getToolByName(site, 'cookie_authentication')
 
     importObjects(tool, '', context)
 
 def exportCookieCrumbler(context):
     """Export cookie crumbler settings as an XML file.
     """
-    sm = getSiteManager(context.getSite())
-    tool = queryUtility(ICookieCrumbler)
+    site = context.getSite()
+    tool = getToolByName(site, 'cookie_authentication', None)
     if tool is None:
         logger = context.getLogger('cookies')
         logger.info('Nothing to export.')

Modified: CMF/branches/2.1/CMFCore/exportimport/skins.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/skins.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/skins.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -17,11 +17,7 @@
 
 from Acquisition import aq_inner
 from Acquisition import aq_parent
-
 from zope.component import adapts
-from zope.component import getSiteManager
-from zope.component import getUtility
-from zope.component import queryUtility
 
 from Products.GenericSetup.interfaces import ISetupEnviron
 from Products.GenericSetup.utils import exportObjects
@@ -32,6 +28,7 @@
 
 from Products.CMFCore.interfaces import IDirectoryView
 from Products.CMFCore.interfaces import ISkinsTool
+from Products.CMFCore.utils import getToolByName
 
 
 class DirectoryViewNodeAdapter(NodeAdapterBase):
@@ -221,16 +218,16 @@
 def importSkinsTool(context):
     """Import skins tool FSDirViews and skin paths from an XML file.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.getUtility(ISkinsTool)
+    site = context.getSite()
+    tool = getToolByName(site, 'portal_skins')
 
     importObjects(tool, '', context)
 
 def exportSkinsTool(context):
     """Export skins tool FSDVs and skin paths as an XML file.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.queryUtility(ISkinsTool)
+    site = context.getSite()
+    tool = getToolByName(site, 'portal_skins', None)
     if tool is None:
         logger = context.getLogger('skins')
         logger.info('Nothing to export.')

Modified: CMF/branches/2.1/CMFCore/exportimport/tests/test_actions.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/tests/test_actions.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/tests/test_actions.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -31,7 +31,6 @@
 from Products.CMFCore.interfaces.portal_actions \
     import ActionProvider as IActionProvider
 from Products.CMFCore.tests.base.dummy import DummySite
-from Products.CMFCore.utils import registerToolInterface
 from Products.GenericSetup.testing import BodyAdapterTestCase
 from Products.GenericSetup.testing import NodeAdapterTestCase
 from Products.GenericSetup.tests.common import BaseRegistryTests
@@ -202,15 +201,7 @@
 </object>
 """
 
-class IFoo(Interface):
-    """ Foo interface """
-registerToolInterface('portal_foo', IFoo)
 
-class IBar(Interface):
-    """ Bar interface """
-registerToolInterface('portal_bar', IBar)
-
-
 class DummyTool(OrderedFolder, ActionProviderBase):
 
     __implements__ = IActionProvider
@@ -341,7 +332,6 @@
         self.assertEqual(obj.action_providers[0], 'portal_actions')
 
     def setUp(self):
-        from Products.CMFCore.interfaces import IActionsTool
         from Products.CMFCore.ActionsTool import ActionsTool
 
         BodyAdapterTestCase.setUp(self)
@@ -350,16 +340,10 @@
         self._obj = site.portal_actions
         self._BODY = _ACTIONSTOOL_BODY
 
-        # utility registration
-        sm = getSiteManager()
-        sm.registerUtility(self._obj, IActionsTool)
 
-
 class _ActionSetup(BaseRegistryTests):
 
     def _initSite(self, foo=2, bar=2):
-        from zope.component import getSiteManager
-
         self.root.site = DummySite('site')
         site = self.root.site
         site.portal_membership = DummyMembershipTool()
@@ -367,12 +351,8 @@
         site.portal_actions = DummyActionsTool()
         site.portal_actions.addActionProvider('portal_actions')
 
-        sm = getSiteManager(site)
-        sm.registerUtility(site.portal_actions, IActionsTool)
-
         if foo > 0:
             site.portal_foo = DummyTool()
-            sm.registerUtility(site.portal_foo, IFoo)
 
         if foo > 1:
             site.portal_foo.addAction(id='foo',
@@ -386,7 +366,6 @@
 
         if bar > 0:
             site.portal_bar = DummyTool()
-            sm.registerUtility(site.portal_bar, IBar)
 
         if bar > 1:
             site.portal_bar.addAction(id='bar',

Modified: CMF/branches/2.1/CMFCore/exportimport/tests/test_catalog.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/tests/test_catalog.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/tests/test_catalog.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -25,14 +25,11 @@
 from Products.ZCTextIndex.Lexicon import StopWordRemover
 from Products.ZCTextIndex.ZCTextIndex import PLexicon
 
-from zope.component import getSiteManager
-
 from Products.GenericSetup.tests.common import BaseRegistryTests
 from Products.GenericSetup.tests.common import DummyExportContext
 from Products.GenericSetup.tests.common import DummyImportContext
 
 from Products.CMFCore.CatalogTool import CatalogTool
-from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.testing import ExportImportZCMLLayer
 
 _EMPTY_EXPORT = """\
@@ -82,9 +79,6 @@
         site = self.root.site = Folder(id='site')
         ctool = site.portal_catalog = CatalogTool()
 
-        sm = getSiteManager(site)
-        sm.registerUtility(ctool, ICatalogTool)
-
         for obj_id in ctool.objectIds():
             ctool._delObject(obj_id)
         for idx_id in ctool.indexes():

Modified: CMF/branches/2.1/CMFCore/exportimport/tests/test_content.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/tests/test_content.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/tests/test_content.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -22,10 +22,8 @@
 from ConfigParser import ConfigParser
 from StringIO import StringIO
 
-from zope.component import getSiteManager
 from zope.testing.cleanup import cleanUp
 
-from Products.CMFCore.interfaces import ITypesTool
 from Products.GenericSetup.tests.common import DummyExportContext
 from Products.GenericSetup.tests.common import DummyImportContext
 
@@ -752,9 +750,7 @@
     folder = PortalFolder(id)
     folder.portal_type = TEST_FOLDER
     if site_folder:
-        sm = getSiteManager()
         tool = folder.portal_types = TypesTool()
-        sm.registerUtility(tool, ITypesTool)
         tool._setObject(TEST_CSV_AWARE, _TypeInfo(TEST_CSV_AWARE))
         tool._setObject(TEST_INI_AWARE, _TypeInfo(TEST_INI_AWARE))
         tool._setObject(TEST_CONTENT, _TypeInfo(TEST_CONTENT))

Modified: CMF/branches/2.1/CMFCore/exportimport/tests/test_contenttyperegistry.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/tests/test_contenttyperegistry.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/tests/test_contenttyperegistry.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -20,9 +20,6 @@
 
 from OFS.Folder import Folder
 
-from zope.component import getSiteManager
-
-from Products.CMFCore.interfaces import IContentTypeRegistry
 from Products.GenericSetup.testing import BodyAdapterTestCase
 from Products.GenericSetup.tests.common import BaseRegistryTests
 from Products.GenericSetup.tests.common import DummyExportContext
@@ -158,9 +155,6 @@
         ctr = ContentTypeRegistry()
         site._setObject( ctr.getId(), ctr )
 
-        sm = getSiteManager(site)
-        sm.registerUtility(site.content_type_registry, IContentTypeRegistry)
-
         if mit_predikat:
             for (predicate_id, predicate_type, edit_args, content_type_name
                 ) in _TEST_PREDICATES:

Modified: CMF/branches/2.1/CMFCore/exportimport/tests/test_cookieauth.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/tests/test_cookieauth.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/tests/test_cookieauth.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -20,15 +20,12 @@
 
 from OFS.Folder import Folder
 
-from zope.component import getSiteManager
-
 from Products.GenericSetup.testing import BodyAdapterTestCase
 from Products.GenericSetup.tests.common import BaseRegistryTests
 from Products.GenericSetup.tests.common import DummyExportContext
 from Products.GenericSetup.tests.common import DummyImportContext
 
 from Products.CMFCore.CookieCrumbler import CookieCrumbler
-from Products.CMFCore.interfaces import ICookieCrumbler
 from Products.CMFCore.testing import ExportImportZCMLLayer
 
 _COOKIECRUMBLER_BODY = """\
@@ -105,9 +102,6 @@
         site = self.root.site
         cc = site.cookie_authentication = CookieCrumbler('foo_cookiecrumbler')
 
-        sm = getSiteManager()
-        sm.registerUtility(site.cookie_authentication, ICookieCrumbler)
- 
         if use_changed:
             cc.auth_cookie = 'value1'
             cc.cache_header_value = 'value2'

Modified: CMF/branches/2.1/CMFCore/exportimport/tests/test_skins.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/tests/test_skins.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/tests/test_skins.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -22,8 +22,6 @@
 import os
 
 from OFS.Folder import Folder
-
-from zope.component import getSiteManager
 from zope.interface import implements
 
 from Products.GenericSetup.testing import BodyAdapterTestCase
@@ -299,9 +297,6 @@
                                          id)) for id in ids ]
         site._setObject('portal_skins', DummySkinsTool(selections, fsdvs))
 
-        sm = getSiteManager(site)
-        sm.registerUtility(site.portal_skins, ISkinsTool)
-        
         site.REQUEST = 'exists'
         return site
 

Modified: CMF/branches/2.1/CMFCore/exportimport/tests/test_typeinfo.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/tests/test_typeinfo.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/tests/test_typeinfo.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -20,14 +20,11 @@
 
 from OFS.Folder import Folder
 
-from zope.component import getSiteManager
-
 from Products.GenericSetup.testing import BodyAdapterTestCase
 from Products.GenericSetup.tests.common import BaseRegistryTests
 from Products.GenericSetup.tests.common import DummyExportContext
 from Products.GenericSetup.tests.common import DummyImportContext
 
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.permissions import View
 from Products.CMFCore.permissions import AccessContentsInformation
 from Products.CMFCore.permissions import ModifyPortalContent
@@ -328,9 +325,6 @@
         site = self.root.site
         ttool = site.portal_types = TypesTool()
 
-        sm = getSiteManager()
-        sm.registerUtility(ttool, ITypesTool)
-
         if foo == 1:
             fti = _TI_LIST[0].copy()
             ttool._setObject(fti['id'], FactoryTypeInformation(**fti))

Modified: CMF/branches/2.1/CMFCore/exportimport/tests/test_workflow.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/tests/test_workflow.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/tests/test_workflow.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -19,8 +19,6 @@
 import Testing
 
 from OFS.Folder import Folder
-
-from zope.component import getSiteManager
 from zope.interface import implements
 
 from Products.GenericSetup.testing import BodyAdapterTestCase
@@ -165,10 +163,6 @@
         self.root.site = Folder(id='site')
         site = self.root.site
         self.root.site.portal_workflow = DummyWorkflowTool()
-        sm = getSiteManager()
-        sm.registerUtility( self.root.site.portal_workflow
-                          , IConfigurableWorkflowTool
-                          )
         return site
 
 

Modified: CMF/branches/2.1/CMFCore/exportimport/typeinfo.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/typeinfo.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/typeinfo.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -16,7 +16,6 @@
 """
 
 from zope.component import adapts
-from zope.component import getSiteManager
 
 from Products.GenericSetup.interfaces import ISetupEnviron
 from Products.GenericSetup.utils import exportObjects
@@ -28,6 +27,7 @@
 
 from Products.CMFCore.interfaces import ITypeInformation
 from Products.CMFCore.interfaces import ITypesTool
+from Products.CMFCore.utils import getToolByName
 
 
 class TypeInformationXMLAdapter(XMLAdapterBase, PropertyManagerHelpers):
@@ -177,16 +177,16 @@
 def importTypesTool(context):
     """Import types tool and content types from XML files.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.getUtility(ITypesTool)
+    site = context.getSite()
+    tool = getToolByName(site, 'portal_types')
 
     importObjects(tool, '', context)
 
 def exportTypesTool(context):
     """Export types tool content types as a set of XML files.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.queryUtility(ITypesTool)
+    site = context.getSite()
+    tool = getToolByName(site, 'portal_types', None)
     if tool is None:
         logger = context.getLogger('types')
         logger.info('Nothing to export.')

Modified: CMF/branches/2.1/CMFCore/exportimport/workflow.py
===================================================================
--- CMF/branches/2.1/CMFCore/exportimport/workflow.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/exportimport/workflow.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -16,7 +16,6 @@
 """
 
 from zope.component import adapts
-from zope.component import getSiteManager
 
 from Products.GenericSetup.interfaces import ISetupEnviron
 from Products.GenericSetup.utils import exportObjects
@@ -26,6 +25,7 @@
 from Products.GenericSetup.utils import XMLAdapterBase
 
 from Products.CMFCore.interfaces import IConfigurableWorkflowTool
+from Products.CMFCore.utils import getToolByName
 
 
 class WorkflowToolXMLAdapter(XMLAdapterBase, ObjectManagerHelpers,
@@ -120,16 +120,16 @@
 def importWorkflowTool(context):
     """Import workflow tool and contained workflow definitions from XML files.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.getUtility(IConfigurableWorkflowTool)
+    site = context.getSite()
+    tool = getToolByName(site, 'portal_workflow')
 
     importObjects(tool, '', context)
 
 def exportWorkflowTool(context):
     """Export workflow tool and contained workflow definitions as XML files.
     """
-    sm = getSiteManager(context.getSite())
-    tool = sm.queryUtility(IConfigurableWorkflowTool)
+    site = context.getSite()
+    tool = getToolByName(site, 'portal_workflow', None)
     if tool is None:
         logger = context.getLogger('workflow')
         logger.info('Nothing to export.')

Modified: CMF/branches/2.1/CMFCore/tests/base/dummy.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/base/dummy.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/base/dummy.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -263,6 +263,8 @@
     def all_meta_types(self):
         return ({'name': 'Dummy', 'permission': 'addFoo'},)
 
+    def getTypeInfo(self):
+        return self.portal_types.getTypeInfo(self)  # Can return None.
 
 class DummySite(DummyFolder):
     """ A dummy portal folder.

Modified: CMF/branches/2.1/CMFCore/tests/test_ActionProviderBase.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_ActionProviderBase.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_ActionProviderBase.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -22,7 +22,6 @@
 from zope.testing.cleanup import cleanUp
 
 from Products.CMFCore.interfaces import IMembershipTool
-from Products.CMFCore.interfaces import ISiteRoot
 from Products.CMFCore.tests.base.dummy import DummySite
 from Products.CMFCore.tests.base.dummy import DummyTool
 from Products.CMFCore.tests.base.testcase import SecurityRequestTest
@@ -68,7 +67,7 @@
         SecurityRequestTest.setUp(self)
         self.site = DummySite('site').__of__(self.root)
         sm = getSiteManager()
-        sm.registerUtility(self.site, ISiteRoot)
+        utool = self.site._setObject( 'portal_url', DummyTool() )
         sm.registerUtility(DummyTool(), IMembershipTool)
 
     def tearDown(self):

Modified: CMF/branches/2.1/CMFCore/tests/test_ActionsTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_ActionsTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_ActionsTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -26,7 +26,6 @@
 from Products.CMFCore.ActionInformation import ActionInformation
 from Products.CMFCore.Expression import Expression
 from Products.CMFCore.MembershipTool import MembershipTool
-from Products.CMFCore.interfaces import IURLTool
 from Products.CMFCore.tests.base.testcase import SecurityRequestTest
 from Products.CMFCore.URLTool import URLTool
 from Products.CMFCore.interfaces import IMembershipTool
@@ -117,7 +116,6 @@
         sm.registerUtility(root, ISiteRoot)
         root._setObject( 'portal_actions', self._makeOne() )
         root._setObject( 'portal_url', URLTool() )
-        sm.registerUtility(root.portal_url, IURLTool)
         root._setObject( 'foo', URLTool() )
         root._setObject('portal_membership', MembershipTool())
         sm.registerUtility(root.portal_membership, IMembershipTool)

Modified: CMF/branches/2.1/CMFCore/tests/test_CMFCatalogAware.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_CMFCatalogAware.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_CMFCatalogAware.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -23,13 +23,10 @@
 from OFS.Folder import Folder
 from OFS.SimpleItem import SimpleItem
 
-from zope.component import getSiteManager
 from zope.interface import implements
 
 from Products.CMFCore.CMFCatalogAware import CMFCatalogAware
 from Products.CMFCore.exceptions import NotFound
-from Products.CMFCore.interfaces import ICatalogTool
-from Products.CMFCore.interfaces import IConfigurableWorkflowTool
 from Products.CMFCore.interfaces import IContentish
 from Products.CMFCore.testing import EventZCMLLayer
 from Products.CMFCore.testing import TraversingZCMLLayer
@@ -126,11 +123,8 @@
         self.root = DummyRoot('')
         self.root.site = SimpleFolder('site')
         self.site = self.root.site
-        sm = getSiteManager(self.site)
         self.site._setObject('portal_catalog', DummyCatalog())
-        sm.registerUtility(self.site.portal_catalog, ICatalogTool)
         self.site._setObject('portal_workflow', DummyWorkflowTool())
-        sm.registerUtility(self.site.portal_workflow, IConfigurableWorkflowTool)
         self.site.foo = TheClass('foo')
 
     def tearDown(self):
@@ -229,10 +223,8 @@
 
     def _makeSite(self):
         self.app._setObject('site', SimpleFolder('site'))
-        sm = getSiteManager(self.app.site)
         site = self.app._getOb('site')
         site._setObject('portal_catalog', DummyCatalog())
-        sm.registerUtility(site.portal_catalog, ICatalogTool)
         site._setObject('portal_workflow', DummyWorkflowTool())
         # Hack, we need a _p_mtime for the file, so we make sure that it
         # has one. We use a subtransaction, which means we can rollback

Modified: CMF/branches/2.1/CMFCore/tests/test_CachingPolicyManager.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_CachingPolicyManager.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_CachingPolicyManager.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -31,7 +31,6 @@
 
 from Products.CMFCore.FSPageTemplate import FSPageTemplate
 from Products.CMFCore.FSDTMLMethod import FSDTMLMethod
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.testing import FunctionalZCMLLayer
 from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyContent
@@ -655,10 +654,8 @@
         now = DateTime()
 
         # Create a fake portal and the tools we need
-        sm = getSiteManager()
         self.portal = DummySite(id='portal').__of__(self.root)
         self.portal._setObject('portal_types', DummyTool())
-        sm.registerUtility(self.portal.portal_types, ITypesTool)
 
         # This is a FSPageTemplate that will be used as the View for
         # our content objects. It doesn't matter what it returns.

Modified: CMF/branches/2.1/CMFCore/tests/test_DynamicType.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_DynamicType.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_DynamicType.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -81,7 +81,6 @@
         sm = getSiteManager()
         self.site = DummySite('site')
         self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(self.site.portal_types, ITypesTool)
         fti = FTIDATA_CMF15[0].copy()
         self.site.portal_types._setObject( 'Dummy Content 15', FTI(**fti) )
         self.site._setObject( 'foo', DummyContent() )
@@ -163,11 +162,10 @@
         SecurityRequestTest.setUp(self)
         self.site = DummySite('site').__of__(self.root)
         sm = getSiteManager()
-        sm.registerUtility(self.site, ISiteRoot)
         self.site._setObject( 'portal_membership', DummyTool() )
         sm.registerUtility(self.site.portal_membership, IMembershipTool)
         self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(self.site.portal_types, ITypesTool)
+        self.site._setObject( 'portal_url', DummyTool() )
         fti = FTIDATA_CMF15[0].copy()
         self.site.portal_types._setObject( 'Dummy Content 15', FTI(**fti) )
         self.site._setObject( 'foo', DummyContent() )

Modified: CMF/branches/2.1/CMFCore/tests/test_FSDTMLMethod.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_FSDTMLMethod.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_FSDTMLMethod.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -24,11 +24,12 @@
 from DateTime import DateTime
 from OFS.Folder import Folder
 from Products.StandardCacheManagers import RAMCacheManager
+from zope.app.component.hooks import setHooks
+from zope.component import getSiteManager
 
 from Products.CMFCore.FSDTMLMethod import FSDTMLMethod
 from Products.CMFCore.FSMetadata import FSMetadata
 from Products.CMFCore.interfaces import ICachingPolicyManager
-from Products.CMFCore.interfaces import ISkinsTool
 from Products.CMFCore.tests.base.dummy import DummyCachingManager
 from Products.CMFCore.tests.base.dummy import DummyCachingManagerWithPolicy
 from Products.CMFCore.tests.base.testcase import FSDVTest
@@ -36,10 +37,7 @@
 from Products.CMFCore.tests.base.testcase import SecurityTest
 from Products.CMFCore.tests.base.dummy import DummyContent
 
-from zope.app.component.hooks import setHooks
-from zope.component import getSiteManager
 
-
 class FSDTMLMaker(FSDVTest):
 
     def _makeOne( self, id, filename ):
@@ -122,8 +120,6 @@
 
         self.root._setObject( 'portal_skins', Folder( 'portal_skins' ) )
         self.skins = self.root.portal_skins
-        sm = getSiteManager()
-        sm.registerUtility(self.skins, ISkinsTool)
 
         self.skins._setObject( 'custom', Folder( 'custom' ) )
         self.custom = self.skins.custom

Modified: CMF/branches/2.1/CMFCore/tests/test_FSPageTemplate.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_FSPageTemplate.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_FSPageTemplate.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -33,7 +33,6 @@
 from Products.CMFCore.FSPageTemplate import FSPageTemplate
 from Products.CMFCore.FSMetadata import FSMetadata
 from Products.CMFCore.interfaces import ICachingPolicyManager
-from Products.CMFCore.interfaces import ISkinsTool
 from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyCachingManager
 from Products.CMFCore.tests.base.testcase import FSDVTest
@@ -168,8 +167,6 @@
 
         self.root._setObject( 'portal_skins', Folder( 'portal_skins' ) )
         self.skins = self.root.portal_skins
-        sm = getSiteManager()
-        sm.registerUtility(self.skins, ISkinsTool)
 
         self.skins._setObject( 'custom', Folder( 'custom' ) )
         self.custom = self.skins.custom

Modified: CMF/branches/2.1/CMFCore/tests/test_FSPropertiesObject.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_FSPropertiesObject.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_FSPropertiesObject.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,12 +1,11 @@
 import unittest
 
 from Acquisition import aq_base
-from zope.component import getSiteManager
 
-from Products.CMFCore.interfaces import ISkinsTool
 from Products.CMFCore.tests.base.testcase import FSDVTest
 from Products.CMFCore.tests.base.testcase import SecurityTest
 
+
 class FSPOTests(SecurityTest, FSDVTest):
 
     def setUp( self ):
@@ -31,8 +30,6 @@
 
         self.root._setObject( 'portal_skins', Folder( 'portal_skins' ) )
         skins = self.root.portal_skins
-        sm = getSiteManager()
-        sm.registerUtility(skins, ISkinsTool)
 
         skins._setObject( 'custom', Folder( 'custom' ) )
         custom = skins.custom

Modified: CMF/branches/2.1/CMFCore/tests/test_FSPythonScript.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_FSPythonScript.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_FSPythonScript.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -29,11 +29,8 @@
 from OFS.SimpleItem import SimpleItem
 from Products.StandardCacheManagers import RAMCacheManager
 
-from zope.component import getSiteManager
-
 from Products.CMFCore.FSMetadata import FSMetadata
 from Products.CMFCore.FSPythonScript import FSPythonScript
-from Products.CMFCore.interfaces import ISkinsTool
 from Products.CMFCore.tests.base.testcase import FSDVTest
 from Products.CMFCore.tests.base.testcase import SecurityTest
 from Products.CMFCore.tests.base.testcase import WarningInterceptor
@@ -101,8 +98,6 @@
         root = self.root
         root._setObject( 'portal_skins', Folder( 'portal_skins' ) )
         tool = self.root.portal_skins
-        sm = getSiteManager()
-        sm.registerUtility(tool, ISkinsTool)
 
         tool._setObject( 'custom', Folder( 'custom' ) )
         custom = tool.custom

Modified: CMF/branches/2.1/CMFCore/tests/test_FSReSTMethod.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_FSReSTMethod.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_FSReSTMethod.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -25,7 +25,6 @@
 from zope.testing.cleanup import cleanUp
 
 from Products.CMFCore.interfaces import ICachingPolicyManager
-from Products.CMFCore.interfaces import ISkinsTool
 from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.testcase import FSDVTest
 from Products.CMFCore.tests.base.testcase import RequestTest
@@ -174,8 +173,6 @@
 
         self.root._setObject( 'portal_skins', Folder( 'portal_skins' ) )
         self.skins = self.root.portal_skins
-        sm = getSiteManager()
-        sm.registerUtility(self.skins, ISkinsTool)
 
         self.skins._setObject( 'custom', Folder( 'custom' ) )
         self.custom = self.skins.custom

Modified: CMF/branches/2.1/CMFCore/tests/test_FSSTXMethod.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_FSSTXMethod.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_FSSTXMethod.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -25,7 +25,6 @@
 from zope.testing.cleanup import cleanUp
 
 from Products.CMFCore.interfaces import ICachingPolicyManager
-from Products.CMFCore.interfaces import ISkinsTool
 from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.testcase import FSDVTest
 from Products.CMFCore.tests.base.testcase import RequestTest
@@ -208,8 +207,6 @@
 
         self.root._setObject( 'portal_skins', Folder( 'portal_skins' ) )
         self.skins = self.root.portal_skins
-        sm = getSiteManager()
-        sm.registerUtility(self.skins, ISkinsTool)
 
         self.skins._setObject( 'custom', Folder( 'custom' ) )
         self.custom = self.skins.custom

Modified: CMF/branches/2.1/CMFCore/tests/test_FSZSQLMethod.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_FSZSQLMethod.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_FSZSQLMethod.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -7,11 +7,8 @@
 from Acquisition import aq_base
 from OFS.Folder import Folder
 
-from zope.component import getSiteManager
-
 from Products.CMFCore.FSMetadata import FSMetadata
 from Products.CMFCore.FSZSQLMethod import FSZSQLMethod
-from Products.CMFCore.interfaces import ISkinsTool
 from Products.CMFCore.tests.base.testcase import FSDVTest
 from Products.CMFCore.tests.base.testcase import SecurityTest
 
@@ -53,8 +50,6 @@
 
         self.root._setObject( 'portal_skins', Folder( 'portal_skins' ) )
         self.skins = self.root.portal_skins
-        sm = getSiteManager()
-        sm.registerUtility(self.skins, ISkinsTool)
 
         self.skins._setObject( 'custom', Folder( 'custom' ) )
         self.custom = self.skins.custom

Modified: CMF/branches/2.1/CMFCore/tests/test_MemberDataTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_MemberDataTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_MemberDataTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -81,22 +81,17 @@
 
     def test_z2interfaces(self):
         from Interface.Verify import verifyClass
-        from Products.CMFCore.interfaces.portal_actions \
-                import ActionProvider as IActionProvider
         from Products.CMFCore.interfaces.portal_memberdata \
                 import portal_memberdata as IMemberDataTool
         from Products.CMFCore.MemberDataTool import MemberDataTool
 
-        verifyClass(IActionProvider, MemberDataTool)
         verifyClass(IMemberDataTool, MemberDataTool)
 
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
-        from Products.CMFCore.interfaces import IActionProvider
         from Products.CMFCore.interfaces import IMemberDataTool
         from Products.CMFCore.MemberDataTool import MemberDataTool
 
-        verifyClass(IActionProvider, MemberDataTool)
         verifyClass(IMemberDataTool, MemberDataTool)
 
     def test_deleteMemberData(self):

Modified: CMF/branches/2.1/CMFCore/tests/test_MembershipTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_MembershipTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_MembershipTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -40,22 +40,17 @@
 
     def test_z2interfaces(self):
         from Interface.Verify import verifyClass
-        from Products.CMFCore.interfaces.portal_actions \
-                import ActionProvider as IActionProvider
         from Products.CMFCore.interfaces.portal_membership \
                 import portal_membership as IMembershipTool
         from Products.CMFCore.MembershipTool import MembershipTool
 
-        verifyClass(IActionProvider, MembershipTool)
         verifyClass(IMembershipTool, MembershipTool)
 
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
-        from Products.CMFCore.interfaces import IActionProvider
         from Products.CMFCore.interfaces import IMembershipTool
         from Products.CMFCore.MembershipTool import MembershipTool
 
-        verifyClass(IActionProvider, MembershipTool)
         verifyClass(IMembershipTool, MembershipTool)
 
 

Modified: CMF/branches/2.1/CMFCore/tests/test_OpaqueItems.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_OpaqueItems.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_OpaqueItems.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -18,13 +18,11 @@
 import unittest
 import Testing
 
-from zope.component import getSiteManager
 from zope.interface import implements
 
 from Products.CMFCore.interfaces import ICallableOpaqueItem
 from Products.CMFCore.interfaces import ICallableOpaqueItemEvents
 from Products.CMFCore.interfaces import IContentish
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.interfaces.IOpaqueItems \
         import ICallableOpaqueItem as z2ICallableOpaqueItem
 from Products.CMFCore.interfaces.IOpaqueItems \
@@ -148,11 +146,9 @@
         SecurityTest.setUp(self)
 
         root = self.root
-        sm = getSiteManager()
 
         # setting up types tool
         root._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(root.portal_types, ITypesTool)
 
         # setup portal
         try:

Modified: CMF/branches/2.1/CMFCore/tests/test_PortalContent.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_PortalContent.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_PortalContent.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -26,7 +26,6 @@
 from zope.testing.cleanup import cleanUp
 
 from Products.CMFCore.exceptions import NotFound
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.testing import TraversingEventZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummyObject
@@ -62,14 +61,11 @@
         verifyClass(IDynamicType, PortalContent)
 
     def _setupCallTests(self, aliases):
-        sm = getSiteManager()
-
         # root
         root = Folder( 'root' )
 
         # set up dummy type info with problematic double-default alias
         root._setObject( 'portal_types', DummyTool() )
-        sm.registerUtility(root.portal_types, ITypesTool)
         root.portal_types._type_actions = aliases
 
         # dummy content and skin

Modified: CMF/branches/2.1/CMFCore/tests/test_PortalFolder.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_PortalFolder.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_PortalFolder.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -33,7 +33,6 @@
 
 from Products.CMFCore.CatalogTool import CatalogTool
 from Products.CMFCore.exceptions import BadRequest
-from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.testing import ConformsToFolder
 from Products.CMFCore.testing import FunctionalZCMLLayer
@@ -78,7 +77,6 @@
         newSecurityManager(None, acl_users.all_powerful_Oz)
 
         ttool = self.site._setObject('portal_types', TypesTool())
-        sm.registerUtility(self.site.portal_types, ITypesTool)
         ttool._setObject(self._PORTAL_TYPE,
                          FTI(id=self._PORTAL_TYPE,
                              title='Folder or Directory',
@@ -146,9 +144,7 @@
         verifyClass(IOrderedContainer, self._getTargetClass())
 
     def test_contents_methods(self):
-        sm = getSiteManager(self.site)
         ttool = self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(ttool, ITypesTool)
         f = self._makeOne('foo')
         self.assertEqual( f.objectValues(), [] )
         self.assertEqual( f.contentIds(), [] )
@@ -220,12 +216,9 @@
         # Test is a new object does get cataloged upon _setObject
         # and uncataloged upon manage_deleteObjects
         #
-        sm = getSiteManager(self.site)
         test = self._makeOne('test')
         ttool = self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(ttool, ITypesTool)
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
-        sm.registerUtility(ctool, ICatalogTool)
         self.assertEqual( len(ctool), 0 )
 
         test._setObject( 'foo', DummyContent( 'foo' , catalog=1 ) )
@@ -245,11 +238,8 @@
         # Test to ensure a portal folder itself is *not* cataloged upon
         # instantiation (Tracker issue 309)
         #
-        sm = getSiteManager(self.site)
         ttool = self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(ttool, ITypesTool)
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
-        sm.registerUtility(ctool, ICatalogTool)
         wftool = self.site._setObject( 'portal_workflow', WorkflowTool() )
         test = self._makeOne('test')
         wftool.notifyCreated(test)
@@ -263,12 +253,9 @@
         #
         from Products.CMFCore.PortalFolder import PortalFolder
 
-        sm = getSiteManager(self.site)
         test = self._makeOne('test')
         ttool = self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(ttool, ITypesTool)
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
-        sm.registerUtility(ctool, ICatalogTool)
         self.assertEqual( len(ctool), 0 )
 
         test._setObject( 'sub', PortalFolder( 'sub', '' ) )
@@ -293,11 +280,9 @@
         #
         from Products.CMFCore.PortalFolder import PortalFolder
 
-        sm = getSiteManager(self.site)
         test = self._makeOne('test')
 
         ttool = self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(ttool, ITypesTool)
         ttool._setObject( 'Folder'
                         , FTI( id='Folder'
                              , title='Folder or Directory'
@@ -348,9 +333,7 @@
         #
         #   _verifyObjectPaste() should honor allowed content types
         #
-        sm = getSiteManager(self.site)
         ttool = self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(ttool, ITypesTool)
         fti = FTIDATA_DUMMY[0].copy()
         ttool._setObject( 'Dummy Content', FTI(**fti) )
         ttool._setObject( 'Folder', FTI(**fti) )
@@ -398,11 +381,9 @@
         self.assertRaises(BadRequest, test._checkId, 'acl_users')
 
     def test__checkId_MethodAlias(self):
-        sm = getSiteManager(self.site)
         test = self._makeOne('test')
         test._setPortalTypeName('Dummy Content 15')
         ttool = self.site._setObject('portal_types', TypesTool())
-        sm.registerUtility(self.site.portal_types, ITypesTool)
         ttool._setObject('Dummy Content 15', FTI(**FTIDATA_CMF15[0]))
         acl_users = self.site._setObject('acl_users', DummyUserFolder())
         test._checkId('view.html')
@@ -461,11 +442,8 @@
         #
         from Products.CMFCore.PortalFolder import PortalFolder
 
-        sm = getSiteManager(self.site)
         ttool = self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(ttool, ITypesTool)
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
-        sm.registerUtility(ctool, ICatalogTool)
         ctool.addIndex('getId', 'FieldIndex')
         self.assertEqual( len(ctool), 0 )
 
@@ -510,11 +488,8 @@
         #
         #   Does copy / paste work?
         #
-        sm = getSiteManager(self.site)
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
-        sm.registerUtility(ctool, ICatalogTool)
         ttool = self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(ttool, ITypesTool)
         fti = FTIDATA_DUMMY[0].copy()
         ttool._setObject( 'Dummy Content', FTI(**fti) )
         sub1 = self._makeOne('sub1')
@@ -1080,7 +1055,6 @@
         from AccessControl.Permissions import delete_objects as DeleteObjects
         from Products.CMFCore.PortalFolder import PortalFolder
 
-        sm = getSiteManager()
         folder1, folder2 = self._initFolders()
         folder1.manage_permission( DeleteObjects, roles=(), acquire=0 )
 
@@ -1088,7 +1062,6 @@
         transaction.savepoint(optimistic=True) # get a _p_jar for 'sub'
 
         self.app.portal_types = DummyTypesTool()
-        sm.registerUtility(self.app.portal_types, ITypesTool)
 
         def _no_delete_objects(permission, object, context):
             return permission != DeleteObjects
@@ -1115,13 +1088,11 @@
         folder1, folder2 = self._initFolders()
         folder1.portal_type = UNRESTRICTED_TYPE
         folder2.portal_type = RESTRICTED_TYPE
-        sm = getSiteManager()
 
         self._initPolicyAndUser() # ensure that sec. machinery allows paste
 
         self.app._setObject( 'portal_types', TypesTool() )
         types_tool = self.app.portal_types
-        sm.registerUtility(types_tool, ITypesTool)
         types_tool._setObject( RESTRICTED_TYPE
                              , FTI( id=RESTRICTED_TYPE
                                   , title=RESTRICTED_TYPE
@@ -1162,13 +1133,11 @@
         folder1, folder2 = self._initFolders()
         folder1.portal_type = UNRESTRICTED_TYPE
         folder2.portal_type = RESTRICTED_TYPE
-        sm = getSiteManager()
 
         self._initPolicyAndUser() # ensure that sec. machinery allows paste
 
         self.app._setObject( 'portal_types', TypesTool() )
         types_tool = self.app.portal_types
-        sm.registerUtility(types_tool, ITypesTool)
         types_tool._setObject( RESTRICTED_TYPE
                              , FTI( id=RESTRICTED_TYPE
                                   , title=RESTRICTED_TYPE
@@ -1208,13 +1177,11 @@
         folder1, folder2 = self._initFolders()
         folder1.portal_type = RESTRICTED_TYPE
         folder2.portal_type = UNRESTRICTED_TYPE
-        sm = getSiteManager()
 
         self._initPolicyAndUser() # ensure that sec. machinery allows paste
 
         self.app._setObject( 'portal_types', TypesTool() )
         types_tool = self.app.portal_types
-        sm.registerUtility(types_tool, ITypesTool)
         types_tool._setObject( RESTRICTED_TYPE
                              , FTI( id=RESTRICTED_TYPE
                                   , title=RESTRICTED_TYPE

Modified: CMF/branches/2.1/CMFCore/tests/test_RegistrationTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_RegistrationTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_RegistrationTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -28,22 +28,17 @@
 
     def test_z2interfaces(self):
         from Interface.Verify import verifyClass
-        from Products.CMFCore.interfaces.portal_actions \
-                import ActionProvider as IActionProvider
         from Products.CMFCore.interfaces.portal_registration \
                 import portal_registration as IRegistrationTool
         from Products.CMFCore.RegistrationTool import RegistrationTool
 
-        verifyClass(IActionProvider, RegistrationTool)
         verifyClass(IRegistrationTool, RegistrationTool)
 
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
-        from Products.CMFCore.interfaces import IActionProvider
         from Products.CMFCore.interfaces import IRegistrationTool
         from Products.CMFCore.RegistrationTool import RegistrationTool
 
-        verifyClass(IActionProvider, RegistrationTool)
         verifyClass(IRegistrationTool, RegistrationTool)
 
     def test_generatePassword(self):

Modified: CMF/branches/2.1/CMFCore/tests/test_SkinsTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_SkinsTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_SkinsTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -21,7 +21,6 @@
 from zope.component import getSiteManager
 from zope.testing.cleanup import cleanUp
 
-from Products.CMFCore.interfaces import ISkinsTool
 
 class SkinsContainerTests(unittest.TestCase):
 
@@ -50,26 +49,21 @@
 
     def test_z2interfaces(self):
         from Interface.Verify import verifyClass
-        from Products.CMFCore.interfaces.portal_actions \
-                import ActionProvider as IActionProvider
         from Products.CMFCore.interfaces.portal_skins \
                 import portal_skins as ISkinsTool
         from Products.CMFCore.interfaces.portal_skins \
                 import SkinsContainer as ISkinsContainer
         from Products.CMFCore.SkinsTool import SkinsTool
 
-        verifyClass(IActionProvider, SkinsTool)
         verifyClass(ISkinsContainer, SkinsTool)
         verifyClass(ISkinsTool, SkinsTool)
 
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
-        from Products.CMFCore.interfaces import IActionProvider
         from Products.CMFCore.interfaces import ISkinsContainer
         from Products.CMFCore.interfaces import ISkinsTool
         from Products.CMFCore.SkinsTool import SkinsTool
 
-        verifyClass(IActionProvider, SkinsTool)
         verifyClass(ISkinsContainer, SkinsTool)
         verifyClass(ISkinsTool, SkinsTool)
 
@@ -101,8 +95,6 @@
 
         class TestSkinnableObjectManager(SkinnableObjectManager):
             tool = SkinsTool()
-            sm = getSiteManager()
-            sm.registerUtility(tool, ISkinsTool)
             # This is needed otherwise REQUEST is the string
             # '<Special Object Used to Force Acquisition>'
             REQUEST = None 
@@ -125,14 +117,16 @@
         
         som.tool.manage_properties(default_skin='skinA')
 
+        # XXX For some reason these tests don't work.
+
         # Expect the default skin name to be returned
-        self.failUnless(som.getCurrentSkinName() == 'skinA')
+        # self.failUnless(som.getCurrentSkinName() == 'skinA')
 
         # after a changeSkin the new skin name should be returned
-        som.changeSkin('skinB', som.REQUEST)
-        self.failUnless(som.getCurrentSkinName() == 'skinB')
-        
+        # som.changeSkin('skinB', som.REQUEST)
+        # self.failUnless(som.getCurrentSkinName() == 'skinB')
 
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(SkinsContainerTests),

Modified: CMF/branches/2.1/CMFCore/tests/test_UndoTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_UndoTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_UndoTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -23,22 +23,17 @@
 
     def test_z2interfaces(self):
         from Interface.Verify import verifyClass
-        from Products.CMFCore.interfaces.portal_actions \
-                import ActionProvider as IActionProvider
         from Products.CMFCore.interfaces.portal_undo \
                 import portal_undo as IUndoTool
         from Products.CMFCore.UndoTool import UndoTool
 
-        verifyClass(IActionProvider, UndoTool)
         verifyClass(IUndoTool, UndoTool)
 
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
-        from Products.CMFCore.interfaces import IActionProvider
         from Products.CMFCore.interfaces import IUndoTool
         from Products.CMFCore.UndoTool import UndoTool
 
-        verifyClass(IActionProvider, UndoTool)
         verifyClass(IUndoTool, UndoTool)
 
 

Modified: CMF/branches/2.1/CMFCore/tests/test_WorkflowTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_WorkflowTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFCore/tests/test_WorkflowTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -21,14 +21,12 @@
 from OFS.SimpleItem import SimpleItem
 
 from zope.component import adapter
-from zope.component import getSiteManager
 from zope.component import provideHandler
 from zope.interface import implements
 from Products.CMFCore.interfaces import IActionWillBeInvokedEvent
 from Products.CMFCore.interfaces import IActionRaisedExceptionEvent
 from Products.CMFCore.interfaces import IActionSucceededEvent
 from Products.CMFCore.interfaces import IContentish
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.interfaces import IWorkflowDefinition
 
 
@@ -169,11 +167,9 @@
     def _makeRoot( self ):
 
         from OFS.Folder import Folder
-        sm = getSiteManager()
         root = Folder( 'root' )
         tt = DummyTypesTool()
         root._setObject( 'portal_types', tt )
-        sm.registerUtility(root.portal_types, ITypesTool)
         return root
 
     def _makeWithTypes( self ):

Modified: CMF/branches/2.1/CMFDefault/DefaultWorkflow.py
===================================================================
--- CMF/branches/2.1/CMFDefault/DefaultWorkflow.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/DefaultWorkflow.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -23,16 +23,15 @@
 from Globals import InitializeClass
 
 from zope.component import getUtility
-from zope.component import queryUtility
 from zope.interface import implements
 
-from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import IWorkflowDefinition
 from Products.CMFCore.interfaces.portal_workflow \
         import WorkflowDefinition as z2IWorkflowDefinition
 from Products.CMFCore.utils import _checkPermission
 from Products.CMFCore.utils import _modifyPermissionMappings
+from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.utils import SimpleItemWithProperties
 
 from exceptions import AccessControl_Unauthorized
@@ -159,7 +158,7 @@
             return None
 
         actions = []
-        catalog = queryUtility(ICatalogTool)
+        catalog = getToolByName(self, 'portal_catalog', None)
         if catalog is None:
             return actions
 

Modified: CMF/branches/2.1/CMFDefault/DiscussionTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/DiscussionTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/DiscussionTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -24,11 +24,9 @@
 from zope.component import getUtility
 from zope.interface import implements
 
-from Products.CMFCore.ActionProviderBase import ActionProviderBase
 from Products.CMFCore.interfaces import IDiscussionResponse
 from Products.CMFCore.interfaces import IDiscussionTool
 from Products.CMFCore.interfaces import IMembershipTool
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.interfaces.Discussions \
         import DiscussionResponse as z2IDiscussionResponse
 from Products.CMFCore.interfaces.portal_discussion \
@@ -47,23 +45,23 @@
 
 _marker = []
 
-class DiscussionTool( UniqueObject, SimpleItem, ActionProviderBase ):
+class DiscussionTool(UniqueObject, SimpleItem):
 
     """ Links content to discussions.
     """
 
     implements(IDiscussionTool)
-    __implements__ = (z2IDiscussionTool, ActionProviderBase.__implements__)
+    __implements__ = (z2IDiscussionTool, )
 
     id = 'portal_discussion'
     meta_type = 'Default Discussion Tool'
 
     security = ClassSecurityInfo()
 
-    manage_options = (ActionProviderBase.manage_options +
-                     ({ 'label' : 'Overview', 'action' : 'manage_overview' }
-                     ,
-                     ) + SimpleItem.manage_options)
+    manage_options = ( ({'label': 'Overview',
+                         'action': 'manage_overview'},)
+                     + SimpleItem.manage_options
+                     )
 
     #
     #   ZMI methods
@@ -111,7 +109,7 @@
         """
         if hasattr( aq_base(content), 'allow_discussion' ):
             return bool(content.allow_discussion)
-        typeInfo = getUtility(ITypesTool).getTypeInfo( content )
+        typeInfo = content.getTypeInfo()
         if typeInfo:
             return bool( typeInfo.allowDiscussion() )
         return False

Modified: CMF/branches/2.1/CMFDefault/Extensions/update_catalogIndexes.py
===================================================================
--- CMF/branches/2.1/CMFDefault/Extensions/update_catalogIndexes.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/Extensions/update_catalogIndexes.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,5 +1,4 @@
-from zope.component import queryUtility
-from Products.CMFCore.interfaces import ICatalogTool
+from Products.CMFCore.utils import getToolByName
 
 def update_catalogIndexes(self, REQUEST):
     '''
@@ -9,7 +8,7 @@
     rIndexes = {'allowedRolesAndUsers': 'KeywordIndex'
               , 'effective': 'FieldIndex'
               , 'expires': 'FieldIndex'}
-    ct = queryUtility(ICatalogTool)
+    ct = getToolByName(self, 'portal_catalog')
     map(lambda x, ct=ct: ct.delIndex(x), rIndexes.keys())
     map(lambda x, ct=ct: ct.addIndex(x[0], x[1]), rIndexes.items()) 
     ct.manage_reindexIndex(ids=rIndexes.keys(), REQUEST=REQUEST)

Modified: CMF/branches/2.1/CMFDefault/Favorite.py
===================================================================
--- CMF/branches/2.1/CMFDefault/Favorite.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/Favorite.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -28,11 +28,7 @@
 from zope.interface import implements
 
 from Products.CMFCore.interfaces import ISiteRoot
-from Products.CMFCore.interfaces import IURLTool
-try:
-    from Products.CMFUid.interfaces import IUniqueIdHandler
-except ImportError:
-    IUniqueIdHandler = None
+from Products.CMFCore.utils import getToolByName
 
 from DublinCore import DefaultDublinCoreImpl
 from interfaces import IFavorite
@@ -75,7 +71,7 @@
         the unique id handler tool is available.
         """
         # check for unique id handler tool
-        handler = IUniqueIdHandler and queryUtility(IUniqueIdHandler)
+        handler = getToolByName(self, 'portal_uidhandler', None)
         if handler is None:
             return
 
@@ -87,7 +83,7 @@
         the unique id handler tool is available.
         """
         # check for unique id handler tool
-        handler = IUniqueIdHandler and queryUtility(IUniqueIdHandler)
+        handler = getToolByName(self, 'portal_uidhandler', None)
         if handler is None:
             return
 
@@ -118,7 +114,7 @@
     def _getRemoteUrlTheOldWay(self):
         """Build the url without having taking the uid into account
         """
-        portal_url = getUtility(IURLTool)
+        portal_url = getToolByName(self, 'portal_url')
         if self.remote_url:
             return portal_url() + '/' + self.remote_url
         else:
@@ -160,7 +156,7 @@
             t=('', '') + tokens[2:]
             remote_url=urlparse.urlunparse(t)
         # if URL begins with site URL, remove site URL
-        portal_url = getUtility(IURLTool).getPortalPath()
+        portal_url = getToolByName(self, 'portal_url').getPortalPath()
         i = remote_url.find(portal_url)
         if i==0:
             remote_url=remote_url[len(portal_url):]

Modified: CMF/branches/2.1/CMFDefault/MetadataTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/MetadataTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/MetadataTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -24,7 +24,6 @@
 from OFS.SimpleItem import SimpleItem
 from zope.interface import implements
 
-from Products.CMFCore.ActionProviderBase import ActionProviderBase
 from Products.CMFCore.interfaces import IMetadataTool
 from Products.CMFCore.interfaces.portal_metadata \
         import portal_metadata as z2IMetadataTool
@@ -368,14 +367,13 @@
                       , ( 'Rights', 0 )
                       )
 
-class MetadataTool( UniqueObject, Folder, ActionProviderBase ):
+class MetadataTool(UniqueObject, Folder):
 
     implements(IMetadataTool)
-    __implements__ = (z2IMetadataTool, ActionProviderBase.__implements__)
+    __implements__ = (z2IMetadataTool, )
 
     id = 'portal_metadata'
     meta_type = 'Default Metadata Tool'
-    _actions = ()
 
     _DCMI = None
     def _get_DCMI( self ):
@@ -424,9 +422,7 @@
                          , 'action'     : 'manage_overview'
                          }
                        )
-                     + Folder.manage_options[:1]
-                     + ActionProviderBase.manage_options +
-                       Folder.manage_options[1:]
+                     + Folder.manage_options
                      )
 
     security.declareProtected(ManagePortal, 'manage_overview')

Modified: CMF/branches/2.1/CMFDefault/PropertiesTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/PropertiesTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/PropertiesTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -24,7 +24,6 @@
 from zope.component import queryUtility
 from zope.interface import implements
 
-from Products.CMFCore.ActionProviderBase import ActionProviderBase
 from Products.CMFCore.interfaces import IPropertiesTool
 from Products.CMFCore.interfaces import ISiteRoot
 from Products.CMFCore.interfaces.portal_properties \
@@ -36,20 +35,19 @@
 from utils import _dtmldir
 
 
-class PropertiesTool(UniqueObject, SimpleItem, ActionProviderBase):
+class PropertiesTool(UniqueObject, SimpleItem):
 
     implements(IPropertiesTool)
-    __implements__ = (z2IPropertiesTool, ActionProviderBase.__implements__)
+    __implements__ = (z2IPropertiesTool, )
 
     id = 'portal_properties'
     meta_type = 'Default Properties Tool'
 
     security = ClassSecurityInfo()
 
-    manage_options = ( ActionProviderBase.manage_options +
-                      ({ 'label' : 'Overview', 'action' : 'manage_overview' }
-                      ,
-                     ) + SimpleItem.manage_options
+    manage_options = ( ({'label': 'Overview',
+                         'action': 'manage_overview'},)
+                     + SimpleItem.manage_options
                      )
 
     #

Modified: CMF/branches/2.1/CMFDefault/RegistrationTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/RegistrationTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/RegistrationTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -149,7 +149,7 @@
         kw = {'member': member, 'password': member.getPassword()}
 
         if getattr(aq_base(method), 'isDocTemp', 0):
-            mail_text = method(self, self.REQUEST, **kw)
+            mail_text = method(self, REQUEST, **kw)
         else:
             mail_text = method(**kw)
 
@@ -159,7 +159,7 @@
         return self.mail_password_response( self, REQUEST )
 
     security.declarePublic( 'registeredNotify' )
-    def registeredNotify( self, new_member_id, password=None ):
+    def registeredNotify(self, new_member_id, REQUEST, password=None):
         """ Handle mailing the registration / welcome message.
         """
         membership = getUtility(IMembershipTool)
@@ -181,7 +181,7 @@
         kw = {'member': member, 'password': password, 'email': email}
 
         if getattr(aq_base(method), 'isDocTemp', 0):
-            mail_text = method(self, self.REQUEST, **kw)
+            mail_text = method(self, REQUEST, **kw)
         else:
             mail_text = method(**kw)
 

Modified: CMF/branches/2.1/CMFDefault/SyndicationTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/SyndicationTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/SyndicationTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -26,7 +26,6 @@
 
 from zope.interface import implements
 
-from Products.CMFCore.ActionProviderBase import ActionProviderBase
 from Products.CMFCore.interfaces import ISyndicationTool
 from Products.CMFCore.PortalFolder import PortalFolderBase
 from Products.CMFCore.utils import _checkPermission
@@ -40,7 +39,7 @@
 from utils import _dtmldir
 
 
-class SyndicationTool(UniqueObject, SimpleItem, ActionProviderBase):
+class SyndicationTool(UniqueObject, SimpleItem):
 
     """
         The syndication tool manages the site-wide policy for
@@ -48,7 +47,7 @@
     """
 
     implements(ISyndicationTool)
-    __implements__ = ActionProviderBase.__implements__
+    __implements__ = SimpleItem.__implements__
 
     id = 'portal_syndication'
     meta_type = 'Default Syndication Tool'
@@ -63,8 +62,7 @@
     max_items = 15
 
     #ZMI Methods
-    manage_options = ( ActionProviderBase.manage_options
-                     + ( { 'label'  : 'Overview'
+    manage_options = ( ( { 'label'  : 'Overview'
                          , 'action' : 'overview'
                          , 'help'   : ( 'CMFDefault'
                                       , 'Syndication-Tool_Overview.stx' )
@@ -361,7 +359,7 @@
             raise 'Syndication is not Allowed'
 
         if obj is None:
-            when = syUpdateBase
+            when = self.syUpdateBase
             return when.HTML4()
 
         syInfo = getattr(obj, 'syndication_information',

Modified: CMF/branches/2.1/CMFDefault/browser/favorite.py
===================================================================
--- CMF/branches/2.1/CMFDefault/browser/favorite.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/browser/favorite.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -19,14 +19,13 @@
 
 from zope.app.form.browser import BytesWidget
 from zope.component import adapts
-from zope.component import getUtility
 from zope.formlib import form
 from zope.interface import implements
 from zope.interface import Interface
 from zope.schema import BytesLine
 from zope.schema import TextLine
 
-from Products.CMFCore.interfaces import IURLTool
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.formlib.form import ContentEditFormBase
 from Products.CMFDefault.formlib.schema import ProxyFieldProperty
 from Products.CMFDefault.formlib.schema import SchemaAdapterBase
@@ -83,7 +82,7 @@
             value = urlparse.urlunparse(tokens)
         # if URL begins with site URL, remove site URL
         obj = self.context.context.context
-        portal_url = getUtility(IURLTool)
+        portal_url = getToolByName(obj, 'portal_url').getPortalPath()
         if value.startswith(portal_url):
             value = value[len(portal_url):]
         # if site is still absolute, make it relative

Modified: CMF/branches/2.1/CMFDefault/browser/folder.py
===================================================================
--- CMF/branches/2.1/CMFDefault/browser/folder.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/browser/folder.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -24,7 +24,6 @@
 
 from Products.CMFCore.interfaces import IDynamicType
 from Products.CMFCore.interfaces import IMembershipTool
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFDefault.exceptions import CopyError
 from Products.CMFDefault.exceptions import zExceptions_Unauthorized
 from Products.CMFDefault.permissions import AddPortalContent
@@ -48,8 +47,8 @@
 
     # helpers
 
-    def _setRedirect(self, provider_iface, action_path, keys=''):
-        provider = getUtility(provider_iface)
+    def _setRedirect(self, provider_id, action_path, keys=''):
+        provider = self._getTool(provider_id)
         try:
             target = provider.getActionInfo(action_path, self.context)['url']
         except ValueError:
@@ -271,73 +270,73 @@
                  'title': _(u'New...'),
                  'permissions': (ViewManagementScreens, AddPortalContent),
                  'conditions': ('checkAllowedContentTypes',),
-                 'redirect': (ITypesTool, 'object/new')},
+                 'redirect': ('portal_types', 'object/new')},
                 {'id': 'items_rename',
                  'title': _(u'Rename...'),
                  'permissions': (ViewManagementScreens, AddPortalContent),
                  'conditions': ('checkItems', 'checkAllowedContentTypes'),
                  'transform': ('validateItemIds',),
-                 'redirect': (ITypesTool, 'object/rename_items',
+                 'redirect': ('portal_types', 'object/rename_items',
                               'b_start, ids, key, reverse')},
                 {'id': 'items_cut',
                  'title': _(u'Cut'),
                  'permissions': (ViewManagementScreens,),
                  'conditions': ('checkItems',),
                  'transform': ('validateItemIds', 'cut_control'),
-                 'redirect': (ITypesTool, 'object/folderContents',
+                 'redirect': ('portal_types', 'object/folderContents',
                               'b_start, key, reverse')},
                 {'id': 'items_copy',
                  'title': _(u'Copy'),
                  'permissions': (ViewManagementScreens,),
                  'conditions': ('checkItems',),
                  'transform': ('validateItemIds', 'copy_control'),
-                 'redirect': (ITypesTool, 'object/folderContents',
+                 'redirect': ('portal_types', 'object/folderContents',
                               'b_start, key, reverse')},
                 {'id': 'items_paste',
                  'title': _(u'Paste'),
                  'permissions': (ViewManagementScreens, AddPortalContent),
                  'conditions': ('checkClipboardData',),
                  'transform': ('validateClipboardData', 'paste_control'),
-                 'redirect': (ITypesTool, 'object/folderContents',
+                 'redirect': ('portal_types', 'object/folderContents',
                               'b_start, key, reverse')},
                 {'id': 'items_delete',
                  'title': _(u'Delete'),
                  'permissions': (ViewManagementScreens, DeleteObjects),
                  'conditions': ('checkItems',),
                  'transform': ('validateItemIds', 'delete_control'),
-                 'redirect': (ITypesTool, 'object/folderContents',
+                 'redirect': ('portal_types', 'object/folderContents',
                               'b_start, key, reverse')},
                 {'id': 'items_sort',
                  'permissions': (ManageProperties,),
                  'transform': ('sort_control',),
-                 'redirect': (ITypesTool, 'object/folderContents',
+                 'redirect': ('portal_types', 'object/folderContents',
                               'b_start')},
                 {'id': 'items_up',
                  'permissions': (ManageProperties,),
                  'transform': ('validateItemIds', 'up_control'),
-                 'redirect': (ITypesTool, 'object/folderContents',
+                 'redirect': ('portal_types', 'object/folderContents',
                               'b_start, key, reverse')},
                 {'id': 'items_down',
                  'permissions': (ManageProperties,),
                  'transform': ('validateItemIds', 'down_control'),
-                 'redirect': (ITypesTool, 'object/folderContents',
+                 'redirect': ('portal_types', 'object/folderContents',
                               'b_start, key, reverse')},
                 {'id': 'items_top',
                  'permissions': (ManageProperties,),
                  'transform': ('validateItemIds', 'top_control'),
-                 'redirect': (ITypesTool, 'object/folderContents',
+                 'redirect': ('portal_types', 'object/folderContents',
                               'b_start, key, reverse')},
                 {'id': 'items_bottom',
                  'permissions': (ManageProperties,),
                  'transform': ('validateItemIds', 'bottom_control'),
-                 'redirect': (ITypesTool, 'object/folderContents',
+                 'redirect': ('portal_types', 'object/folderContents',
                               'b_start, key, reverse')},
                 {'id': 'set_view_filter',
                  'transform': ('set_filter_control',),
-                 'redirect': (ITypesTool, 'object/folderContents')},
+                 'redirect': ('portal_types', 'object/folderContents')},
                 {'id': 'clear_view_filter',
                  'transform': ('clear_filter_control',),
-                 'redirect': (ITypesTool, 'object/folderContents')})
+                 'redirect': ('portal_types', 'object/folderContents')})
 
     # helpers
 

Modified: CMF/branches/2.1/CMFDefault/browser/folder.txt
===================================================================
--- CMF/branches/2.1/CMFDefault/browser/folder.txt	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/browser/folder.txt	2007-06-24 00:18:49 UTC (rev 76996)
@@ -12,17 +12,13 @@
       >>> from zope.component import getSiteManager
       >>> from Products.CMFCore.interfaces import IMembershipTool
       >>> from Products.CMFCore.interfaces import IPropertiesTool
-      >>> from Products.CMFCore.interfaces import ITypesTool
-      >>> from Products.CMFCore.interfaces import IURLTool
       >>> sm = getSiteManager()
       >>> mtool = site._setObject('portal_membership', DummyTool())
       >>> sm.registerUtility(mtool, IMembershipTool)
       >>> ptool = site._setObject('portal_properties', DummyTool())
       >>> sm.registerUtility(ptool, IPropertiesTool)
       >>> ttool = site._setObject('portal_types', DummyTool())
-      >>> sm.registerUtility(ttool, ITypesTool)
       >>> utool = site._setObject('portal_url', DummyTool())
-      >>> sm.registerUtility(utool, IURLTool)
 
 
   Basic functionality without security setup:

Modified: CMF/branches/2.1/CMFDefault/browser/metadata.py
===================================================================
--- CMF/branches/2.1/CMFDefault/browser/metadata.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/browser/metadata.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -33,7 +33,6 @@
 from Products.CMFCore.interfaces import IDiscussionTool
 from Products.CMFCore.interfaces import IMutableDublinCore
 from Products.CMFCore.interfaces import IMutableMinimalDublinCore
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFDefault.formlib.form import ContentEditFormBase
 from Products.CMFDefault.formlib.schema import ProxyFieldProperty
 from Products.CMFDefault.formlib.schema import SchemaAdapterBase
@@ -262,8 +261,8 @@
 
     def handle_change_success(self, action, data):
         self._handle_success(action, data)
-        return self._setRedirect(ITypesTool, 'object/metadata')
+        return self._setRedirect('portal_types', 'object/metadata')
 
     def handle_change_and_edit_success(self, action, data):
         self._handle_success(action, data)
-        return self._setRedirect(ITypesTool, 'object/edit')
+        return self._setRedirect('portal_types', 'object/edit')

Modified: CMF/branches/2.1/CMFDefault/browser/utils.py
===================================================================
--- CMF/branches/2.1/CMFDefault/browser/utils.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/browser/utils.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -22,7 +22,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
 from Products.CMFDefault.utils import toUnicode
@@ -67,13 +67,17 @@
     # helpers
 
     @memoize
+    def _getTool(self, name):
+        return getToolByName(self.context, name)
+
+    @memoize
     def _checkPermission(self, permission):
         mtool = getUtility(IMembershipTool)
         return mtool.checkPermission(permission, self.context)
 
     @memoize
     def _getPortalURL(self):
-        utool = getUtility(IURLTool)
+        utool = self._getTool('portal_url')
         return utool()
 
     @memoize

Modified: CMF/branches/2.1/CMFDefault/formlib/form.py
===================================================================
--- CMF/branches/2.1/CMFDefault/formlib/form.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/formlib/form.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -22,14 +22,12 @@
 from Products.Five.formlib.formbase import PageDisplayForm
 from Products.Five.formlib.formbase import PageForm
 from zope.datetime import parseDatetimetz
-from zope.component import getUtility
 from zope.formlib import form
 from zope.i18n.interfaces import IUserPreferredLanguages
 from zope.i18n.locales import LoadLocaleError
 from zope.i18n.locales import locales
 from ZTUtils import make_query
 
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFDefault.utils import Message as _
 from Products.CMFDefault.utils import translate
 from Products.CMFDefault.browser.utils import ViewBase
@@ -64,8 +62,8 @@
         self.request = request
         self.request.locale = getLocale(request)
 
-    def _setRedirect(self, provider_iface, action_path, keys=''):
-        provider = getUtility(provider_iface)
+    def _setRedirect(self, provider_id, action_path, keys=''):
+        provider = self._getTool(provider_id)
         try:
             target = provider.getActionInfo(action_path, self.context)['url']
         except ValueError:
@@ -149,11 +147,11 @@
 
     def handle_change_success(self, action, data):
         self._handle_success(action, data)
-        return self._setRedirect(ITypesTool, 'object/edit')
+        return self._setRedirect('portal_types', 'object/edit')
 
     def handle_change_and_view_success(self, action, data):
         self._handle_success(action, data)
-        return self._setRedirect(ITypesTool, 'object/view')
+        return self._setRedirect('portal_types', 'object/view')
 
 
 class DisplayFormBase(PageDisplayForm, ViewBase):

Modified: CMF/branches/2.1/CMFDefault/profiles/default/componentregistry.xml
===================================================================
--- CMF/branches/2.1/CMFDefault/profiles/default/componentregistry.xml	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/profiles/default/componentregistry.xml	2007-06-24 00:18:49 UTC (rev 76996)
@@ -3,21 +3,9 @@
  <adapters/>
  <utilities>
   <utility
-     interface="Products.CMFCore.interfaces.IActionsTool"
-     object="/portal_actions"/>
-  <utility
      interface="Products.CMFCore.interfaces.ICachingPolicyManager"
      object="/caching_policy_manager"/>
   <utility
-     interface="Products.CMFCore.interfaces.ICatalogTool"
-     object="/portal_catalog"/>
-  <utility
-     interface="Products.CMFCore.interfaces.IContentTypeRegistry"
-     object="/content_type_registry"/>
-  <utility
-     interface="Products.CMFCore.interfaces.ICookieCrumbler"
-     object="/cookie_authentication"/>
-  <utility
      interface="Products.CMFCore.interfaces.IDiscussionTool"
      object="/portal_discussion"/>
   <utility
@@ -39,24 +27,12 @@
      interface="Products.CMFCore.interfaces.ISiteRoot"
      object="/"/>
   <utility
-     interface="Products.CMFCore.interfaces.ISkinsTool"
-     object="/portal_skins"/>
-  <utility
      interface="Products.CMFCore.interfaces.ISyndicationTool"
      object="/portal_syndication"/>
   <utility
-     interface="Products.CMFCore.interfaces.ITypesTool"
-     object="/portal_types"/>
-  <utility
      interface="Products.CMFCore.interfaces.IUndoTool"
      object="/portal_undo"/>
   <utility
-     interface="Products.CMFCore.interfaces.IURLTool"
-     object="/portal_url"/>
-  <utility
-     interface="Products.CMFCore.interfaces.IConfigurableWorkflowTool"
-     object="/portal_workflow"/>
-  <utility
      interface="Products.GenericSetup.interfaces.ISetupTool"
      object="/portal_setup"/>
   <utility

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_content/content_status_modify.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_content/content_status_modify.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_content/content_status_modify.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,12 +1,11 @@
 ##parameters=workflow_action, comment=''
 ##title=Modify the status of a content object
 ##
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.exceptions import WorkflowException
 from Products.CMFDefault.utils import Message as _
 
-wtool_iface = 'Products.CMFCore.interfaces.IConfigurableWorkflowTool'
-wtool = getToolByInterfaceName(wtool_iface)
+wtool = getToolByName(script, 'portal_workflow')
 
 try:
     wtool.doActionFor(context, workflow_action, comment=comment)

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_control/members_add_control.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_control/members_add_control.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_control/members_add_control.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -18,7 +18,7 @@
     return context.setStatus(False, errmsg)
 else:
     if ptool.getProperty('validate_email') or send_password:
-        rtool.registeredNotify(member_id)
+        rtool.registeredNotify(member_id, context.REQUEST)
     if mtool.checkPermission(ManageUsers, mtool):
         return context.setStatus(True, _(u'Member registered.'))
     else:

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_control/setRedirect.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_control/setRedirect.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_control/setRedirect.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,10 +1,10 @@
 ##parameters=provider, action_path, **kw
 ##
 from ZTUtils import make_query
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import getBrowserCharset
 
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/breadcrumbs.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/breadcrumbs.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/breadcrumbs.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -2,10 +2,11 @@
 ##title=Return breadcrumbs
 ##
 from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import Message as _
 
 ptool = getToolByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 result = []
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/discussion_reply_form.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/discussion_reply_form.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/discussion_reply_form.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,12 +1,12 @@
 ##parameters=add='', edit='', preview=''
 ##
 from Products.PythonScripts.standard import structured_text
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import html_marshal
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
+atool = getToolByName(script, 'portal_actions')
 
 
 form = context.REQUEST.form

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/expanded_title.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/expanded_title.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/expanded_title.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -2,10 +2,10 @@
 ##parameters=
 ##title=Build title which includes site title
 ##
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 
 site_title = utool.getPortalObject().Title()
 page_title = context.Title()

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/folder_contents.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/folder_contents.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/folder_contents.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -3,6 +3,7 @@
 from ZTUtils import Batch
 from ZTUtils import make_query
 from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.permissions import AddPortalContent
 from Products.CMFDefault.permissions import DeleteObjects
 from Products.CMFDefault.permissions import ListFolderContents
@@ -13,7 +14,7 @@
 from Products.CMFDefault.utils import Message as _
 
 mtool = getToolByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/folder_rename_form.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/folder_rename_form.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/folder_rename_form.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,11 +1,11 @@
 ##parameters=b_start=0, key='', reverse=0, ids=(), new_ids=(), rename='', cancel=''
 ##
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import html_marshal
 from Products.CMFDefault.utils import Message as _
 
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/getBatchItemInfos.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/getBatchItemInfos.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/getBatchItemInfos.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -2,9 +2,9 @@
 ##parameters=batch_obj
 ##title=
 ##
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 
 items = []

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/getMainGlobals.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/getMainGlobals.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/getMainGlobals.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,18 +1,16 @@
 ##parameters=
 ##
-
 from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import getBrowserCharset
 
-atool = getToolByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
-caltool_iface = 'Products.CMFCalendar.interfaces.ICalendarTool'
-caltool = getToolByInterfaceName(caltool_iface, None)
+atool = getToolByName(script, 'portal_actions')
+caltool = getToolByName(script, 'portal_calendar', None)
 mtool = getToolByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 ptool = getToolByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
-wtool_iface = 'Products.CMFCore.interfaces.IConfigurableWorkflowTool'
-wtool = getToolByInterfaceName(wtool_iface)
+utool = getToolByName(script, 'portal_url')
+wtool = getToolByName(script, 'portal_workflow')
 portal_object = utool.getPortalObject()
 
 if not 'charset' in context.REQUEST.RESPONSE.getHeader('content-type'):

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/get_permalink.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/get_permalink.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/get_permalink.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -8,13 +8,11 @@
 ##title=Returns the permalink url or None
 ##
 from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 
 # calculate the permalink if the uid handler tool exists, permalinks
 # are configured to be shown and the object is not folderish
-uidtool = getToolByInterfaceName( 'Products.CMFUid.interfaces.IUniqueIdHandler'
-                                , default=None
-                                )
-
+uidtool = getToolByName(context, 'portal_uidhandler', None)
 if uidtool is not None:
     ptool = getToolByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
     showPermalink = getattr(ptool, 'enable_permalink', None)
@@ -22,7 +20,7 @@
     
     if showPermalink and not isFolderish:
         # returns the uid (generates one if necessary)
-        utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+        utool = getToolByName(context, 'portal_url')
         uid = uidtool.register(context)
         url = "%s/permalink/%s" % (utool(), uid)
         return url

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/join_form.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/join_form.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/join_form.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,14 +1,15 @@
 ##parameters=b_start=0, member_id='', member_email='', password='', confirm='', send_password='', add='', cancel=''
 ##
 from Products.CMFCore.utils import getToolByInterfaceName
+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 = getToolByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
+atool = getToolByName(script, 'portal_actions')
 mtool = getToolByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 ptool = getToolByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 validate_email = ptool.getProperty('validate_email')
 is_anon = mtool.isAnonymousUser()

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/logged_in.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/logged_in.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/logged_in.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,13 +1,14 @@
 ##parameters=
 ##
 from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import Message as _
 
 mtool = getToolByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 ptool = getToolByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-stool = getToolByInterfaceName('Products.CMFCore.interfaces.ISkinsTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+stool = getToolByName(script, 'portal_skins')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/members_delete_form.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/members_delete_form.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/members_delete_form.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,11 +1,11 @@
 ##parameters=ids, b_start=0, delete='', cancel=''
 ##
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import html_marshal
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
+atool = getToolByName(script, 'portal_actions')
 
 
 form = context.REQUEST.form

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/members_manage_form.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/members_manage_form.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/members_manage_form.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -2,11 +2,12 @@
 ##
 from ZTUtils import Batch
 from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import html_marshal
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
+atool = getToolByName(script, 'portal_actions')
 mtool = getToolByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/news_box.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/news_box.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/news_box.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,10 +1,10 @@
 ##parameters=
 ##
 from ZTUtils import Batch
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 
-ctool = getToolByInterfaceName('Products.CMFCore.interfaces.ICatalogTool')
+ctool = getToolByName(script, 'portal_catalog')
 
 options = {}
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/password_email.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/password_email.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/password_email.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,13 +1,14 @@
 ##parameters=member=None, password='secret'
 ##
 from Products.CMFCore.utils import getToolByInterfaceName
+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 = getToolByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
+atool = getToolByName(script, 'portal_actions')
 ptool = getToolByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/password_form.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/password_form.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/password_form.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,13 +1,14 @@
 ##parameters=change='', cancel=''
 ##
 from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
+atool = getToolByName(script, 'portal_actions')
 mtool = getToolByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
 ptool = getToolByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 member = mtool.getAuthenticatedMember()
 portal_url = utool()
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/recent_news.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/recent_news.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/recent_news.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -2,11 +2,11 @@
 ##
 from Products.PythonScripts.standard import structured_text
 from ZTUtils import Batch
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 
-ctool = getToolByInterfaceName('Products.CMFCore.interfaces.ICatalogTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+ctool = getToolByName(script, 'portal_catalog')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/reconfig_form.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/reconfig_form.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/reconfig_form.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,10 +1,11 @@
 ##parameters=change=''
 ##
 from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import Message as _
 
-atool = getToolByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
+atool = getToolByName(script, 'portal_actions')
 ptool = getToolByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
 
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/registered_email.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/registered_email.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/registered_email.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,13 +1,14 @@
 ##parameters=member=None, password='secret', email='foo at example.org'
 ##
 from Products.CMFCore.utils import getToolByInterfaceName
+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 = getToolByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
+atool = getToolByName(script, 'portal_actions')
 ptool = getToolByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/rejectItems.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/rejectItems.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/rejectItems.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -7,12 +7,9 @@
 ##parameters=items, comment=''
 ##title=
 ##
+from Products.CMFCore.utils import getToolByName
 
-from Products.CMFCore.utils import getToolByInterfaceName
-
-wtool_iface = 'Products.CMFCore.interfaces.IConfigurableWorkflowTool'
-wtool = getToolByInterfaceName(wtool_iface)
-
+wtool = getToolByName(script, 'portal_workflow')
 for path in items:
     object = context.restrictedTraverse( path )
     wtool.doActionFor( object, 'reject', comment=comment )

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/search.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/search.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/search.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -2,12 +2,12 @@
 ##
 from Products.PythonScripts.standard import thousands_commas
 from ZTUtils import Batch
-from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import Message as _
 
-ctool = getToolByInterfaceName('Products.CMFCore.interfaces.ICatalogTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+ctool = getToolByName(script, 'portal_catalog')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 epoch = DateTime('1970/01/01 00:00:01 GMT')
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/search_form.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/search_form.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/search_form.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -1,14 +1,15 @@
 ##parameters=search=''
 ##
 from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.permissions import ReviewPortalContent
 from Products.CMFDefault.utils import decode
 from Products.CMFDefault.utils import Message as _
 
-ctool = getToolByInterfaceName('Products.CMFCore.interfaces.ICatalogTool')
+ctool = getToolByName(script, 'portal_catalog')
 mtool = getToolByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
-ttool = getToolByInterfaceName('Products.CMFCore.interfaces.ITypesTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+ttool = getToolByName(script, 'portal_types')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 
 

Modified: CMF/branches/2.1/CMFDefault/skins/zpt_generic/setup_talkback_tree.py
===================================================================
--- CMF/branches/2.1/CMFDefault/skins/zpt_generic/setup_talkback_tree.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/skins/zpt_generic/setup_talkback_tree.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -3,11 +3,12 @@
 ##
 from ZTUtils import SimpleTreeMaker
 from Products.CMFCore.utils import getToolByInterfaceName
+from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.permissions import ManagePortal
 from Products.CMFDefault.utils import decode
 
 mtool = getToolByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
-utool = getToolByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+utool = getToolByName(script, 'portal_url')
 portal_url = utool()
 
 tm = SimpleTreeMaker('tb_tree')

Modified: CMF/branches/2.1/CMFDefault/tests/RegistrationTool.txt
===================================================================
--- CMF/branches/2.1/CMFDefault/tests/RegistrationTool.txt	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/tests/RegistrationTool.txt	2007-06-24 00:18:49 UTC (rev 76996)
@@ -43,7 +43,7 @@
 
   mailPassword sends a password reminder and returns a response page::
 
-    >>> rtool.mailPassword('foo', None)
+    >>> rtool.mailPassword('foo', app.REQUEST)
     'done'
 
     >>> getUtility(IMailHost).lastMessage
@@ -51,7 +51,7 @@
 
   registeredNotify sends a welcome message::
 
-    >>> rtool.registeredNotify('foo')
+    >>> rtool.registeredNotify('foo', app.REQUEST)
 
     >>> getUtility(IMailHost).lastMessage
     'Welcome: foo, secret, foo at example.org'

Modified: CMF/branches/2.1/CMFDefault/tests/test_DiscussionTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/tests/test_DiscussionTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/tests/test_DiscussionTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -23,7 +23,6 @@
 
 from Products.CMFCore.interfaces import IDiscussionTool
 from Products.CMFCore.interfaces import IMembershipTool
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.tests.base.dummy import DummyFolder
 from Products.CMFCore.tests.base.dummy import DummySite
 from Products.CMFCore.tests.base.dummy import DummyTool
@@ -44,29 +43,23 @@
         self.site._setObject( 'portal_membership', DummyTool() )
         sm.registerUtility(self.site.portal_membership, IMembershipTool)
         self.site._setObject( 'portal_types', DummyTool() )
-        sm.registerUtility(self.site.portal_types, ITypesTool)
 
     def tearDown(self):
         cleanUp()
 
     def test_z2interfaces(self):
         from Interface.Verify import verifyClass
-        from Products.CMFCore.interfaces.portal_actions \
-                import ActionProvider as IActionProvider
         from Products.CMFCore.interfaces.portal_discussion \
                 import portal_discussion as IDiscussionTool
         from Products.CMFDefault.DiscussionTool import DiscussionTool
 
-        verifyClass(IActionProvider, DiscussionTool)
         verifyClass(IDiscussionTool, DiscussionTool)
 
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
-        from Products.CMFCore.interfaces import IActionProvider
         from Products.CMFCore.interfaces import IDiscussionTool
         from Products.CMFDefault.DiscussionTool import DiscussionTool
 
-        verifyClass(IActionProvider, DiscussionTool)
         verifyClass(IDiscussionTool, DiscussionTool)
 
     def test_overrideDiscussionFor(self):

Modified: CMF/branches/2.1/CMFDefault/tests/test_Discussions.py
===================================================================
--- CMF/branches/2.1/CMFDefault/tests/test_Discussions.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/tests/test_Discussions.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -21,10 +21,8 @@
 from zope.component import getSiteManager
 
 from Products.CMFCore.CatalogTool import CatalogTool
-from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import IDiscussionTool
 from Products.CMFCore.interfaces import IMembershipTool
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.testing import EventZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -117,7 +115,6 @@
         self.site._setObject( 'portal_membership', DummyTool() )
         sm.registerUtility(self.site.portal_membership, IMembershipTool)
         self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(self.site.portal_types, ITypesTool)
 
     def _makeDummyContent(self, id, *args, **kw):
         return self.site._setObject( id, DummyContent(id, *args, **kw) )
@@ -205,9 +202,7 @@
         assert parents[ 0 ] == reply1
 
     def test_itemCataloguing( self ):
-        sm = getSiteManager()
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
-        sm.registerUtility(ctool, ICatalogTool)
         dtool = self.site.portal_discussion
         catalog = ctool._catalog
         test = self._makeDummyContent('test', catalog=1)
@@ -269,9 +264,7 @@
                 DiscussionItem.notifyWorkflowCreated = old_method
 
     def test_deletePropagation( self ):
-        sm = getSiteManager()
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
-        sm.registerUtility(ctool, ICatalogTool)
         dtool = self.site.portal_discussion
         test = self._makeDummyContent('test', catalog=1)
         test.allow_discussion = 1
@@ -285,10 +278,8 @@
         self.assertEqual( len(ctool), 0 )
 
     def test_deleteReplies(self):
-        sm = getSiteManager()
         dtool = self.site.portal_discussion
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
-        sm.registerUtility(ctool, ICatalogTool)
         test = self._makeDummyContent('test')
         test.allow_discussion = 1
 

Modified: CMF/branches/2.1/CMFDefault/tests/test_Favorite.py
===================================================================
--- CMF/branches/2.1/CMFDefault/tests/test_Favorite.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/tests/test_Favorite.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -23,7 +23,6 @@
 
 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 DummySite
 from Products.CMFCore.tests.base.dummy import DummyTool
@@ -45,7 +44,6 @@
         sm.registerUtility(self.site, ISiteRoot)
         sm.registerUtility(DummyTool(), IMembershipTool)
         self.site._setObject( 'portal_url', DummyTool() )
-        sm.registerUtility(self.site.portal_url, IURLTool)
 
     def tearDown(self):
         cleanUp()

Modified: CMF/branches/2.1/CMFDefault/tests/test_MembershipTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/tests/test_MembershipTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/tests/test_MembershipTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -46,13 +46,10 @@
 
     def test_z2interfaces(self):
         from Interface.Verify import verifyClass
-        from Products.CMFCore.interfaces.portal_actions \
-                import ActionProvider as IActionProvider
         from Products.CMFDefault.interfaces.portal_membership \
                 import portal_membership as IMembershipTool
         from Products.CMFDefault.MembershipTool import MembershipTool
 
-        verifyClass(IActionProvider, MembershipTool)
         verifyClass(IMembershipTool, MembershipTool)
 
     def test_z3interfaces(self):
@@ -61,7 +58,6 @@
         from Products.CMFDefault.interfaces import IMembershipTool
         from Products.CMFDefault.MembershipTool import MembershipTool
 
-        verifyClass(IActionProvider, MembershipTool)
         verifyClass(IMembershipTool, MembershipTool)
 
     def test_MembersFolder_methods(self):
@@ -98,8 +94,6 @@
         members = self.site._setObject( 'Members', PortalFolder('Members') )
         acl_users = self.site._setObject( 'acl_users', DummyUserFolder() )
         wtool = self.site._setObject( 'portal_workflow', DummyTool() )
-        sm = getSiteManager()
-        sm.registerUtility(self.site.portal_workflow, IConfigurableWorkflowTool)
 
         # permission
         mtool.createMemberArea('user_foo')

Modified: CMF/branches/2.1/CMFDefault/tests/test_MetadataTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/tests/test_MetadataTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/tests/test_MetadataTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -141,20 +141,15 @@
 
     def test_z2interfaces(self):
         from Interface.Verify import verifyClass
-        from Products.CMFCore.interfaces.portal_actions \
-                import ActionProvider as IActionProvider
         from Products.CMFCore.interfaces.portal_metadata \
                 import portal_metadata as IMetadataTool
 
-        verifyClass(IActionProvider, self._getTargetClass())
         verifyClass(IMetadataTool, self._getTargetClass())
 
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
-        from Products.CMFCore.interfaces import IActionProvider
         from Products.CMFCore.interfaces import IMetadataTool
 
-        verifyClass(IActionProvider, self._getTargetClass())
         verifyClass(IMetadataTool, self._getTargetClass())
 
     def test_empty( self ):

Modified: CMF/branches/2.1/CMFDefault/tests/test_Portal.py
===================================================================
--- CMF/branches/2.1/CMFDefault/tests/test_Portal.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/tests/test_Portal.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -22,16 +22,8 @@
 from AccessControl.User import UnrestrictedUser
 from Acquisition import aq_base
 from zope.app.component.hooks import setSite
-from zope.component import getUtility
-from zope.component import queryUtility
 
-from Products.CMFCore.interfaces import ICatalogTool
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFDefault.testing import FunctionalLayer
-try:
-    from Products.CMFUid.interfaces import IUniqueIdHandler
-except ImportError:
-    IUniqueIdHandler = None
 
 
 class CMFSiteTests(ZopeTestCase.FunctionalTestCase):
@@ -53,15 +45,15 @@
         setSite(self.app.site)
 
     def test_new( self ):
-        catalog = getUtility(ICatalogTool)
+        catalog = self.app.site.portal_catalog
 
         self.assertEqual(len(catalog), 0)
 
     def test_MetadataCataloguing( self ):
         site = self.app.site
-        catalog = getUtility(ICatalogTool)
-        ttool = getUtility(ITypesTool)
-        uid_handler = IUniqueIdHandler and queryUtility(IUniqueIdHandler)
+        catalog = site.portal_catalog
+        ttool = site.portal_types
+        uid_handler = getattr(site, 'portal_uidhandler', None)
 
         portal_types = [ x for x in ttool.listContentTypes()
                            if x not in ( 'Discussion Item'
@@ -108,7 +100,7 @@
 
     def test_DocumentEditCataloguing( self ):
         site = self.app.site
-        catalog = getUtility(ICatalogTool)
+        catalog = site.portal_catalog
 
         doc = self._makeContent( site
                                , portal_type='Document'
@@ -126,7 +118,7 @@
 
     def test_ImageEditCataloguing( self ):
         site = self.app.site
-        catalog = getUtility(ICatalogTool)
+        catalog = site.portal_catalog
 
         doc = self._makeContent( site
                                , portal_type='Image'
@@ -142,7 +134,7 @@
 
     def test_FileEditCataloguing( self ):
         site = self.app.site
-        catalog = getUtility(ICatalogTool)
+        catalog = site.portal_catalog
 
         doc = self._makeContent( site
                                , portal_type='File'
@@ -158,7 +150,7 @@
 
     def test_LinkEditCataloguing( self ):
         site = self.app.site
-        catalog = getUtility(ICatalogTool)
+        catalog = site.portal_catalog
 
         doc = self._makeContent( site
                                , portal_type='Link'
@@ -174,7 +166,7 @@
 
     def test_NewsItemEditCataloguing( self ):
         site = self.app.site
-        catalog = getUtility(ICatalogTool)
+        catalog = site.portal_catalog
 
         doc = self._makeContent( site
                                , portal_type='News Item'

Modified: CMF/branches/2.1/CMFDefault/tests/test_PropertiesTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/tests/test_PropertiesTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/tests/test_PropertiesTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -23,22 +23,17 @@
 
     def test_z2interfaces(self):
         from Interface.Verify import verifyClass
-        from Products.CMFCore.interfaces.portal_actions \
-                import ActionProvider as IActionProvider
         from Products.CMFCore.interfaces.portal_properties \
                 import portal_properties as IPropertiesTool
         from Products.CMFDefault.PropertiesTool import PropertiesTool
 
-        verifyClass(IActionProvider, PropertiesTool)
         verifyClass(IPropertiesTool, PropertiesTool)
 
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
-        from Products.CMFCore.interfaces import IActionProvider
         from Products.CMFCore.interfaces import IPropertiesTool
         from Products.CMFDefault.PropertiesTool import PropertiesTool
 
-        verifyClass(IActionProvider, PropertiesTool)
         verifyClass(IPropertiesTool, PropertiesTool)
 
 

Modified: CMF/branches/2.1/CMFDefault/tests/test_RegistrationTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/tests/test_RegistrationTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/tests/test_RegistrationTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -49,20 +49,15 @@
 
     def test_z2interfaces(self):
         from Interface.Verify import verifyClass
-        from Products.CMFCore.interfaces.portal_actions \
-                import ActionProvider as IActionProvider
         from Products.CMFCore.interfaces.portal_registration \
                 import portal_registration as IRegistrationTool
 
-        verifyClass(IActionProvider, self._getTargetClass())
         verifyClass(IRegistrationTool, self._getTargetClass())
 
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
-        from Products.CMFCore.interfaces import IActionProvider
         from Products.CMFCore.interfaces import IRegistrationTool
 
-        verifyClass(IActionProvider, self._getTargetClass())
         verifyClass(IRegistrationTool, self._getTargetClass())
 
     def test_spamcannon_collector_243( self ):

Modified: CMF/branches/2.1/CMFDefault/tests/test_SyndicationTool.py
===================================================================
--- CMF/branches/2.1/CMFDefault/tests/test_SyndicationTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFDefault/tests/test_SyndicationTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -23,7 +23,6 @@
 from zope.component import getSiteManager
 from zope.testing.cleanup import cleanUp
 
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.tests.base.testcase import SecurityTest
 
 
@@ -171,14 +170,13 @@
         from Products.CMFCore.PortalFolder import PortalFolder
         from Products.CMFCore.CMFBTreeFolder import CMFBTreeFolder
         from Products.CMFCore.TypesTool import TypesTool
-        sm = getSiteManager()
+
         PERIOD = 'hourly'
         FREQUENCY = 4
         NOW = DateTime()
         MAX_ITEMS = 42
 
         self.root._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(self.root.portal_types, ITypesTool)
         self.root._setObject('pf', PortalFolder('pf'))
         self.root._setObject('bf', CMFBTreeFolder('bf'))
         self.root._setObject('portal_syndication', self._makeOne())

Modified: CMF/branches/2.1/CMFTopic/Topic.py
===================================================================
--- CMF/branches/2.1/CMFTopic/Topic.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFTopic/Topic.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -24,8 +24,8 @@
 from zope.interface import implements
 
 from Products.CMFDefault.SkinnedFolder import SkinnedFolder
-from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import ISyndicationTool
+from Products.CMFCore.utils import getToolByName
 
 from interfaces import IMutableTopic
 from interfaces import ITopic
@@ -83,7 +83,7 @@
     def listAvailableFields(self):
         """ Return a list of available fields for new criteria.
         """
-        portal_catalog = getUtility(ICatalogTool)
+        portal_catalog = getToolByName( self, 'portal_catalog' )
         currentfields = map( lambda x: x.Field(), self.listCriteria() )
         availfields = filter(
             lambda field, cf=currentfields: field not in cf,
@@ -143,7 +143,7 @@
         o Built-in criteria update any criteria passed in 'kw'.
         """
         kw.update( self.buildQuery() )
-        portal_catalog = getUtility(ICatalogTool)
+        portal_catalog = getToolByName( self, 'portal_catalog' )
         return portal_catalog.searchResults(REQUEST, **kw)
 
     security.declareProtected(View, 'synContentValues')

Modified: CMF/branches/2.1/CMFTopic/tests/test_Topic.py
===================================================================
--- CMF/branches/2.1/CMFTopic/tests/test_Topic.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFTopic/tests/test_Topic.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -23,9 +23,7 @@
 
 from zope.component import getSiteManager
 
-from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import ISyndicationTool
-from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.testing import ConformsToFolder
 from Products.CMFCore.testing import EventZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -145,7 +143,6 @@
     def _initSite(self, max_items=15, index_ids=()):
         sm = getSiteManager()
         self.site.portal_catalog = DummyCatalog( index_ids )
-        sm.registerUtility(self.site.portal_catalog, ICatalogTool)
         self.site.portal_syndication = DummySyndicationTool( max_items )
         sm.registerUtility(self.site.portal_syndication, ISyndicationTool)
 
@@ -204,9 +201,7 @@
         self.assertEqual( query[ 'baz' ], 43 )
 
     def test_Nested( self ):
-        sm = getSiteManager()
         self.site._setObject( 'portal_types', TypesTool() )
-        sm.registerUtility(self.site.portal_types, ITypesTool)
         self.site.portal_types._setObject('Topic', FTI(id='Topic',
                                       product='CMFTopic', factory='addTopic'))
         topic = self._makeOne('top')

Modified: CMF/branches/2.1/CMFUid/UniqueIdAnnotationTool.py
===================================================================
--- CMF/branches/2.1/CMFUid/UniqueIdAnnotationTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFUid/UniqueIdAnnotationTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -31,8 +31,8 @@
 from zope.interface import implements
 
 from Products.CMFCore.utils import UniqueObject
+from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.utils import registerToolInterface
-from Products.CMFCore.ActionProviderBase import ActionProviderBase
 
 from Products.CMFUid.interfaces import IUniqueIdAnnotation
 from Products.CMFUid.interfaces import IUniqueIdAnnotationManagement
@@ -78,7 +78,7 @@
     if IObjectAddedEvent.providedBy(event):
         if event.newParent is not None:
             anno_tool = queryUtility(IUniqueIdAnnotationManagement)
-            uid_handler = queryUtility(IUniqueIdHandler)
+            uid_handler = getToolByName(ob, 'portal_uidhandler', None)
             if anno_tool is not None:
                 remove_on_add = anno_tool.getProperty('remove_on_add',False)
                 remove_on_clone = anno_tool.getProperty('remove_on_clone',False)
@@ -96,7 +96,8 @@
                  
     elif IObjectClonedEvent.providedBy(event):
         anno_tool = queryUtility(IUniqueIdAnnotationManagement)
-        uid_handler = queryUtility(IUniqueIdHandler)
+        uid_handler = getToolByName(ob, 'portal_uidhandler', None)
+
         if anno_tool is not None:
             remove_on_clone = anno_tool.getProperty('remove_on_clone', False)
             assign_on_clone = anno_tool.getProperty('assign_on_clone', False)
@@ -110,20 +111,17 @@
                 # assign new uid
                 uid_handler.register(ob)
         
-class UniqueIdAnnotationTool(UniqueObject, SimpleItem, PropertyManager,
-                             ActionProviderBase):
+class UniqueIdAnnotationTool(UniqueObject, SimpleItem, PropertyManager):
 
     __doc__ = __doc__ # copy from module
 
     implements(IUniqueIdAnnotationManagement)
     __implements__ = (
-        ActionProviderBase.__implements__,
         SimpleItem.__implements__,
     )
 
     manage_options = (
         PropertyManager.manage_options +
-        ActionProviderBase.manage_options +
         SimpleItem.manage_options
     )
 

Modified: CMF/branches/2.1/CMFUid/UniqueIdGeneratorTool.py
===================================================================
--- CMF/branches/2.1/CMFUid/UniqueIdGeneratorTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFUid/UniqueIdGeneratorTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -23,13 +23,12 @@
 from OFS.SimpleItem import SimpleItem
 from zope.interface import implements
 
-from Products.CMFCore.ActionProviderBase import ActionProviderBase
 from Products.CMFCore.utils import registerToolInterface
 from Products.CMFCore.utils import UniqueObject
 from Products.CMFUid.interfaces import IUniqueIdGenerator
 
 
-class UniqueIdGeneratorTool(UniqueObject, SimpleItem, ActionProviderBase):
+class UniqueIdGeneratorTool(UniqueObject, SimpleItem):
 
     """Generator of unique ids.
     
@@ -39,7 +38,6 @@
 
     implements(IUniqueIdGenerator)
     __implements__ = (
-        ActionProviderBase.__implements__,
         SimpleItem.__implements__,
     )
 

Modified: CMF/branches/2.1/CMFUid/UniqueIdHandlerTool.py
===================================================================
--- CMF/branches/2.1/CMFUid/UniqueIdHandlerTool.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFUid/UniqueIdHandlerTool.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -31,10 +31,8 @@
 from zope.component import getUtility
 from zope.interface import implements
 
-from Products.CMFCore.ActionProviderBase import ActionProviderBase
-from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.permissions import ManagePortal
-from Products.CMFCore.utils import registerToolInterface
+from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.utils import UniqueObject
 
 from Products.CMFUid.interfaces import IUniqueIdAnnotationManagement
@@ -49,24 +47,20 @@
 _wwwdir = os.path.join( package_home( globals() ), 'www' )
 
 
-class UniqueIdHandlerTool(UniqueObject, SimpleItem, ActionProviderBase):
+class UniqueIdHandlerTool(UniqueObject, SimpleItem):
 
     __doc__ = __doc__ # copy from module
 
     implements(IUniqueIdHandler, IUniqueIdBrainQuery,
                IUniqueIdUnrestrictedQuery)
     __implements__ = (
-        ActionProviderBase.__implements__,
         SimpleItem.__implements__,
     )
 
     id = 'portal_uidhandler'
 
-    manage_options = ( ActionProviderBase.manage_options
-                     + ( {'label':'Query',
-                          'action':'manage_queryObject'}
-                       ,
-                       )
+    manage_options = ( ({'label': 'Query',
+                         'action': 'manage_queryObject'},)
                      + SimpleItem.manage_options
                      )
 
@@ -85,7 +79,7 @@
     def _reindexObject(self, obj):
         # add uid index and colums to catalog if not yet done
         UID_ATTRIBUTE_NAME = self.UID_ATTRIBUTE_NAME
-        catalog = getUtility(ICatalogTool)
+        catalog = getToolByName(obj, 'portal_catalog')
         if UID_ATTRIBUTE_NAME not in catalog.indexes():
             catalog.addIndex(UID_ATTRIBUTE_NAME, 'FieldIndex')
             catalog.addColumn(UID_ATTRIBUTE_NAME)
@@ -177,6 +171,8 @@
         """This helper method does the "hard work" of querying the catalog
            and interpreting the results.
         """
+        # XXX: this method violates the rules for tools/utilities:
+        # it depends on a non-utility tool
         if uid is None:
             return default
 
@@ -184,7 +180,7 @@
         generator = getUtility(IUniqueIdGenerator)
         uid = generator.convert(uid)
 
-        catalog = getUtility(ICatalogTool)
+        catalog = getToolByName(self, 'portal_catalog')
         searchMethod = getattr(catalog, searchMethodName)
         result = searchMethod({self.UID_ATTRIBUTE_NAME: uid})
         len_result = len(result)
@@ -265,5 +261,4 @@
     manage_queryObject = PageTemplateFile('queryUID.pt', _wwwdir)
 
 InitializeClass(UniqueIdHandlerTool)
-registerToolInterface('portal_uidhandler', IUniqueIdHandler)
 

Modified: CMF/branches/2.1/CMFUid/profiles/default/componentregistry.xml
===================================================================
--- CMF/branches/2.1/CMFUid/profiles/default/componentregistry.xml	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFUid/profiles/default/componentregistry.xml	2007-06-24 00:18:49 UTC (rev 76996)
@@ -6,9 +6,6 @@
      interface="Products.CMFUid.interfaces.IUniqueIdGenerator"
      object="/portal_uidgenerator"/>
   <utility
-     interface="Products.CMFUid.interfaces.IUniqueIdHandler"
-     object="/portal_uidhandler"/>
-  <utility
      interface="Products.CMFUid.interfaces.IUniqueIdAnnotationManagement"
      object="/portal_uidannotation"/>
  </utilities>

Modified: CMF/branches/2.1/CMFUid/tests/test_uidhandling.py
===================================================================
--- CMF/branches/2.1/CMFUid/tests/test_uidhandling.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/CMFUid/tests/test_uidhandling.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -21,7 +21,6 @@
 from zope.component import getSiteManager
 from zope.testing.cleanup import cleanUp
 
-from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummyFolder
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -59,12 +58,10 @@
         self.root._setObject('dummy2', DummyContent(id='dummy2'))
 
         sm = getSiteManager()
-        sm.registerUtility(self.root.portal_catalog, ICatalogTool)
         sm.registerUtility( self.root.portal_uidannotation
                           , IUniqueIdAnnotationManagement
                           )
         sm.registerUtility(self.root.portal_uidgenerator, IUniqueIdGenerator)
-        sm.registerUtility(self.root.portal_uidhandler, IUniqueIdHandler)
 
     def tearDown(self):
         cleanUp()

Modified: CMF/branches/2.1/DCWorkflow/DCWorkflow.py
===================================================================
--- CMF/branches/2.1/DCWorkflow/DCWorkflow.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/DCWorkflow/DCWorkflow.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -26,15 +26,14 @@
 from OFS.Folder import Folder
 from OFS.ObjectManager import bad_id
 
-from zope.component import getUtility
 from zope.interface import implements
 from zope.event import notify
 
 # CMFCore
-from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import IWorkflowDefinition
 from Products.CMFCore.interfaces.portal_workflow \
         import WorkflowDefinition as z2IWorkflowDefinition
+from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.WorkflowCore import ObjectDeleted
 from Products.CMFCore.WorkflowCore import ObjectMoved
 from Products.CMFCore.WorkflowCore import WorkflowException
@@ -233,7 +232,7 @@
                     var_match_keys = qdef.getVarMatchKeys()
                     if var_match_keys:
                         # Check the catalog for items in the worklist.
-                        catalog = getUtility(ICatalogTool)
+                        catalog = getToolByName(self, 'portal_catalog')
                         kw = {}
                         for k in var_match_keys:
                             v = qdef.getVarMatch(k)

Modified: CMF/branches/2.1/DCWorkflow/tests/test_exportimport.py
===================================================================
--- CMF/branches/2.1/DCWorkflow/tests/test_exportimport.py	2007-06-23 23:35:44 UTC (rev 76995)
+++ CMF/branches/2.1/DCWorkflow/tests/test_exportimport.py	2007-06-24 00:18:49 UTC (rev 76996)
@@ -18,8 +18,6 @@
 import unittest
 import Testing
 
-from zope.component import getSiteManager
-
 from Products.PythonScripts.PythonScript import PythonScript
 from Products.ExternalMethod.ExternalMethod import ExternalMethod
 
@@ -78,9 +76,7 @@
 
     def _initDCWorkflow( self, workflow_id ):
 
-        sm = getSiteManager()
         wf_tool = self.root.site.portal_workflow
-        sm.registerUtility(wf_tool, IConfigurableWorkflowTool)
         wf_tool._setObject( workflow_id, DCWorkflowDefinition( workflow_id ) )
 
         return wf_tool._getOb( workflow_id )



More information about the Checkins mailing list