[KSS-checkins] r49289 - in kukit/kss.zope/trunk/kss/zope: . bbb

reebalazs at codespeak.net reebalazs at codespeak.net
Sun Dec 2 17:38:00 CET 2007


Author: reebalazs
Date: Sun Dec  2 17:38:00 2007
New Revision: 49289

Added:
   kukit/kss.zope/trunk/kss/zope/bbb/commandset.py
   kukit/kss.zope/trunk/kss/zope/selectors.py
Modified:
   kukit/kss.zope/trunk/kss/zope/bbb/deprecated.py
   kukit/kss.zope/trunk/kss/zope/commands.py
   kukit/kss.zope/trunk/kss/zope/commandset.py
   kukit/kss.zope/trunk/kss/zope/registry.py
   kukit/kss.zope/trunk/kss/zope/registry.txt
   kukit/kss.zope/trunk/kss/zope/view.py
Log:
Add proper emulation and prepare BBB for selectors.

Also impelent the suggested new way.

Added: kukit/kss.zope/trunk/kss/zope/bbb/commandset.py
==============================================================================
--- (empty file)
+++ kukit/kss.zope/trunk/kss/zope/bbb/commandset.py	Sun Dec  2 17:38:00 2007
@@ -0,0 +1,35 @@
+
+# BBB selector compat wrapper
+from kss.zope.commandset import ZopeCommandSet
+from kss.base.corecommands import KSSCoreCommands
+##from deprecated import deprecated
+
+when = 'after 2008-08-01'
+
+class CompatCommandSet(ZopeCommandSet, KSSCoreCommands):
+
+    ## Don't BBB yet. Uncommenting the next line will activate BBB.
+    ##@deprecated('use getattr(view.selectors, type)(value) instead', when)
+    def getSelector(self, selector_type, selector):
+        'Get a selector of a given type'
+        return getattr(self.view.selectors, selector_type)(selector)
+
+    ## Don't BBB yet. Uncommenting the next line will activate BBB.
+    ##@deprecated('use view.selectors.css(value) instead', when)
+    def getCssSelector(self, selector):
+        return self.view.selectors.css(selector)
+            
+    ## Don't BBB yet. Uncommenting the next line will activate BBB.
+    ##@deprecated('use view.selectors.htmlid(value) instead', when)
+    def getHtmlIdSelector(self, selector):
+        return self.view.selectors.htmlid(selector)
+
+    ## Don't BBB yet. Uncommenting the next line will activate BBB.
+    ##@deprecated('use view.selectors.samenode() instead', when)
+    def getSameNodeSelector(self):
+        return self.view.selectors.samenode()
+
+    ## Don't BBB yet. Uncommenting the next line will activate BBB.
+    ##@deprecated('use view.selectors.parentode(value) instead', when)
+    def getParentNodeSelector(self, selector):
+        return self.view.selectors.parentnode(selector)

Modified: kukit/kss.zope/trunk/kss/zope/bbb/deprecated.py
==============================================================================
--- kukit/kss.zope/trunk/kss/zope/bbb/deprecated.py	(original)
+++ kukit/kss.zope/trunk/kss/zope/bbb/deprecated.py	Sun Dec  2 17:38:00 2007
@@ -21,25 +21,29 @@
 def deprecated_warning(message):
     warnings.warn(message, DeprecationWarning, 2)
 
-def deprecated(method, message):
-    def deprecated_method(self, *args, **kw):
-        warnings.warn(message, DeprecationWarning, 2)
-        return method(self, *args, **kw)
-    return deprecated_method
+def deprecated(message, when='any time'):
+    def f(method):
+        def deprecated_method(self, *args, **kw):
+            deprecated_warning(textwrap.dedent('''\
+                    The method %s is deprecated and will be removed %s,
+                    %s
+                    '''
+                    % (method.__name__, when, message)))
+            return method(self, *args, **kw)
+        return deprecated_method
+    return f
 
 def deprecated_directive(directive, message, when='any time'):
     def f(method):
         def deprecated_method(_context, *args, **kw):
