[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