[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