-            warnings.warn(message, DeprecationWarning, 2)
-            warnings.warn(textwrap.dedent('''\
+            deprecated_warning(textwrap.dedent('''\
 
 
                   %s
                 The directive %s is deprecated and will be removed %s,
                 %s
                 '''
-                % (_context.info, directive, when, message)),
-            DeprecationWarning, 2)
+                % (_context.info, directive, when, message)))
             return method(_context, *args, **kw)
         return deprecated_method
     return f

Modified: kukit/kss.zope/trunk/kss/zope/commands.py
==============================================================================
--- kukit/kss.zope/trunk/kss/zope/commands.py	(original)
+++ kukit/kss.zope/trunk/kss/zope/commands.py	Sun Dec  2 17:38:00 2007
@@ -1,9 +1,7 @@
 from zope import component
 from kss.base import KSSCommands
-
-from kss.zope.interfaces import IKSSPluginRegistry, IZopeCommandSet
-from kss.zope.commandset import CompatCommandSet
-
+from interfaces import IKSSPluginRegistry, IZopeCommandSet
+from bbb.commandset import CompatCommandSet
 
 class KSSZopeCommands(KSSCommands):
     def __init__(self, view, context, request):
@@ -26,6 +24,7 @@
             return commandset_factory(self)
 
     # Add something like this
+    # XXX XXX This is not working!!!!!!! 
     def addCommand(self, command_name, selector=None, **kw):
         command = KSSCommand(command_name, selector=selector, **kw)
         self.append(command)

Modified: kukit/kss.zope/trunk/kss/zope/commandset.py
==============================================================================
--- kukit/kss.zope/trunk/kss/zope/commandset.py	(original)
+++ kukit/kss.zope/trunk/kss/zope/commandset.py	Sun Dec  2 17:38:00 2007
@@ -1,8 +1,5 @@
 from zope import interface
-from kss.base.selectors import htmlid, css
-from kss.base.corecommands import KSSCoreCommands
-
-from kss.zope.interfaces import IZopeCommandSet
+from interfaces import IZopeCommandSet
 
 class ZopeCommandSet(object):
     interface.implements(IZopeCommandSet)
@@ -16,11 +13,6 @@
     def getCommandSet(self, name):
         return self.view.getCommandSet(name)
 
-# BBB selector compat wrapper
-class CompatCommandSet(ZopeCommandSet, KSSCoreCommands):
-
-    def getHtmlIdSelector(self, value):
-        return htmlid(value)
-
-    def getCssSelector(self, value):
-        return css(value)
+    @property
+    def selectors(self):
+        return self.view.selectors

Modified: kukit/kss.zope/trunk/kss/zope/registry.py
==============================================================================
--- kukit/kss.zope/trunk/kss/zope/registry.py	(original)
+++ kukit/kss.zope/trunk/kss/zope/registry.py	Sun Dec  2 17:38:00 2007
@@ -55,7 +55,10 @@
         # from kss.base import selectors
         # return selectors[id]
         # or something similar.
-        return self._selectors[id]
+        try:
+            return self._selectors[id]
+        except KeyError, exc:
+            raise KeyError, 'Selector "%s" is not registered.' % (id, )
 
 #=============================================
 # Stuff needed for compatibility features

Modified: kukit/kss.zope/trunk/kss/zope/registry.txt
==============================================================================
--- kukit/kss.zope/trunk/kss/zope/registry.txt	(original)
+++ kukit/kss.zope/trunk/kss/zope/registry.txt	Sun Dec  2 17:38:00 2007
@@ -71,6 +71,13 @@
   >>> registry.lookup_selector('css')
   <class 'kss.base.selectors.css'>
 
+A nonexistent selector lookup will give a specific key error:
+
+  >>> registry.lookup_selector('NONEXISTENT')
+  Traceback (most recent call last):
+  ...
+  KeyError: 'Selector "NONEXISTENT" is not registered.'
+
 
 BBB
 ===

Added: kukit/kss.zope/trunk/kss/zope/selectors.py
==============================================================================
--- (empty file)
+++ kukit/kss.zope/trunk/kss/zope/selectors.py	Sun Dec  2 17:38:00 2007
@@ -0,0 +1,19 @@
+
+from interfaces import IKSSPluginRegistry
+from zope import component as capi
+
+class SelectorLookup(object):
+    '''Provide lookup to selectors'''
+    
+    __allow_access_to_unprotected_subobjects__ = True
+
+    def __getattribute__(self, selector_type):
+        registry = capi.getUtility(IKSSPluginRegistry)
+        try:
+            return registry.lookup_selector(selector_type)
+        except KeyError, exc:
+            # Make sure to give attribute error here.
+            raise AttributeError, str(exc)
+
+# Create singleton
+selectorLookup = SelectorLookup()

Modified: kukit/kss.zope/trunk/kss/zope/view.py
==============================================================================
--- kukit/kss.zope/trunk/kss/zope/view.py	(original)
+++ kukit/kss.zope/trunk/kss/zope/view.py	Sun Dec  2 17:38:00 2007
@@ -30,12 +30,13 @@
 
 try:
     from Products.Five import BrowserView
+    BrowserView = BrowserView    # satisfy pyflakes
 except ImportError:
     from zope.publisher.browser import BrowserView
 
-from kss.zope.commands import KSSZopeCommands
-from kss.zope.interfaces import IKSSView
-
+from commands import KSSZopeCommands
+from interfaces import IKSSView
+from selectors import selectorLookup
 from zope import component, interface, event
 from zope.interface.adapter import VerifyingAdapterRegistry
 from zope.component.globalregistry import BaseGlobalComponents
@@ -50,7 +51,6 @@
 except ImportError:
     HAS_FIVE_LSM = False
 
-
 class SiteViewComponents(BaseGlobalComponents):
 
     def _init_registries(self):
@@ -161,3 +161,13 @@
 
     def getCommandSet(self, name):
         return getattr(self.commands, name)
+
+    @property
+    def selectors(self):
+        """selector lookup object.
+        Provides selectors by attribute lookup.
+        
+        Example:
+            selector = view.selectors.css('div#id')
+        """
+        return selectorLookup


More information about the Kukit-checkins mailing list