[Checkins] SVN: megrok.kss/trunk/ merge janjaapdriessen-grokcore.component-for-megrok.kss

Godefroid Chapelle gotcha at bubblenet.be
Thu Jul 3 17:09:00 EDT 2008


Log message for revision 87968:
  merge janjaapdriessen-grokcore.component-for-megrok.kss

Changed:
  A   megrok.kss/trunk/CHANGES.txt
  U   megrok.kss/trunk/buildout.cfg
  U   megrok.kss/trunk/src/megrok/kss/__init__.py
  U   megrok.kss/trunk/src/megrok/kss/meta.py
  U   megrok.kss/trunk/src/megrok/kss/tests/kss.py

-=-
Copied: megrok.kss/trunk/CHANGES.txt (from rev 87967, megrok.kss/branches/janjaapdriessen-grokcore.component-for-megrok.kss/CHANGES.txt)
===================================================================
--- megrok.kss/trunk/CHANGES.txt	                        (rev 0)
+++ megrok.kss/trunk/CHANGES.txt	2008-07-03 21:08:59 UTC (rev 87968)
@@ -0,0 +1,15 @@
+megrok.kss changes
+******************
+
+0.2 (unreleased)
+=================
+
+Restructuring
+-------------
+
+* Change the KSSGrokker to use the new grokcore.component directives.
+
+0.1 (2008-04-30)
+================
+
+Initial release

Modified: megrok.kss/trunk/buildout.cfg
===================================================================
--- megrok.kss/trunk/buildout.cfg	2008-07-03 21:04:33 UTC (rev 87967)
+++ megrok.kss/trunk/buildout.cfg	2008-07-03 21:08:59 UTC (rev 87968)
@@ -1,8 +1,8 @@
 [buildout]
-develop = . 
-parts = interpreter test
+develop = .
+parts = test interpreter
 find-links = http://download.zope.org/distribution/
-extends= http://grok.zope.org/releaseinfo/grok-0.12.cfg
+extends = http://grok.zope.org/releaseinfo/grok-0.13.cfg
 versions = versions
 
 [interpreter]

Modified: megrok.kss/trunk/src/megrok/kss/__init__.py
===================================================================
--- megrok.kss/trunk/src/megrok/kss/__init__.py	2008-07-03 21:04:33 UTC (rev 87967)
+++ megrok.kss/trunk/src/megrok/kss/__init__.py	2008-07-03 21:08:59 UTC (rev 87968)
@@ -1 +1 @@
-from components import KSS
\ No newline at end of file
+from megrok.kss.components import KSS
\ No newline at end of file

Modified: megrok.kss/trunk/src/megrok/kss/meta.py
===================================================================
--- megrok.kss/trunk/src/megrok/kss/meta.py	2008-07-03 21:04:33 UTC (rev 87967)
+++ megrok.kss/trunk/src/megrok/kss/meta.py	2008-07-03 21:08:59 UTC (rev 87968)
@@ -1,3 +1,8 @@
+import martian
+
+import grok
+from grok.util import make_checker
+
 from zope import component
 from zope import interface
 from zope.publisher.browser import BrowserPage
@@ -3,53 +8,30 @@
 from zope.publisher.interfaces.browser import IDefaultBrowserLayer
 
-import martian
-from martian import util
+from megrok.kss.components import KSS
 
-from grok.util import get_default_permission, make_checker
-from grok.util import determine_class_directive
 
-from components import KSS
+class KSSGrokker(martian.MethodGrokker):
+    martian.component(KSS)
+    martian.directive(grok.directive.view)
+    martian.directive(grok.require, name='permission')
 
+    def execute(self, factory, method, config, view, permission, **kw):
 
-class KSSGrokker(martian.ClassGrokker):
-    component_class = KSS
+        # 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})
 
-    def grok(self, name, factory, module_info, config, **kw):
-        view_context = determine_class_directive('grok.view', factory,
-                                                 module_info)
-        methods = util.methods_from_class(factory)
-        default_permission = get_default_permission(factory)
+        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))
 
-        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.
-
-            #We should allow name directives on methods
-            #view_name = util.class_annotation(factory, 'grok.name',
-            #                                  factory_name)
-
-            method_view = type(factory.__name__, (factory, BrowserPage),
-                {'__view_name__': name})
-
-            adapts = (view_context, 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 = getattr(method, '__grok_require__',
-                                 default_permission)
-
-            config.action(discriminator=('protectName', method_view,
-                               '__call__'),
-                callable=make_checker,
-                args=(factory, method_view, permission))
-
         return True

Modified: megrok.kss/trunk/src/megrok/kss/tests/kss.py
===================================================================
--- megrok.kss/trunk/src/megrok/kss/tests/kss.py	2008-07-03 21:04:33 UTC (rev 87967)
+++ megrok.kss/trunk/src/megrok/kss/tests/kss.py	2008-07-03 21:08:59 UTC (rev 87968)
@@ -6,7 +6,7 @@
 We create a view on the model and call the KSS action on the view. The
 KSS action calls `self.view.render()`.
 
-  >>> mymodel = TestModel('model1') 
+  >>> mymodel = TestModel('model1')
   >>> view = getMultiAdapter((mymodel, request), name="testview")
   >>> kss = getMultiAdapter((view, request), name="getId")
   >>> print kss()
@@ -43,6 +43,7 @@
 class TestKSS(KSS):
 
     grok.view(TestView)
+    grok.require(grok.Public)
 
     def getId(self):
         """Docstring for getId"""



More information about the Checkins mailing list