[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