[Checkins] SVN: grokcore.view/branches/reinout-christian-codeview/src/grokcore/view/ Added a warning for CodeView without render

Christian Klinger cklinger at novareto.de
Fri Jul 3 07:05:56 EDT 2009


Log message for revision 101431:
  Added a warning for CodeView without render

Changed:
  U   grokcore.view/branches/reinout-christian-codeview/src/grokcore/view/meta/views.py
  A   grokcore.view/branches/reinout-christian-codeview/src/grokcore/view/tests/view/codeviewnorender.py

-=-
Modified: grokcore.view/branches/reinout-christian-codeview/src/grokcore/view/meta/views.py
===================================================================
--- grokcore.view/branches/reinout-christian-codeview/src/grokcore/view/meta/views.py	2009-07-03 10:37:58 UTC (rev 101430)
+++ grokcore.view/branches/reinout-christian-codeview/src/grokcore/view/meta/views.py	2009-07-03 11:05:56 UTC (rev 101431)
@@ -101,15 +101,12 @@
         return super(CodeViewGrokker, self).grok(name, factory, module_info, **kw)
                 
     def execute(self, factory, config, context, layer, name, **kw):
-        # 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)
-                )
 
+        # Make sure that we have a render Method
+        render = getattr(factory, 'render', None)
+        if not render:
+            raise GrokError("CodeView Class '%s' without an render method" % factory, factory)
+
         # 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)
@@ -131,19 +128,7 @@
             )
         return True
 
-    def checkTemplates(self, templates, module_info, factory):
 
-        def has_render(factory):
-            render = getattr(factory, 'render', None)
-            base_method = getattr(render, 'base_method', False)
-            return render and not base_method
-
-        def has_no_render(factory):
-            return not getattr(factory, 'render', None)
-        templates.checkTemplates(module_info, factory, 'view',
-                                 has_render, has_no_render)
-
-
 class ViewSecurityGrokker(martian.ClassGrokker):
     martian.component(components.View)
     martian.directive(grokcore.security.require, name='permission')

Copied: grokcore.view/branches/reinout-christian-codeview/src/grokcore/view/tests/view/codeviewnorender.py (from rev 101428, grokcore.view/branches/reinout-christian-codeview/src/grokcore/view/tests/view/codeview.py)
===================================================================
--- grokcore.view/branches/reinout-christian-codeview/src/grokcore/view/tests/view/codeviewnorender.py	                        (rev 0)
+++ grokcore.view/branches/reinout-christian-codeview/src/grokcore/view/tests/view/codeviewnorender.py	2009-07-03 11:05:56 UTC (rev 101431)
@@ -0,0 +1,16 @@
+"""
+
+  >>> grok.testing.grok(__name__)
+  Traceback (most recent call last):
+  ...
+  GrokError: CodeView Class '<class 'grokcore.view.tests.view.codeviewnorender.CaveTiger'>' without an render method 
+
+"""
+
+import grokcore.view as grok
+
+class Mammoth(grok.Context):
+    pass
+
+class CaveTiger(grok.CodeView):
+    pass



More information about the Checkins mailing list