[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ - the skins tool is now looked up as utility
Yvo Schubbe
cvs-admin at zope.org
Wed Sep 5 13:59:21 UTC 2012
Log message for revision 127718:
- the skins tool is now looked up as utility
Changed:
U Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
U Products.CMFCore/trunk/Products/CMFCore/PortalObject.py
U Products.CMFCore/trunk/Products/CMFCore/Skinnable.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_SkinsTool.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2012-09-05 13:02:24 UTC (rev 127717)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2012-09-05 13:59:17 UTC (rev 127718)
@@ -4,6 +4,9 @@
2.3.0 (unreleased)
------------------
+- Skinnable: The skins tool is now looked up as utility.
+ 'getSkinsFolderName' is no longer supported, that method was removed.
+
- permissions: Fixed some issues in permissions.zcml.
Modified: Products.CMFCore/trunk/Products/CMFCore/PortalObject.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/PortalObject.py 2012-09-05 13:02:24 UTC (rev 127717)
+++ Products.CMFCore/trunk/Products/CMFCore/PortalObject.py 2012-09-05 13:59:17 UTC (rev 127718)
@@ -31,9 +31,7 @@
from Products.CMFCore.PortalFolder import PortalFolder
from Products.CMFCore.Skinnable import SkinnableObjectManager
-PORTAL_SKINS_TOOL_ID = 'portal_skins'
-
class PortalObjectBase(PortalFolder, SkinnableObjectManager):
implements(ISiteRoot, IObjectManagerSite)
@@ -59,9 +57,6 @@
components.__parent__ = self
self.setSiteManager(components)
- def getSkinsFolderName(self):
- return PORTAL_SKINS_TOOL_ID
-
def __before_publishing_traverse__(self, arg1, arg2=None):
""" Pre-traversal hook.
"""
Modified: Products.CMFCore/trunk/Products/CMFCore/Skinnable.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/Skinnable.py 2012-09-05 13:02:24 UTC (rev 127717)
+++ Products.CMFCore/trunk/Products/CMFCore/Skinnable.py 2012-09-05 13:59:17 UTC (rev 127718)
@@ -24,7 +24,10 @@
from App.class_init import InitializeClass
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')
_MARKER = object() # Create a new marker object.
@@ -48,11 +51,6 @@
security = ClassSecurityInfo()
- security.declarePrivate('getSkinsFolderName')
- def getSkinsFolderName(self):
- # Not implemented.
- return None
-
def __getattr__(self, name):
'''
Looks for the name in an object with wrappers that only reach
@@ -86,17 +84,14 @@
"""Returns the requested skin.
"""
skinob = None
- sfn = self.getSkinsFolderName()
-
- if sfn is not None:
- sf = getattr(self, sfn, None)
- if sf is not None:
- if name is not None:
- skinob = sf.getSkinByName(name)
+ stool = queryUtility(ISkinsTool)
+ if stool is not None:
+ if name is not None:
+ skinob = stool.getSkinByName(name)
+ if skinob is None:
+ skinob = stool.getSkinByName(stool.getDefaultSkin())
if skinob is None:
- skinob = sf.getSkinByName(sf.getDefaultSkin())
- if skinob is None:
- skinob = sf.getSkinByPath('')
+ skinob = stool.getSkinByPath('')
return skinob
security.declarePublic('getSkinNameFromRequest')
@@ -104,11 +99,9 @@
'''Returns the skin name from the Request.'''
if REQUEST is None:
return None
- sfn = self.getSkinsFolderName()
- if sfn is not None:
- sf = getattr(self, sfn, None)
- if sf is not None:
- return REQUEST.get(sf.getRequestVarname(), None)
+ stool = queryUtility(ISkinsTool)
+ if stool is not None:
+ return REQUEST.get(stool.getRequestVarname(), None)
security.declarePublic('changeSkin')
def changeSkin(self, skinname, REQUEST=None):
@@ -134,11 +127,9 @@
if skinname is not None:
return skinname
# nothing here, so assume the default skin
- sfn = self.getSkinsFolderName()
- if sfn is not None:
- sf = getattr(self, sfn, None)
- if sf is not None:
- return sf.getDefaultSkin()
+ stool = queryUtility(ISkinsTool)
+ if stool is not None:
+ return stool.getDefaultSkin()
# and if that fails...
return None
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_SkinsTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_SkinsTool.py 2012-09-05 13:02:24 UTC (rev 127717)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_SkinsTool.py 2012-09-05 13:59:17 UTC (rev 127718)
@@ -16,6 +16,7 @@
import unittest
import Testing
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
from zope.testing.cleanup import cleanUp
@@ -69,19 +70,14 @@
class SkinnableTests(unittest.TestCase):
def _makeOne(self):
- from Products.CMFCore.SkinsTool import SkinsTool
from Products.CMFCore.Skinnable import SkinnableObjectManager
class TestSkinnableObjectManager(SkinnableObjectManager):
- tool = SkinsTool()
+
# This is needed otherwise REQUEST is the string
# '<Special Object Used to Force Acquisition>'
REQUEST = None
- def getSkinsFolderName(self):
- '''tool'''
- return 'tool'
-
return TestSkinnableObjectManager()
def tearDown(self):
@@ -90,16 +86,20 @@
cleanUp()
def test_getCurrentSkinName(self):
+ from Products.CMFCore.interfaces import ISkinsTool
+ from Products.CMFCore.SkinsTool import SkinsTool
+
som = self._makeOne()
pathA = ('foo, bar')
pathB = ('bar, foo')
- som.tool.addSkinSelection('skinA', pathA)
- som.tool.addSkinSelection('skinB', pathB)
+ stool = SkinsTool()
+ stool.addSkinSelection('skinA', pathA)
+ stool.addSkinSelection('skinB', pathB)
+ stool.manage_properties(default_skin='skinA')
+ getSiteManager().registerUtility(stool, ISkinsTool)
- som.tool.manage_properties(default_skin='skinA')
-
# Expect the default skin name to be returned
self.assertTrue(som.getCurrentSkinName() == 'skinA')
More information about the checkins
mailing list