[Checkins] SVN: grokcore.view/trunk/src/grokcore/view/ Fix the template = case, and add a test.
Sylvain Viollon
sylvain at infrae.com
Tue Sep 15 13:18:33 EDT 2009
Log message for revision 104113:
Fix the template = case, and add a test.
Changed:
U grokcore.view/trunk/src/grokcore/view/meta/views.py
U grokcore.view/trunk/src/grokcore/view/templatereg.py
A grokcore.view/trunk/src/grokcore/view/tests/view/viewtemplateequal.py
-=-
Modified: grokcore.view/trunk/src/grokcore/view/meta/views.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/meta/views.py 2009-09-15 16:57:58 UTC (rev 104112)
+++ grokcore.view/trunk/src/grokcore/view/meta/views.py 2009-09-15 17:18:33 UTC (rev 104113)
@@ -82,18 +82,9 @@
def checkTemplates(self, templates, module_info, factory):
+ templates.checkTemplates(module_info, factory, 'view')
- 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 CodeViewGrokker(martian.ClassGrokker):
martian.component(components.CodeView)
martian.directive(grokcore.component.context)
Modified: grokcore.view/trunk/src/grokcore/view/templatereg.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/templatereg.py 2009-09-15 16:57:58 UTC (rev 104112)
+++ grokcore.view/trunk/src/grokcore/view/templatereg.py 2009-09-15 17:18:33 UTC (rev 104113)
@@ -90,8 +90,7 @@
module_info.dotted_name, ', '.join(unassociated)))
warnings.warn(msg, UserWarning, 1)
- def checkTemplates(self, module_info, factory, component_name,
- has_render, has_no_render):
+ def checkTemplates(self, module_info, factory, component_name):
factory_name = factory.__name__.lower()
template_name = grokcore.view.template.bind().get(factory)
if template_name is None:
@@ -107,24 +106,13 @@
% (component_name, factory, template_name,
factory_name), factory)
template = self.get(template_name)
- # TODO: strip render
if template is not None:
- if has_render(factory):
- # we do not accept render and template both for a view
- # (unless it's a form, they happen to have render.
- raise GrokError(
- "Multiple possible ways to render %s %r. "
- "It has both a 'render' method as well as "
- "an associated template." %
- (component_name, factory), factory)
self.markAssociated(template_name)
factory.template = template
- template._initFactory(factory)
- else:
- if has_no_render(factory):
- # we do not accept a view without any way to render it
- raise GrokError("%s %r has no associated template." %
- (component_name.title(), factory), factory)
+ elif getattr(factory, 'template', None) is None:
+ raise GrokError("%s %r has no associated template." %
+ (component_name.title(), factory), factory)
+ factory.template._initFactory(factory)
class PageTemplateFileFactory(grokcore.component.GlobalUtility):
grokcore.component.implements(ITemplateFileFactory)
Added: grokcore.view/trunk/src/grokcore/view/tests/view/viewtemplateequal.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/tests/view/viewtemplateequal.py (rev 0)
+++ grokcore.view/trunk/src/grokcore/view/tests/view/viewtemplateequal.py 2009-09-15 17:18:33 UTC (rev 104113)
@@ -0,0 +1,34 @@
+"""
+
+ >>> grok.testing.grok(__name__)
+
+ >>> from zope.interface.verify import verifyObject
+ >>> from grokcore.view.interfaces import IGrokView
+
+We should find the ``cavepainting`` view for a mammoth:
+
+ >>> manfred = Mammoth()
+ >>> from zope.publisher.browser import TestRequest
+ >>> request = TestRequest()
+ >>> from zope import component
+ >>> view = component.getMultiAdapter((manfred, request), name='cavepainting')
+ >>> print view()
+ A cave painting of a mammoth
+
+ >>> view.context is manfred
+ True
+ >>> view.request is request
+ True
+ >>> verifyObject(IGrokView, view)
+ True
+
+"""
+
+import grokcore.view as grok
+
+class Mammoth(grok.Context):
+ pass
+
+class CavePainting(grok.View):
+ template = grok.PageTemplate(filename='view_templates/cavepainting.pt')
+
More information about the checkins
mailing list