[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - finished converting tools into local utilities
Yvo Schubbe
y.2011 at wcm-solutions.de
Mon Sep 26 03:51:29 EST 2011
Log message for revision 122941:
- finished converting tools into local utilities
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
U Products.CMFDefault/trunk/Products/CMFDefault/DublinCore.py
U Products.CMFDefault/trunk/Products/CMFDefault/Favorite.py
UU Products.CMFDefault/trunk/Products/CMFDefault/MetadataTool.py
UU Products.CMFDefault/trunk/Products/CMFDefault/SyndicationInfo.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/syndication.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/content/rss.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py
U Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py
U Products.CMFDefault/trunk/Products/CMFDefault/formlib/widgets.txt
U Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/disableSyndication.py
UU Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/editSynProperties.py
UU Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/enableSyndication.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/get_permalink.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Discussions.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DublinCore.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_File.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Image.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Portal.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_PropertiesTool.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_SyndicationInfo.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_SyndicationTool.py
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py
UU Products.CMFDefault/trunk/Products/CMFDefault/utils.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2011-09-26 08:51:28 UTC (rev 122941)
@@ -4,10 +4,7 @@
2.3.0-alpha (unreleased)
------------------------
-- tools: Converted several tools into utilities.
- ActionsTool, CatalogTool, CookieCrumbler, MemberDataTool, MembershipTool,
- RegistrationTool, SkinsTool, TypesTool, URLTool and WorkflowTool are now
- local utilities.
+- tools: Converted all tools into local utilities.
- skins and browser views: setRedirect now checks Action conditions.
Modified: Products.CMFDefault/trunk/Products/CMFDefault/DublinCore.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/DublinCore.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/DublinCore.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -20,12 +20,13 @@
from App.special_dtml import DTMLFile
from DateTime.DateTime import DateTime
from OFS.PropertyManager import PropertyManager
+from zope.component import queryUtility
from zope.interface import implements
from Products.CMFCore.interfaces import ICatalogableDublinCore
from Products.CMFCore.interfaces import IDublinCore
+from Products.CMFCore.interfaces import IMetadataTool
from Products.CMFCore.interfaces import IMutableDublinCore
-from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.permissions import ModifyPortalContent
from Products.CMFDefault.permissions import View
from Products.CMFDefault.utils import _dtmldir
@@ -156,11 +157,10 @@
return self.description
security.declareProtected(View, 'Publisher')
- def Publisher( self ):
+ def Publisher(self):
""" Dublin Core Publisher element - resource publisher.
"""
- tool = getToolByName(self, 'portal_metadata', None)
-
+ tool = queryUtility(IMetadataTool)
if tool is not None:
return tool.getPublisher()
Modified: Products.CMFDefault/trunk/Products/CMFDefault/Favorite.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/Favorite.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/Favorite.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -20,19 +20,22 @@
from App.class_init import InitializeClass
from zope.component import adapter
from zope.component import getUtility
+from zope.component import queryUtility
from zope.component.factory import Factory
from zope.container.interfaces import IObjectAddedEvent
from zope.interface import implements
from Products.CMFCore.interfaces import ISiteRoot
from Products.CMFCore.interfaces import IURLTool
-from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.DublinCore import DefaultDublinCoreImpl
from Products.CMFDefault.interfaces import IFavorite
from Products.CMFDefault.interfaces import IMutableFavorite
from Products.CMFDefault.Link import Link
from Products.CMFDefault.permissions import View
+from Products.CMFDefault.utils import PRODUCTS_CMFUID_INSTALLED
+if PRODUCTS_CMFUID_INSTALLED:
+ from Products.CMFUid.interfaces import IUniqueIdHandler
def addFavorite(self, id, title='', remote_url='', description=''):
"""Add a Favorite.
@@ -67,20 +70,20 @@
the unique id handler tool is available.
"""
# check for unique id handler tool
- handler = getToolByName(self, 'portal_uidhandler', None)
- if handler is None:
+ uidtool = queryUtility(IUniqueIdHandler)
+ if uidtool is None:
return
obj = getUtility(ISiteRoot).restrictedTraverse(self.remote_url)
- return handler.register(obj)
+ return uidtool.register(obj)
def _getObjectByUid(self):
"""Registers and returns the uid of the remote object if
the unique id handler tool is available.
"""
# check for unique id handler tool
- handler = getToolByName(self, 'portal_uidhandler', None)
- if handler is None:
+ uidtool = queryUtility(IUniqueIdHandler)
+ if uidtool is None:
return
# check for remote uid info on object
@@ -88,7 +91,7 @@
if uid is None:
return
- return handler.queryObject(uid, None)
+ return uidtool.queryObject(uid, None)
security.declareProtected(View, 'getRemoteUrl')
def getRemoteUrl(self):
Modified: Products.CMFDefault/trunk/Products/CMFDefault/MetadataTool.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/MetadataTool.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/MetadataTool.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -11,8 +11,6 @@
#
##############################################################################
""" CMFDefault portal_metadata tool.
-
-$Id$
"""
from AccessControl.SecurityInfo import ClassSecurityInfo
@@ -555,7 +553,7 @@
def setInitialMetadata( self, content ):
""" See IMetadataTool.
"""
- for schema_id, schema in self.listSchemas():
+ for _schema_id, schema in self.listSchemas():
for element, policy in schema.listPolicies(
content.getPortalTypeName()):
@@ -574,7 +572,7 @@
def validateMetadata( self, content ):
""" See IMetadataTool.
"""
- for schema_id, schema in self.listSchemas():
+ for _schema_id, schema in self.listSchemas():
for element, policy in schema.listPolicies(
content.getPortalTypeName()):
@@ -591,5 +589,5 @@
'Value %s is not in allowed vocabulary for ' \
'metadata element %s.' % ( value, element )
-InitializeClass( MetadataTool )
+InitializeClass(MetadataTool)
registerToolInterface('portal_metadata', IMetadataTool)
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/MetadataTool.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFDefault/trunk/Products/CMFDefault/SyndicationInfo.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/SyndicationInfo.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/SyndicationInfo.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -14,13 +14,16 @@
"""
from OFS.SimpleItem import SimpleItem
-
from zope.component import adapts
-from zope.interface import implements, alsoProvides, noLongerProvides
+from zope.component import getUtility
+from zope.interface import alsoProvides
+from zope.interface import implements
+from zope.interface import noLongerProvides
-from Products.CMFCore.interfaces import (ISyndicatable, ISyndicationInfo,
- IFolderish)
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.interfaces import IFolderish
+from Products.CMFCore.interfaces import ISyndicatable
+from Products.CMFCore.interfaces import ISyndicationInfo
+from Products.CMFCore.interfaces import ISyndicationTool
class SyndicationInformation(SimpleItem):
@@ -52,7 +55,7 @@
@property
def site_settings(self):
"""Get site syndication tool"""
- return getToolByName(self.context, "portal_syndication")
+ return getUtility(ISyndicationTool)
def get_info(self):
"""
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/SyndicationInfo.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -14,9 +14,11 @@
"""
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
+from zope.component import getUtility
from zope.formlib import form
from zope.schema import getFieldNames
+from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFDefault.formlib.form import EditFormBase
from Products.CMFDefault.formlib.widgets import ChoiceRadioWidget
from Products.CMFDefault.utils import Message as _
@@ -40,7 +42,7 @@
def setUpWidgets(self, ignore_request=False):
data = {}
- ptool = self._getTool('portal_properties')
+ ptool = getUtility(IPropertiesTool)
charset = ptool.getProperty('default_charset', None)
for name in getFieldNames(IPortalConfig):
value = ptool.getProperty(name)
@@ -56,7 +58,7 @@
ignore_request=ignore_request)
def handle_success(self, action, data):
- ptool = self._getTool('portal_properties')
+ ptool = getUtility(IPropertiesTool)
ptool.editProperties(data)
self.status = _(u"Portal settings changed.")
self._setRedirect('portal_actions', 'global/configPortal')
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/syndication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/syndication.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/syndication.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -15,6 +15,7 @@
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from zope.component import getAdapter
+from zope.component import getUtility
from zope.formlib import form
from zope.interface import Interface
from zope.schema import Choice
@@ -22,6 +23,7 @@
from zope.schema import Int
from Products.CMFCore.interfaces import ISyndicationInfo
+from Products.CMFCore.interfaces import ISyndicationTool
from Products.CMFDefault.browser.utils import memoize
from Products.CMFDefault.formlib.form import EditFormBase
from Products.CMFDefault.formlib.vocabulary import SimpleVocabulary
@@ -97,7 +99,7 @@
@property
@memoize
def syndtool(self):
- return self._getTool("portal_syndication")
+ return getUtility(ISyndicationTool)
@memoize
def enabled(self, action=None):
@@ -202,7 +204,7 @@
@property
@memoize
def allowed(self):
- syndtool = self._getTool('portal_syndication')
+ syndtool = getUtility(ISyndicationTool)
return syndtool.isSiteSyndicationAllowed()
def handle_enable(self, action, data):
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -24,6 +24,7 @@
from Products.CMFCore.interfaces import IFolderish
from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import ISyndicationInfo
+from Products.CMFCore.interfaces import ISyndicationTool
from Products.CMFCore.interfaces import IURLTool
from Products.CMFCore.tests.base.dummy import DummyFolder
from Products.CMFCore.tests.base.dummy import DummySite
@@ -51,9 +52,9 @@
def setUp(self):
"""Setup a site"""
- self.site = site = DummySite('site')
- site.portal_syndication = DummySyndicationTool()
+ self.site = DummySite('site')
sm = getSiteManager()
+ sm.registerUtility(DummySyndicationTool(), ISyndicationTool)
sm.registerUtility(DummyTool(), IActionsTool)
sm.registerUtility(DummyTool(), IMembershipTool)
sm.registerUtility(DummyTool().__of__(self.site), IURLTool)
@@ -122,8 +123,9 @@
from Products.CMFDefault.SyndicationInfo import SyndicationInfo
self.site = DummySite('site')
- self.site.portal_syndication = DummySyndicationTool()
+ self.syndtool = DummySyndicationTool()
sm = getSiteManager()
+ sm.registerUtility(self.syndtool, ISyndicationTool)
sm.registerAdapter(SyndicationInfo, [IFolderish], ISyndicationInfo)
sm.registerUtility(DummyTool(), IActionsTool)
sm.registerUtility(DummyTool(), IMembershipTool)
@@ -157,7 +159,7 @@
self.assertTrue(view.disabled())
def test_handle_enable(self):
- self.site.portal_syndication.isAllowed = 1
+ self.syndtool.isAllowed = 1
view = self._getTargetClass()
view.handle_enable("enable", {})
self.assertTrue(view.enabled())
@@ -167,7 +169,7 @@
"Syndication%20enabled.")
def test_handle_disable(self):
- self.site.portal_syndication.isAllowed = 1
+ self.syndtool.isAllowed = 1
view = self._getTargetClass()
view.adapter.enable()
view.handle_disable("disable", {})
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/rss.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/rss.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/rss.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -18,6 +18,7 @@
from ZTUtils import LazyFilter
from Products.CMFCore.interfaces import ISyndicationInfo
+from Products.CMFCore.interfaces import ISyndicationTool
from Products.CMFCore.interfaces import IURLTool
from Products.CMFDefault.browser.utils import decode
from Products.CMFDefault.browser.utils import memoize
@@ -37,9 +38,9 @@
@decode
def items(self):
"""Return items according to policy"""
- stool = self._getTool("portal_syndication")
+ syndtool = getUtility(ISyndicationTool)
key, reverse = self.context.getDefaultSorting()
- items = stool.getSyndicatableContent(self.context)
+ items = syndtool.getSyndicatableContent(self.context)
items = sort(items, ((key, 'cmp', reverse and 'desc' or 'asc'),))
items = LazyFilter(items, skip='View')
items = ({'title': o.Title(), 'description': o.Description(),
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -38,6 +38,7 @@
from Products.CMFCore.interfaces import IActionsTool
from Products.CMFCore.interfaces import ICookieCrumbler
from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFCore.interfaces import IRegistrationTool
from Products.CMFCore.interfaces import ISkinsTool
from Products.CMFDefault.browser.utils import ViewBase, memoize
@@ -237,7 +238,7 @@
now = DateTime()
last_login = member.getProperty('login_time')
never_logged_in = str(last_login).startswith('2000/01/01')
- ptool = self._getTool('portal_properties')
+ ptool = getUtility(IPropertiesTool)
if never_logged_in and ptool.getProperty('validate_email'):
return self.first_login(member)
else:
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -21,10 +21,19 @@
from Products.CMFCore.interfaces import IActionsTool
from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import IPropertiesTool
+from Products.CMFCore.interfaces import ISyndicationTool
from Products.CMFCore.interfaces import IURLTool
from Products.CMFCore.interfaces import IWorkflowTool
+from Products.CMFDefault.utils import PRODUCTS_CMFCALENDAR_INSTALLED
+from Products.CMFDefault.utils import PRODUCTS_CMFUID_INSTALLED
+if PRODUCTS_CMFCALENDAR_INSTALLED:
+ from Products.CMFCalendar.interfaces import ICalendarTool
+if PRODUCTS_CMFUID_INSTALLED:
+ from Products.CMFUid.interfaces import IUniqueIdHandler
+
+
class UrsineGlobalsTests(unittest.TestCase, PlacelessSetup):
def setUp(self):
@@ -112,19 +121,22 @@
def test_wtool(self):
view = self._makeOne()
- tool = view.context.portal_workflow = DummyWorkflowTool()
+ tool = DummyWorkflowTool()
getSiteManager().registerUtility(tool, IWorkflowTool)
self.failUnless(view.wtool is tool)
def test_syndtool(self):
view = self._makeOne()
- tool = view.context.portal_syndication = DummyTool()
+ tool = DummyTool()
+ getSiteManager().registerUtility(tool, ISyndicationTool)
self.failUnless(view.syndtool is tool)
def test_uidtool(self):
view = self._makeOne()
- tool = view.context.portal_uidhandler = DummyTool()
- self.assertTrue(view.uidtool is tool)
+ if PRODUCTS_CMFUID_INSTALLED:
+ tool = DummyTool()
+ getSiteManager().registerUtility(tool, IUniqueIdHandler)
+ self.assertTrue(view.uidtool is tool)
def test_uidtool_not_installed(self):
view = self._makeOne()
@@ -132,13 +144,16 @@
def test_uidtool_installed(self):
view = self._makeOne()
- view.context.portal_uidhandler = DummyTool()
- self.assertTrue(view.uidtool_installed)
+ if PRODUCTS_CMFUID_INSTALLED:
+ getSiteManager().registerUtility(DummyTool(), IUniqueIdHandler)
+ self.assertTrue(view.uidtool_installed)
def test_caltool(self):
view = self._makeOne()
- tool = view.context.portal_calendar = DummyTool()
- self.assertTrue(view.caltool is tool)
+ if PRODUCTS_CMFCALENDAR_INSTALLED:
+ tool = DummyTool()
+ getSiteManager().registerUtility(tool, ICalendarTool)
+ self.assertTrue(view.caltool is tool)
def test_caltool_not_installed(self):
view = self._makeOne()
@@ -146,8 +161,9 @@
def test_caltool_installed(self):
view = self._makeOne()
- view.context.portal_calendar = DummyTool()
- self.assertTrue(view.caltool_installed)
+ if PRODUCTS_CMFCALENDAR_INSTALLED:
+ getSiteManager().registerUtility(DummyTool(), ICalendarTool)
+ self.assertTrue(view.caltool_installed)
def test_portal_object(self):
view = self._makeOne()
@@ -215,7 +231,7 @@
def test_wf_state(self):
view = self._makeOne()
- tool = view.context.portal_workflow = DummyWorkflowTool()
+ tool = DummyWorkflowTool()
getSiteManager().registerUtility(tool, IWorkflowTool)
self.assertEqual(view.wf_state, 'DUMMY')
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -14,19 +14,28 @@
"""
from zope.component import getUtility
+from zope.component import queryUtility
from Products.CMFCore.interfaces import IActionsTool
from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import IPropertiesTool
+from Products.CMFCore.interfaces import ISyndicationTool
from Products.CMFCore.interfaces import IURLTool
from Products.CMFCore.interfaces import IWorkflowTool
-from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.browser.utils import memoize
from Products.CMFDefault.browser.utils import ViewBase
from Products.CMFDefault.utils import decode
from Products.CMFDefault.utils import Message as _
+from Products.CMFDefault.utils import PRODUCTS_CMFCALENDAR_INSTALLED
+from Products.CMFDefault.utils import PRODUCTS_CMFUID_INSTALLED
+if PRODUCTS_CMFCALENDAR_INSTALLED:
+ from Products.CMFCalendar.interfaces import ICalendarTool
+if PRODUCTS_CMFUID_INSTALLED:
+ from Products.CMFUid.interfaces import IUniqueIdHandler
+
+
class UrsineGlobals(ViewBase):
""" Provide lazy / efficient template-level globals.
@@ -71,12 +80,14 @@
@property
@memoize
def syndtool(self):
- return self._getTool('portal_syndication')
+ return queryUtility(ISyndicationTool)
@property
@memoize
def caltool(self):
- return getToolByName(self.context, 'portal_calendar', None)
+ if PRODUCTS_CMFCALENDAR_INSTALLED:
+ return queryUtility(ICalendarTool)
+ return None
@property
@memoize
@@ -86,7 +97,9 @@
@property
@memoize
def uidtool(self):
- return getToolByName(self.context, 'portal_uidhandler', None)
+ if PRODUCTS_CMFUID_INSTALLED:
+ return queryUtility(IUniqueIdHandler)
+ return None
@property
@memoize
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -67,6 +67,7 @@
@memoize
def _getTool(self, name):
+ # BBB: _getTool is deprecated. Please use getUtility instead.
return getToolByName(self.context, name)
@memoize
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -34,6 +34,7 @@
from Products.CMFCore.interfaces import IFolderish
from Products.CMFCore.interfaces import ITypeInformation
from Products.CMFCore.interfaces import ITypesTool
+from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.browser.utils import ViewBase
from Products.CMFDefault.exceptions import AccessControl_Unauthorized
from Products.CMFDefault.exceptions import zExceptions_Unauthorized
@@ -49,7 +50,7 @@
template = ViewPageTemplateFile('editform.pt')
def _setRedirect(self, provider_id, action_path, keys=''):
- provider = self._getTool(provider_id)
+ provider = getToolByName(self.context, provider_id)
try:
target = provider.getActionInfo(action_path, self.context,
check_condition=1)['url']
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/widgets.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/widgets.txt 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/widgets.txt 2011-09-26 08:51:28 UTC (rev 122941)
@@ -145,8 +145,7 @@
>>> class DummyTool:
... def listAllowedSubjects(self, context): return ('SPAM', 'EGGS')
>>> view = DummyView()
- >>> view.portal_metadata = DummyTool()
- >>> getSiteManager().registerUtility(view.portal_metadata, IMetadataTool)
+ >>> getSiteManager().registerUtility(DummyTool(), IMetadataTool)
>>> request = DummyRequest()
>>> request.form['PREFIX.NAME.1'] = ['EGGS']
Modified: Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml 2011-09-26 08:51:28 UTC (rev 122941)
@@ -5,8 +5,12 @@
<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"
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/disableSyndication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/disableSyndication.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/disableSyndication.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -1,9 +1,11 @@
-## Script (Python) "disableSyndication"
+##parameters=
##title=Disable Syndication for a resource
-##parameters=
+##
+from Products.CMFCore.utils import getUtilityByInterfaceName
-if context.portal_syndication.isSyndicationAllowed(context):
- context.portal_syndication.disableSyndication(context)
+syndtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ISyndicationTool')
+if syndtool.isSyndicationAllowed(context):
+ syndtool.disableSyndication(context)
return context.REQUEST.RESPONSE.redirect(context.absolute_url() +
'/synPropertiesForm?portal_status_message=Syndication+Disabled')
else:
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/editSynProperties.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/editSynProperties.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/editSynProperties.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -1,7 +1,14 @@
-## Script (Python) "editSynProperties"
+##parameters=
##title=Enable Syndication for a resource
-##parameters=
-REQUEST=context.REQUEST
-pSyn = context.portal_syndication
-pSyn.editSyInformationProperties(context, REQUEST['updatePeriod'], REQUEST['updateFrequency'], REQUEST['updateBase'], REQUEST['max_items'], REQUEST)
+##
+from Products.CMFCore.utils import getUtilityByInterfaceName
+
+REQUEST = context.REQUEST
+syndtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ISyndicationTool')
+syndtool.editSyInformationProperties(context,
+ REQUEST['updatePeriod'],
+ REQUEST['updateFrequency'],
+ REQUEST['updateBase'],
+ REQUEST['max_items'],
+ REQUEST)
return REQUEST.RESPONSE.redirect(context.absolute_url() + '/synPropertiesForm?portal_status_message=Syndication+Properties+Updated.')
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/editSynProperties.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/enableSyndication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/enableSyndication.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/enableSyndication.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -1,9 +1,11 @@
-## Script (Python) "enableSyndication"
+##parameters=
##title=Enable Syndication for a resource
-##parameters=
+##
+from Products.CMFCore.utils import getUtilityByInterfaceName
-if context.portal_syndication.isSiteSyndicationAllowed():
- context.portal_syndication.enableSyndication(context)
+syndtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ISyndicationTool')
+if syndtool.isSiteSyndicationAllowed():
+ syndtool.enableSyndication(context)
msg = 'Syndication+Enabled'
else:
msg = 'Syndication+Not+Allowed'
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/enableSyndication.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -6,21 +6,21 @@
from Products.CMFDefault.utils import getBrowserCharset
atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool',
- # BBB: fallback for CMF 2.2 instances
+ # fallback for bootstrap
getToolByName(script, 'portal_actions'))
-caltool = getToolByName(script, 'portal_calendar', None)
+caltool = getUtilityByInterfaceName('Products.CMFCalendar.interfaces.ICalendarTool', None)
mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool',
- # BBB: fallback for CMF 2.2 instances
+ # fallback for bootstrap
getToolByName(script, 'portal_membership'))
ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool',
- # BBB: fallback for CMF 2.2 instances
+ # fallback for bootstrap
getToolByName(script, 'portal_url'))
wtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IWorkflowTool',
- # BBB: fallback for CMF 2.2 instances
+ # fallback for bootstrap
getToolByName(script, 'portal_workflow'))
-uidtool = getToolByName(script, 'portal_uidhandler', None)
-syndtool = getToolByName(script, 'portal_syndication', None)
+uidtool = getUtilityByInterfaceName('Products.CMFUid.interfaces.IUniqueIdHandler', None)
+syndtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ISyndicationTool', None)
portal_object = utool.getPortalObject()
isAnon = mtool.isAnonymousUser()
member = mtool.getAuthenticatedMember()
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/get_permalink.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/get_permalink.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/get_permalink.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -2,11 +2,10 @@
##title=Returns the permalink url or None
##
from Products.CMFCore.utils import getUtilityByInterfaceName
-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 = getToolByName(context, 'portal_uidhandler', None)
+uidtool = getUtilityByInterfaceName('Products.CMFUid.interfaces.IUniqueIdHandler', None)
if uidtool is not None:
ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
showPermalink = getattr(ptool, 'enable_permalink', None)
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Discussions.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Discussions.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Discussions.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -32,7 +32,6 @@
from Products.CMFCore.tests.base.tidata import FTIDATA_DUMMY
from Products.CMFCore.TypesTool import FactoryTypeInformation as FTI
from Products.CMFCore.TypesTool import TypesTool
-from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.DiscussionTool import DiscussionTool
from Products.CMFDefault.exceptions import DiscussionNotAllowed
@@ -316,8 +315,8 @@
dtool = self.dtool
talkback = dtool.getDiscussionFor(test)
self.failUnless(hasattr(talkback, 'aq_base'))
- # Acquire a portal tool
- self.failUnless(getToolByName(talkback, 'portal_discussion'))
+ # Acquire REQUEST
+ self.failUnless(getattr(talkback, 'REQUEST'))
def test_existingTalkbackIsWrapped(self):
test = self._makeDummyContent('test')
@@ -326,8 +325,8 @@
dtool.getDiscussionFor(test)
talkback = dtool.getDiscussionFor(test)
self.failUnless(hasattr(talkback, 'aq_base'))
- # Acquire a portal tool
- self.failUnless(getToolByName(talkback, 'portal_discussion'))
+ # Acquire REQUEST
+ self.failUnless(getattr(talkback, 'REQUEST'))
def test_suite():
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DublinCore.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DublinCore.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DublinCore.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -19,9 +19,11 @@
from AccessControl.SecurityManagement import newSecurityManager
from Acquisition import Implicit
from DateTime.DateTime import DateTime
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
from zope.testing.cleanup import cleanUp
+from Products.CMFCore.interfaces import IMetadataTool
from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.dummy import DummyUserFolder
from Products.CMFCore.tests.base.testcase import SecurityTest
@@ -151,7 +153,8 @@
def test_publisher_with_metadata_tool(self):
PUBLISHER = 'Some Publisher'
site = DummySite('site').__of__(self.root)
- site.portal_metadata = DummyMetadataTool(publisher=PUBLISHER)
+ tool = DummyMetadataTool(publisher=PUBLISHER)
+ getSiteManager().registerUtility(tool, IMetadataTool)
item = self._makeDummyContent('item').__of__(site)
self.assertEqual(item.Publisher(), PUBLISHER)
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_File.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_File.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_File.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -20,14 +20,16 @@
import transaction
from App.Common import rfc1123_date
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
from zope.testing.cleanup import cleanUp
+from Products.CMFCore.interfaces import ICachingPolicyManager
from Products.CMFCore.testing import ConformsToContent
from Products.CMFCore.tests.base.dummy import DummyCachingManager
from Products.CMFCore.tests.base.dummy import DummyCachingManagerWithPolicy
from Products.CMFCore.tests.base.dummy import FAKE_ETAG
-from Products.CMFCore.tests.base.testcase import RequestTest
+from Products.CMFCore.tests.base.testcase import TransactionalTest
from Products.CMFDefault import tests
TESTS_HOME = tests.__path__[0]
@@ -82,7 +84,7 @@
self.assertEqual(file.content_type, 'image/jpeg')
-class CachingTests(RequestTest):
+class CachingTests(TransactionalTest):
def _getTargetClass(self):
from Products.CMFDefault.File import File
@@ -92,9 +94,8 @@
def _makeOne(self, *args, **kw):
return self._getTargetClass()(*args, **kw)
- def _extractFile( self ):
-
- f = open( TEST_SWF, 'rb' )
+ def _extractFile(self):
+ f = open(TEST_SWF, 'rb')
try:
data = f.read()
finally:
@@ -102,99 +103,100 @@
return TEST_SWF, data
- def _setupCachingPolicyManager(self, cpm_object):
- self.root.caching_policy_manager = cpm_object
-
def tearDown(self):
cleanUp()
- RequestTest.tearDown(self)
+ TransactionalTest.tearDown(self)
- def test_index_html_with_304_from_cpm( self ):
- self._setupCachingPolicyManager(DummyCachingManagerWithPolicy())
- path, ref = self._extractFile()
- file = self._makeOne( 'test_file', 'test_file.swf', file=ref )
- file = file.__of__( self.root )
+ def test_index_html_with_304_from_cpm(self):
+ cpm = DummyCachingManagerWithPolicy()
+ getSiteManager().registerUtility(cpm, ICachingPolicyManager)
+ _path, ref = self._extractFile()
+ file = self._makeOne('test_file', 'test_file.swf', file=ref)
+ file = file.__of__(self.app)
mod_time = file.modified().timeTime()
- self.REQUEST.environ[ 'IF_MODIFIED_SINCE'
- ] = '%s;' % rfc1123_date( mod_time )
- self.REQUEST.environ[ 'IF_NONE_MATCH'
+ self.REQUEST.environ['IF_MODIFIED_SINCE'
+ ] = '%s;' % rfc1123_date(mod_time)
+ self.REQUEST.environ['IF_NONE_MATCH'
] = '%s;' % FAKE_ETAG
- data = file.index_html( self.REQUEST, self.RESPONSE )
- self.assertEqual( len(data), 0 )
- self.assertEqual( self.RESPONSE.getStatus(), 304 )
+ data = file.index_html(self.REQUEST, self.RESPONSE)
+ self.assertEqual(len(data), 0)
+ self.assertEqual(self.RESPONSE.getStatus(), 304)
- def test_index_html_200_with_cpm( self ):
+ def test_index_html_200_with_cpm(self):
# should behave the same as without cpm installed
- self._setupCachingPolicyManager(DummyCachingManager())
- path, ref = self._extractFile()
- file = self._makeOne( 'test_file', 'test_file.swf', file=ref )
- file = file.__of__( self.root )
+ cpm = DummyCachingManagerWithPolicy()
+ getSiteManager().registerUtility(cpm, ICachingPolicyManager)
+ _path, ref = self._extractFile()
+ file = self._makeOne('test_file', 'test_file.swf', file=ref)
+ file = file.__of__(self.app)
mod_time = file.modified().timeTime()
- data = file.index_html( self.REQUEST, self.RESPONSE )
+ data = file.index_html(self.REQUEST, self.RESPONSE)
- self.assertEqual( len( data ), len( ref ) )
- self.assertEqual( data, ref )
+ self.assertEqual(len(data), len(ref))
+ self.assertEqual(data, ref)
# ICK! 'HTTPResponse.getHeader' doesn't case-flatten the key!
- self.assertEqual( self.RESPONSE.getHeader( 'Content-Length'.lower() )
- , str(len(ref)) )
- self.assertEqual( self.RESPONSE.getHeader( 'Content-Type'.lower() )
- , 'application/octet-stream' )
- self.assertEqual( self.RESPONSE.getHeader( 'Last-Modified'.lower() )
- , rfc1123_date( mod_time ) )
+ self.assertEqual(self.RESPONSE.getHeader('Content-Length'.lower())
+ , str(len(ref)))
+ self.assertEqual(self.RESPONSE.getHeader('Content-Type'.lower())
+ , 'application/octet-stream')
+ self.assertEqual(self.RESPONSE.getHeader('Last-Modified'.lower())
+ , rfc1123_date(mod_time))
- def test_caching( self ):
- large_file_data = '0' * 100000
+ def test_caching(self):
+ large_data = '0' * 100000
def fake_response_write(data):
return
response_write = self.RESPONSE.write
self.RESPONSE.write = fake_response_write
- self._setupCachingPolicyManager(DummyCachingManager())
+ cpm = DummyCachingManager()
+ getSiteManager().registerUtility(cpm, ICachingPolicyManager)
original_len = len(self.RESPONSE.headers)
- file = self._makeOne('test_file', 'test_file.swf', file=large_file_data)
- file = file.__of__(self.root)
- file.index_html(self.REQUEST, self.RESPONSE)
+ obj = self._makeOne('test_file', 'test_file.swf', file=large_data)
+ obj = obj.__of__(self.app)
+ obj.index_html(self.REQUEST, self.RESPONSE)
headers = self.RESPONSE.headers
self.failUnless(len(headers) >= original_len + 3)
self.failUnless('foo' in headers.keys())
self.failUnless('bar' in headers.keys())
self.assertEqual(headers['test_path'], '/test_file')
self.RESPONSE.write = response_write
-
+
def test_caching_policy_headers_are_canonical(self):
"""Ensure that headers set by the caching policy manager trump
any of the same name that from time to time may be set while
rendering the object."""
- path, ref = self._extractFile()
+ _path, ref = self._extractFile()
- self._setupCachingPolicyManager(LMDummyCachingManager())
+ cpm = LMDummyCachingManager()
+ getSiteManager().registerUtility(cpm, ICachingPolicyManager)
- file = self._makeOne( 'test_file', 'test_file.swf', file=ref )
-
+ obj = self._makeOne('test_file', 'test_file.swf', file=ref)
+
# Cause persistent's modified time record to be set
- self.root.foo = file
+ self.app.foo = obj
transaction.commit()
- file = self.root.foo
+ obj = self.app.foo
# end
# index_html in OFS will set Last-modified if ._p_mtime exists
- file.index_html(self.REQUEST, self.RESPONSE)
-
+ obj.index_html(self.REQUEST, self.RESPONSE)
+
headers = self.RESPONSE.headers
- self.assertEqual(headers['last-modified'],
+ self.assertEqual(headers['last-modified'],
"Sun, 06 Nov 1994 08:49:37 GMT")
# We set up a new type of dummy caching manager that sets a bogus
# last modified date. This should be visible in the request
class LMDummyCachingManager(DummyCachingManager):
- def getHTTPCachingHeaders( self, content, view_name,
- keywords, time=None ):
- return ('Last-modified', 'Sun, 06 Nov 1994 08:49:37 GMT'),
+ def getHTTPCachingHeaders(self, content, view_name,
+ keywords, time=None):
+ return ('Last-modified', 'Sun, 06 Nov 1994 08:49:37 GMT'),
def test_suite():
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Image.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Image.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Image.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -23,17 +23,19 @@
from AccessControl.SecurityManagement import newSecurityManager
from AccessControl.User import UnrestrictedUser
from App.Common import rfc1123_date
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
from zope.site.hooks import setSite
from zope.testing.cleanup import cleanUp
+from Products.CMFCore.interfaces import ICachingPolicyManager
from Products.CMFCore.testing import ConformsToContent
from Products.CMFCore.tests.base.dummy import DummyCachingManager
from Products.CMFCore.tests.base.dummy import DummyCachingManagerWithPolicy
from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.dummy import DummyTool
from Products.CMFCore.tests.base.dummy import FAKE_ETAG
-from Products.CMFCore.tests.base.testcase import RequestTest
+from Products.CMFCore.tests.base.testcase import TransactionalTest
from Products.CMFDefault import tests
from Products.CMFDefault.testing import FunctionalLayer
@@ -187,18 +189,8 @@
self.assertEqual(review_state, 'published')
-class TestCaching(RequestTest):
+class CachingTests(TransactionalTest):
- def _extractFile( self ):
-
- f = open( TEST_JPG, 'rb' )
- try:
- data = f.read()
- finally:
- f.close()
-
- return TEST_JPG, data
-
def _getTargetClass(self):
from Products.CMFDefault.Image import Image
@@ -207,41 +199,71 @@
def _makeOne(self, *args, **kw):
return self._getTargetClass()(*args, **kw)
- def _setupCachingPolicyManager(self, cpm_object):
- self.root.caching_policy_manager = cpm_object
+ def _extractFile(self):
+ f = open(TEST_JPG, 'rb')
+ try:
+ data = f.read()
+ finally:
+ f.close()
+ return TEST_JPG, data
+
def tearDown(self):
cleanUp()
- RequestTest.tearDown(self)
+ TransactionalTest.tearDown(self)
- def test_index_html_with_304_from_cpm( self ):
- self._setupCachingPolicyManager(DummyCachingManagerWithPolicy())
- path, ref = self._extractFile()
- self.root.file = self._makeOne('test_file', 'test_image.jpg', file=ref)
- file = self.root.file
+ def test_index_html_with_304_from_cpm(self):
+ cpm = DummyCachingManagerWithPolicy()
+ getSiteManager().registerUtility(cpm, ICachingPolicyManager)
+ _path, ref = self._extractFile()
+ file = self._makeOne('test_file', 'test_image.jpg', file=ref)
+ file = file.__of__(self.app)
- mod_time = file.modified()
+ mod_time = file.modified().timeTime()
- self.REQUEST.environ[ 'IF_MODIFIED_SINCE'
- ] = '%s;' % rfc1123_date( mod_time )
- self.REQUEST.environ[ 'IF_NONE_MATCH'
+ self.REQUEST.environ['IF_MODIFIED_SINCE'
+ ] = '%s;' % rfc1123_date(mod_time)
+ self.REQUEST.environ['IF_NONE_MATCH'
] = '%s;' % FAKE_ETAG
- data = file.index_html( self.REQUEST, self.RESPONSE )
- self.assertEqual( len(data), 0 )
- self.assertEqual( self.RESPONSE.getStatus(), 304 )
+ data = file.index_html(self.REQUEST, self.RESPONSE)
+ self.assertEqual(len(data), 0)
+ self.assertEqual(self.RESPONSE.getStatus(), 304)
- def test_caching( self ):
+ def test_index_html_200_with_cpm(self):
+ # should behave the same as without cpm installed
+ cpm = DummyCachingManagerWithPolicy()
+ getSiteManager().registerUtility(cpm, ICachingPolicyManager)
+ _path, ref = self._extractFile()
+ file = self._makeOne('test_file', 'test_image.jpg', file=ref)
+ file = file.__of__(self.app)
+
+ mod_time = file.modified().timeTime()
+
+ data = file.index_html(self.REQUEST, self.RESPONSE)
+
+ self.assertEqual(len(data), len(ref))
+ self.assertEqual(data, ref)
+ # ICK! 'HTTPResponse.getHeader' doesn't case-flatten the key!
+ self.assertEqual(self.RESPONSE.getHeader('Content-Length'.lower())
+ , str(len(ref)))
+ self.assertEqual(self.RESPONSE.getHeader('Content-Type'.lower())
+ , 'image/jpeg')
+ self.assertEqual(self.RESPONSE.getHeader('Last-Modified'.lower())
+ , rfc1123_date(mod_time))
+
+ def test_caching(self):
large_data = '0' * 100000
def fake_response_write(data):
return
response_write = self.RESPONSE.write
self.RESPONSE.write = fake_response_write
- self._setupCachingPolicyManager(DummyCachingManager())
+ cpm = DummyCachingManager()
+ getSiteManager().registerUtility(cpm, ICachingPolicyManager)
original_len = len(self.RESPONSE.headers)
- image = self._makeOne('test_image', 'test_image.jpg', file=large_data)
- image = image.__of__(self.root)
- image.index_html(self.REQUEST, self.RESPONSE)
+ obj = self._makeOne('test_image', 'test_image.jpg', file=large_data)
+ obj = obj.__of__(self.app)
+ obj.index_html(self.REQUEST, self.RESPONSE)
headers = self.RESPONSE.headers
self.failUnless(len(headers) >= original_len + 3)
self.failUnless('foo' in headers.keys())
@@ -249,45 +271,25 @@
self.assertEqual(headers['test_path'], '/test_image')
self.RESPONSE.write = response_write
- def test_index_html_200_with_cpm( self ):
- self._setupCachingPolicyManager(DummyCachingManagerWithPolicy())
- path, ref = self._extractFile()
- file = self._makeOne( 'test_file', 'test_image.jpg', file=ref )
- file = file.__of__( self.root )
-
- mod_time = file.modified()
-
- data = file.index_html( self.REQUEST, self.RESPONSE )
-
- # should behave the same as without cpm
- self.assertEqual( len( data ), len( ref ) )
- self.assertEqual( data, ref )
- # ICK! 'HTTPResponse.getHeader' doesn't case-flatten the key!
- self.assertEqual( self.RESPONSE.getHeader( 'Content-Length'.lower() )
- , str(len(ref)) )
- self.assertEqual( self.RESPONSE.getHeader( 'Content-Type'.lower() )
- , 'image/jpeg' )
- self.assertEqual( self.RESPONSE.getHeader( 'Last-Modified'.lower() )
- , rfc1123_date( mod_time ) )
-
- def test_index_html_with_304_and_caching( self ):
+ def test_index_html_with_304_and_caching(self):
# See collector #355
- self._setupCachingPolicyManager(DummyCachingManager())
+ cpm = DummyCachingManager()
+ getSiteManager().registerUtility(cpm, ICachingPolicyManager)
original_len = len(self.RESPONSE.headers)
- path, ref = self._extractFile()
- self.root.image = self._makeOne( 'test_image', 'test_image.gif' )
- image = self.root.image
+ _path, ref = self._extractFile()
+ self.app.image = self._makeOne('test_image', 'test_image.gif', file=ref)
+ image = self.app.image
transaction.savepoint(optimistic=True)
mod_time = image.modified()
- self.REQUEST.environ[ 'IF_MODIFIED_SINCE'
- ] = '%s;' % rfc1123_date( mod_time+1 )
+ self.REQUEST.environ['IF_MODIFIED_SINCE'
+ ] = '%s;' % rfc1123_date(mod_time + 1)
- data = image.index_html( self.REQUEST, self.RESPONSE )
+ data = image.index_html(self.REQUEST, self.RESPONSE)
- self.assertEqual( data, '' )
- self.assertEqual( self.RESPONSE.getStatus(), 304 )
+ self.assertEqual(data, '')
+ self.assertEqual(self.RESPONSE.getStatus(), 304)
headers = self.RESPONSE.headers
self.failUnless(len(headers) >= original_len + 3)
@@ -299,23 +301,24 @@
"""Ensure that headers set by the caching policy manager trump
any of the same name that from time to time may be set while
rendering the object."""
- path, ref = self._extractFile()
+ _path, ref = self._extractFile()
- self._setupCachingPolicyManager(LMDummyCachingManager())
+ cpm = LMDummyCachingManager()
+ getSiteManager().registerUtility(cpm, ICachingPolicyManager)
- img = self._makeOne( 'test_image', 'test_image.gif' )
-
+ obj = self._makeOne('test_image', 'test_image.gif', file=ref)
+
# Cause persistent's modified time record to be set
- self.root.foo = img
+ self.app.foo = obj
transaction.commit()
- img = self.root.foo
+ obj = self.app.foo
# end
-
+
# index_html in OFS will set Last-modified if ._p_mtime exists
- img.index_html(self.REQUEST, self.RESPONSE)
-
+ obj.index_html(self.REQUEST, self.RESPONSE)
+
headers = self.RESPONSE.headers
- self.assertEqual(headers['last-modified'],
+ self.assertEqual(headers['last-modified'],
"Sun, 06 Nov 1994 08:49:37 GMT")
@@ -323,5 +326,5 @@
return unittest.TestSuite((
unittest.makeSuite(TestImageElement),
unittest.makeSuite(TestImageCopyPaste),
- unittest.makeSuite(TestCaching),
+ unittest.makeSuite(CachingTests),
))
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Portal.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Portal.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_Portal.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -19,11 +19,16 @@
from AccessControl.SecurityManagement import newSecurityManager
from AccessControl.User import UnrestrictedUser
from Acquisition import aq_base
+from zope.component import queryUtility
from zope.site.hooks import setSite
from Products.CMFDefault.testing import FunctionalLayer
+from Products.CMFDefault.utils import PRODUCTS_CMFUID_INSTALLED
+if PRODUCTS_CMFUID_INSTALLED:
+ from Products.CMFUid.interfaces import IUniqueIdHandler
+
class CMFSiteTests(ZopeTestCase.FunctionalTestCase):
layer = FunctionalLayer
@@ -51,7 +56,7 @@
site = self.app.site
catalog = site.portal_catalog
ttool = site.portal_types
- uid_handler = getattr(site, 'portal_uidhandler', None)
+ uidtool = queryUtility(IUniqueIdHandler)
portal_types = [ x for x in ttool.listContentTypes()
if x not in ( 'Discussion Item'
@@ -71,7 +76,7 @@
# in case of the CMFUid beeing installed this test
# indexes also the site root because the 'Favorite'
# references it by unique id
- isUidEnabledFavorite = uid_handler and portal_type == 'Favorite'
+ isUidEnabledFavorite = uidtool and portal_type == 'Favorite'
if isUidEnabledFavorite:
self.assertEqual( len( catalog ), 2 )
else:
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_PropertiesTool.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_PropertiesTool.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_PropertiesTool.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -26,12 +26,13 @@
from Products.MailHost.interfaces import IMailHost
from Products.MailHost.MailHost import MailHost
-from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFCore.interfaces import ISiteRoot
from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.testcase import SecurityTest
+
class PropertiedDummySite(PropertyManager, DummySite):
+
_properties = (
{'id':'title', 'type':'string', 'mode': 'w'},
{'id':'description', 'type':'text', 'mode': 'w'},
@@ -55,14 +56,14 @@
return PropertiesTool(*args, **kw)
def setUp(self):
+ from Products.CMFCore.interfaces import IPropertiesTool
+
SecurityTest.setUp(self)
self.site = PropertiedDummySite('site')
sm = getSiteManager()
+ sm.registerUtility(MailHost('MailHost'), IMailHost)
+ sm.registerUtility(self._makeOne(), IPropertiesTool)
sm.registerUtility(self.site, ISiteRoot)
- self.site._setObject('portal_properties', self._makeOne())
- sm.registerUtility(self.site.portal_properties, IPropertiesTool)
- self.site._setObject('MailHost', MailHost('MailHost'))
- sm.registerUtility(self.site.MailHost, IMailHost)
def tearDown(self):
cleanUp()
@@ -75,6 +76,8 @@
verifyClass(IPropertiesTool, PropertiesTool)
def test_editProperties(self):
+ from Products.CMFCore.interfaces import IPropertiesTool
+
# https://bugs.launchpad.net/zope-cmf/+bug/174246
# PropertiesTool.editProperties fails with traceback due to
# faulty invocation of the site's manage_changeProperties method
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_SyndicationInfo.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_SyndicationInfo.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_SyndicationInfo.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -1,43 +1,59 @@
+##############################################################################
+#
+# Copyright (c) 2010 Zope Foundation and Contributors.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+""" Unit tests for the SyndicationInfo adapter.
"""
-Unit tests for the SyndicationInfo adapter
-"""
import unittest
+import Testing
from DateTime.DateTime import DateTime
-
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
+from Products.CMFCore.interfaces import ISyndicationTool
from Products.CMFCore.tests.base.testcase import TransactionalTest
class SyndicationInfoTests(TransactionalTest):
-
+
def setUp(self):
+ from Products.CMFCore.PortalFolder import PortalFolder
+
super(SyndicationInfoTests, self).setUp()
- from Products.CMFCore.PortalFolder import PortalFolder
- self.root._setObject('portal', PortalFolder('portal'))
- self.portal = self.root.portal
- tool = self.portal._setObject('portal_syndication',
- DummySyndicationTool())
- self.syndication_tool = self.portal.portal_syndication
-
+ self.app._setObject('portal', PortalFolder('portal'))
+ self.portal = self.app.portal
+ self.syndtool = DummySyndicationTool()
+ getSiteManager().registerUtility(self.syndtool, ISyndicationTool)
+
def _getTargetClass(self):
from Products.CMFDefault.SyndicationInfo import SyndicationInfo
+
return SyndicationInfo
-
+
def _makeOne(self):
from Products.CMFCore.PortalFolder import PortalFolder
+
self.portal._setObject('folder', PortalFolder('folder'))
return self._getTargetClass()(self.portal.folder)
- def test_inteface(self):
+ def test_interfaces(self):
from Products.CMFCore.interfaces import ISyndicationInfo
+
verifyClass(ISyndicationInfo, self._getTargetClass())
def test_site_settings(self):
adapter = self._makeOne()
- self.assertTrue(adapter.site_settings is self.syndication_tool)
+ self.assertTrue(adapter.site_settings is self.syndtool)
def test_get_info(self):
adapter = self._makeOne()
@@ -68,13 +84,13 @@
def test_enable(self):
adapter = self._makeOne()
- self.syndication_tool.isAllowed = 1
+ self.syndtool.isAllowed = 1
adapter.enable()
self.assertTrue(adapter.enabled)
def test_disable(self):
adapter = self._makeOne()
- self.syndication_tool.isAllowed = 1
+ self.syndtool.isAllowed = 1
adapter.enable()
self.assertTrue(adapter.enabled)
adapter.disable()
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_SyndicationTool.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_SyndicationTool.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_SyndicationTool.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -236,8 +236,7 @@
getSiteManager().registerUtility(TypesTool(), ITypesTool)
self.app._setObject('pf', PortalFolder('pf'))
self.app._setObject('bf', CMFBTreeFolder('bf'))
- self.app._setObject('portal_syndication', self._makeOne())
- tool = self.app.portal_syndication
+ tool = self._makeOne()
tool.editProperties(updatePeriod=PERIOD,
updateFrequency=FREQUENCY,
updateBase=NOW,
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -263,8 +263,11 @@
logger.info("Member data tool property modes fixed.")
_TOOL_UTILITIES = (
+ ('caching_policy_manager', 'Products.CMFCore.interfaces.ICachingPolicyManager'),
+ ('content_type_registry', 'Products.CMFCore.interfaces.IContentTypeRegistry'),
('cookie_authentication', 'Products.CMFCore.interfaces.ICookieCrumbler'),
('portal_actions', 'Products.CMFCore.interfaces.IActionsTool'),
+ ('portal_calendar', 'Products.CMFCalendar.interfaces.ICalendarTool'),
('portal_catalog', 'Products.CMFCore.interfaces.ICatalogTool'),
('portal_memberdata', 'Products.CMFCore.interfaces.IMemberDataTool'),
('portal_membership', 'Products.CMFCore.interfaces.IMembershipTool'),
Modified: Products.CMFDefault/trunk/Products/CMFDefault/utils.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/utils.py 2011-09-26 08:51:14 UTC (rev 122940)
+++ Products.CMFDefault/trunk/Products/CMFDefault/utils.py 2011-09-26 08:51:28 UTC (rev 122941)
@@ -11,39 +11,50 @@
#
##############################################################################
""" Utility functions.
-
-$Id$
"""
-from email.Header import make_header
-from email.MIMEText import MIMEText
import os
import re
import rfc822
+import StringIO
+from email.Header import make_header
+from email.MIMEText import MIMEText
from sgmllib import SGMLParser
-import StringIO
from AccessControl.SecurityInfo import ModuleSecurityInfo
from Acquisition import aq_get
from App.Common import package_home
-from ZTUtils.Zope import complex_marshal
-
+from pkg_resources import DistributionNotFound
+from pkg_resources import get_distribution
+from zope import i18n # disambiguation
from zope.component import getUtility
from zope.component import queryUtility
-from zope import i18n # disambiguation
from zope.i18n.interfaces import IUserPreferredCharsets
from zope.i18nmessageid import MessageFactory
from zope.publisher.interfaces.browser import IBrowserRequest
+from ZTUtils.Zope import complex_marshal
from Products.CMFCore.interfaces import IPropertiesTool
-
-from Products.CMFDefault.interfaces import IHTMLScrubber
from Products.CMFDefault.exceptions import EmailAddressInvalid
from Products.CMFDefault.exceptions import IllegalHTML
+from Products.CMFDefault.interfaces import IHTMLScrubber
-
security = ModuleSecurityInfo( 'Products.CMFDefault.utils' )
+try:
+ get_distribution('Products.CMFCalendar')
+except DistributionNotFound:
+ PRODUCTS_CMFCALENDAR_INSTALLED = False
+else:
+ PRODUCTS_CMFCALENDAR_INSTALLED = True
+
+try:
+ get_distribution('Products.CMFUid')
+except DistributionNotFound:
+ PRODUCTS_CMFUID_INSTALLED = False
+else:
+ PRODUCTS_CMFUID_INSTALLED = True
+
security.declarePrivate('_dtmldir')
_dtmldir = os.path.join( package_home( globals() ), 'dtml' )
_wwwdir = os.path.join( package_home( globals() ), 'www' )
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/utils.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
More information about the checkins
mailing list