[Checkins]
SVN: megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/
Use the new MethodGrokker from martian and grok (currently
only available on
Philipp von Weitershausen
philikon at philikon.de
Mon May 26 08:43:34 EDT 2008
Log message for revision 86974:
Use the new MethodGrokker from martian and grok (currently only available on
philikon-methodgrokker branches). With this new baseclass, the grokker code
is simplified even more.
Changed:
_U megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/
U megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/buildout.cfg
U megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/src/megrok/kss/meta.py
-=-
Property changes on: megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss
___________________________________________________________________
Name: svn:externals
- grok svn://svn.zope.org/repos/main/grok/trunk
+ grok svn://svn.zope.org/repos/main/grok/branches/philikon-methodgrokker
martian svn://svn.zope.org/repos/main/martian/branches/philikon-methodgrokker
Modified: megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/buildout.cfg
===================================================================
--- megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/buildout.cfg 2008-05-26 12:33:47 UTC (rev 86973)
+++ megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/buildout.cfg 2008-05-26 12:43:34 UTC (rev 86974)
@@ -1,10 +1,13 @@
[buildout]
-develop = . grok
+develop = . martian grok
parts = interpreter test
find-links = http://download.zope.org/distribution/
extends = grok/versions.cfg
versions = versions
+[versions]
+martian = 0.9.7dev
+
[interpreter]
recipe = zc.recipe.egg
eggs = megrok.kss
Modified: megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/src/megrok/kss/meta.py
===================================================================
--- megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/src/megrok/kss/meta.py 2008-05-26 12:33:47 UTC (rev 86973)
+++ megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/src/megrok/kss/meta.py 2008-05-26 12:43:34 UTC (rev 86974)
@@ -10,50 +10,35 @@
from megrok.kss.components import KSS
-class KSSGrokker(martian.ClassGrokker):
+class KSSGrokker(martian.MethodGrokker):
component_class = KSS
directives = [
grok.view.bind(),
- grok.require.bind(name='class_permission'),
+ grok.require.bind(name='permission'),
+ # TODO: We should allow name directives on methods
+ #name = grok.name.bind(...)
]
- def execute(self, factory, config, view, class_permission, **kw):
- methods = martian.util.methods_from_class(factory)
+ def execute(self, factory, method, config, view, permission, **kw):
- for method in methods:
- name = method.__name__
- if name.startswith('__'):
- continue
+ # Create a new class with a __view_name__ attribute so the
+ # KSSServerAction class knows what method to call.
+ name = method.__name__
+ method_view = type(
+ factory.__name__, (factory, BrowserPage),
+ {'__view_name__': name}
+ )
- # Create a new class with a __view_name__ attribute so the
- # KSSServerAction class knows what method to call.
+ adapts = (view, IDefaultBrowserLayer)
+ config.action(
+ discriminator=('adapter', adapts, interface.Interface, name),
+ callable=component.provideAdapter,
+ args=(method_view, adapts, interface.Interface, name)
+ )
+ config.action(
+ discriminator=('protectName', method_view, '__call__'),
+ callable=make_checker,
+ args=(factory, method_view, permission)
+ )
- # TODO: We should allow name directives on methods
- #view_name = grok.name.bind(default=name).get(method)
-
- method_view = type(
- factory.__name__, (factory, BrowserPage),
- {'__view_name__': name}
- )
-
- adapts = (view, IDefaultBrowserLayer)
- config.action(
- discriminator=('adapter', adapts, interface.Interface, name),
- callable=component.provideAdapter,
- args=(method_view, adapts, interface.Interface, name)
- )
-
- # Protect method_view with either the permission that was
- # set on the method, the default permission from the class
- # level or zope.Public.
- permission = grok.require.bind().get(method)
- if permission is None:
- permission = class_permission
-
- config.action(
- discriminator=('protectName', method_view, '__call__'),
- callable=make_checker,
- args=(factory, method_view, permission)
- )
-
return True
More information about the Checkins
mailing list