[Checkins] SVN: five.grok/branches/regebro-grokcore.view/src/five/grok/ Use the ViewGrokkerBase from grokcore.view.

Lennart Regebro regebro at gmail.com
Fri Jul 18 09:01:59 EDT 2008


Log message for revision 88501:
  Use the ViewGrokkerBase from grokcore.view.
  

Changed:
  U   five.grok/branches/regebro-grokcore.view/src/five/grok/__init__.py
  U   five.grok/branches/regebro-grokcore.view/src/five/grok/meta.py

-=-
Modified: five.grok/branches/regebro-grokcore.view/src/five/grok/__init__.py
===================================================================
--- five.grok/branches/regebro-grokcore.view/src/five/grok/__init__.py	2008-07-18 12:53:55 UTC (rev 88500)
+++ five.grok/branches/regebro-grokcore.view/src/five/grok/__init__.py	2008-07-18 13:01:59 UTC (rev 88501)
@@ -9,6 +9,3 @@
 from grokcore.view import template, require, layer, templatedir
 
 from five.grok.components import View, Model, IGrokLayer, Skin
-
-# I don't know why this is necessary:
-from five.grok import testing
\ No newline at end of file

Modified: five.grok/branches/regebro-grokcore.view/src/five/grok/meta.py
===================================================================
--- five.grok/branches/regebro-grokcore.view/src/five/grok/meta.py	2008-07-18 12:53:55 UTC (rev 88500)
+++ five.grok/branches/regebro-grokcore.view/src/five/grok/meta.py	2008-07-18 13:01:59 UTC (rev 88501)
@@ -11,56 +11,33 @@
 from Globals import InitializeClass as initializeClass
 
 from grokcore.view import templatereg
+from grokcore.view.meta import ViewGrokkerBase
 
 def default_view_name(factory, module=None, **data):
     return factory.__name__.lower()
 
-class ViewGrokker(martian.ClassGrokker):
+class ViewGrokker(ViewGrokkerBase):
     martian.component(grok.View)
-    martian.directive(grok.context)
-    martian.directive(grok.layer, default=IDefaultBrowserLayer)
-    martian.directive(grok.name, get_default=default_view_name)
-    martian.directive(grok.require, name='permission')
-
-    def grok(self, name, factory, module_info, **kw):
-        # Need to store the module info object on the view class so that it
-        # can look up the 'static' resource directory.
-        factory.module_info = module_info
-        return super(ViewGrokker, self).grok(name, factory, module_info, **kw)
-
+    
     def execute(self, factory, config, context, layer, name, permission, **kw):
         if permission is None:
             permission = 'zope.Public'
-        # find templates
-        templates = factory.module_info.getAnnotation('grok.templates', None)
-        if templates is not None:
-            config.action(
-                discriminator=None,
-                callable=self.checkTemplates,
-                args=(templates, factory.module_info, factory)
-                )
+            
+        return super(ViewGrokker, self).execute(factory, config, context, layer, name, permission, **kw)
+            
+    def checkTemplates(self, templates, module_info, factory):
+        def has_render(factory):
+            # XXX We haven't implemented GrokForm yet
+            return (getattr(factory, 'render', None))
+                    #and
+                    #not util.check_subclass(factory, grok.components.GrokForm))
+        def has_no_render(factory):
+            return not getattr(factory, 'render', None)
+        templates.checkTemplates(module_info, factory, 'view',
+                                 has_render, has_no_render)
 
-        # safety belt: make sure that the programmer didn't use
-        # @grok.require on any of the view's methods.
-        methods = util.methods_from_class(factory)
-        for method in methods:
-            if grok.require.bind().get(method) is not None:
-                raise GrokError('The @grok.require decorator is used for '
-                                'method %r in view %r. It may only be used '
-                                'for XML-RPC methods.'
-                                % (method.__name__, factory), factory)
-
-        # __view_name__ is needed to support IAbsoluteURL on views
-        factory.__view_name__ = name
-        adapts = (context, layer)
-
+    def protectName(self, config, factory, permission):
         config.action(
-            discriminator=('adapter', adapts, interface.Interface, name),
-            callable=component.provideAdapter,
-            args=(factory, adapts, interface.Interface, name),
-            )
-
-        config.action(
             discriminator = ('five:protectClass', factory),
             callable = protectClass,
             args = (factory, permission)
@@ -73,19 +50,6 @@
             args = (factory,)
             )
 
-        return True
-
-    def checkTemplates(self, templates, module_info, factory):
-        def has_render(factory):
-            # XXX We haven't implemented GrokForm yet
-            return (getattr(factory, 'render', None))
-                    #and
-                    #not util.check_subclass(factory, grok.components.GrokForm))
-        def has_no_render(factory):
-            return not getattr(factory, 'render', None)
-        templates.checkTemplates(module_info, factory, 'view',
-                                 has_render, has_no_render)
-
 class SkinGrokker(martian.ClassGrokker):
     martian.component(grok.Skin)
     martian.directive(grok.layer, default=IBrowserRequest)



More information about the Checkins mailing list