[Checkins] SVN: Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/ Add an interface for SkinnableObjectManager to make adapter registration cleaner

Matthew Wilkes matthew at matthewwilkes.co.uk
Sat Aug 8 10:15:14 EDT 2009


Log message for revision 102583:
  Add an interface for SkinnableObjectManager to make adapter registration cleaner

Changed:
  U   Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/Skinnable.py
  U   Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/interfaces/_tools.py

-=-
Modified: Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/Skinnable.py
===================================================================
--- Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/Skinnable.py	2009-08-08 14:13:25 UTC (rev 102582)
+++ Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/Skinnable.py	2009-08-08 14:15:14 UTC (rev 102583)
@@ -27,6 +27,7 @@
 from App.class_init import InitializeClass
 from OFS.ObjectManager import ObjectManager
 from ZODB.POSException import ConflictError
+from zope.interface import implements
 
 logger = logging.getLogger('CMFCore.Skinnable')
 
@@ -51,6 +52,8 @@
 class SkinnableObjectManager(ObjectManager):
 
     security = ClassSecurityInfo()
+    
+    implements(ISkinnableObjectManager)
 
     security.declarePrivate('getSkinsFolderName')
     def getSkinsFolderName(self):

Modified: Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/interfaces/_tools.py
===================================================================
--- Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/interfaces/_tools.py	2009-08-08 14:13:25 UTC (rev 102582)
+++ Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/interfaces/_tools.py	2009-08-08 14:15:14 UTC (rev 102583)
@@ -1248,6 +1248,48 @@
         o Permission:  Public
         """
 
+class ISkinnableObjectManager(object):
+    
+    """ An object that has skins applied to it."""
+
+
+    def __getattr__(self, name):
+        '''
+        Looks for the name in an object with wrappers that only reach
+        up to the root skins folder.
+
+        This should be fast, flexible, and predictable.
+        '''
+        
+    def getSkin(self, name=None):
+        """Returns the requested skin.
+        """
+
+    def getSkinNameFromRequest(self, REQUEST=None):
+        '''Returns the skin name from the Request.'''
+
+    def changeSkin(self, skinname, REQUEST=_MARKER):
+        '''Change the current skin.
+
+        Can be called manually, allowing the user to change
+        skins in the middle of a request.
+        '''
+    
+    def getCurrentSkinName(self):
+        '''Return the current skin name.
+        '''
+
+    def clearCurrentSkin(self):
+        """Clear the current skin."""
+
+    def setupCurrentSkin(self, REQUEST=_MARKER):
+        '''
+        Sets up skindata so that __getattr__ can find it.
+
+        Can NOT be called manually to change skins in the middle of a
+        request! Use changeSkin for that.
+        '''
+
 #
 # Syndication tool interface
 #



More information about the Checkins mailing list