[Checkins] SVN: grokcore.view/trunk/ Factor out a TemplateGrokker.
Sylvain Viollon
sylvain at infrae.com
Tue Dec 7 10:25:48 EST 2010
Log message for revision 118743:
Factor out a TemplateGrokker.
Changed:
U grokcore.view/trunk/CHANGES.txt
U grokcore.view/trunk/src/grokcore/view/meta/views.py
-=-
Modified: grokcore.view/trunk/CHANGES.txt
===================================================================
--- grokcore.view/trunk/CHANGES.txt 2010-12-07 14:57:43 UTC (rev 118742)
+++ grokcore.view/trunk/CHANGES.txt 2010-12-07 15:25:48 UTC (rev 118743)
@@ -4,6 +4,9 @@
2.2 (unreleased)
----------------
+- Factor out a base template grokker that associate templates for
+ viewish components.
+
- Merge support for a global template registry that remove unnecessary
warnings about unassociated templates.
Modified: grokcore.view/trunk/src/grokcore/view/meta/views.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/meta/views.py 2010-12-07 14:57:43 UTC (rev 118742)
+++ grokcore.view/trunk/src/grokcore/view/meta/views.py 2010-12-07 15:25:48 UTC (rev 118743)
@@ -30,6 +30,40 @@
def default_view_name(component, module=None, **data):
return component.__name__.lower()
+
+class TemplateGrokker(martian.ClassGrokker):
+ martian.baseclass()
+
+ def grok(self, name, factory, module_info, **kw):
+ # Need to store the module info to look for a template
+ factory.module_info = module_info
+ return super(TemplateGrokker, self).grok(name, factory, module_info, **kw)
+
+ def execute(self, factory, config, **kw):
+ # find templates
+ config.action(
+ discriminator=None,
+ callable=self.check_templates,
+ args=(factory.module_info, factory))
+ return True
+
+ def check_templates(self, module_info, factory):
+ templatereg.checkTemplates(
+ module_info, factory, 'view', self.has_render, self.has_no_render)
+
+ def has_render(self, factory):
+ render = getattr(factory, 'render', None)
+ base_method = getattr(render, 'base_method', False)
+ return render and not base_method
+
+ def has_no_render(self, factory):
+ return not self.has_render(factory)
+
+
+class ViewTemplateGrokker(TemplateGrokker):
+ martian.component(components.View)
+
+
class ViewGrokker(martian.ClassGrokker):
martian.component(components.View)
martian.directive(grokcore.component.context)
@@ -43,13 +77,6 @@
return super(ViewGrokker, self).grok(name, factory, module_info, **kw)
def execute(self, factory, config, context, layer, name, **kw):
- # find templates
- config.action(
- discriminator=None,
- callable=self.checkTemplates,
- args=(factory.module_info, 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)
@@ -71,20 +98,7 @@
)
return True
- def checkTemplates(self, 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 has_render(factory)
-
- templatereg.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')
More information about the checkins
mailing list