[Checkins]
SVN: grok/branches/philikon-refactor-templatereg/src/grok/
Make the TemplateRegistry unaware of views, viewlets,
... It shouldn't have to
Philipp von Weitershausen
philikon at philikon.de
Fri Mar 14 06:57:23 EDT 2008
Log message for revision 84651:
Make the TemplateRegistry unaware of views, viewlets, ... It shouldn't have to
care what the templates are used for. The current setup makes it hard to extend
the system with other components that also need templates.
Grokkers are now responsible for "checking" the templates. This makes it easily
extendable.
Changed:
U grok/branches/philikon-refactor-templatereg/src/grok/meta.py
U grok/branches/philikon-refactor-templatereg/src/grok/templatereg.py
-=-
Modified: grok/branches/philikon-refactor-templatereg/src/grok/meta.py
===================================================================
--- grok/branches/philikon-refactor-templatereg/src/grok/meta.py 2008-03-14 10:55:32 UTC (rev 84650)
+++ grok/branches/philikon-refactor-templatereg/src/grok/meta.py 2008-03-14 10:57:22 UTC (rev 84651)
@@ -263,8 +263,8 @@
if templates is not None:
config.action(
discriminator=None,
- callable=templates.checkTemplatesView,
- args=(module_info, factory)
+ callable=self.checkTemplates,
+ args=(templates, module_info, factory)
)
# safety belt: make sure that the programmer didn't use
@@ -302,6 +302,16 @@
return True
+ def checkTemplates(self, templates, module_info, factory):
+ def has_render(factory):
+ 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)
+
+
def view__getitem__(self, key):
return self.template.macros[key]
@@ -930,8 +940,9 @@
if templates is not None:
config.action(
discriminator=None,
- callable=templates.checkTemplatesViewlet,
- args=(module_info, factory))
+ callable=self.checkTemplates,
+ args=(templates, module_info, factory)
+ )
view = determine_class_directive('grok.view', factory,
module_info, default=IBrowserView)
@@ -956,3 +967,11 @@
)
return True
+
+ def checkTemplates(self, templates, module_info, factory):
+ def has_render(factory):
+ return factory.render != grok.components.Viewlet.render
+ def has_no_render(factory):
+ return not has_render(factory)
+ templates.checkTemplates(module_info, factory, 'viewlet',
+ has_render, has_no_render)
Modified: grok/branches/philikon-refactor-templatereg/src/grok/templatereg.py
===================================================================
--- grok/branches/philikon-refactor-templatereg/src/grok/templatereg.py 2008-03-14 10:55:32 UTC (rev 84650)
+++ grok/branches/philikon-refactor-templatereg/src/grok/templatereg.py 2008-03-14 10:57:22 UTC (rev 84651)
@@ -81,8 +81,8 @@
module_info.dotted_name, ', '.join(unassociated)))
warnings.warn(msg, UserWarning, 2)
- def _checkTemplates(self, module_info, factory, component_name,
- has_render, has_no_render):
+ def checkTemplates(self, module_info, factory, component_name,
+ has_render, has_no_render):
factory_name = factory.__name__.lower()
template_name = util.class_annotation(factory, 'grok.template',
factory_name)
@@ -116,23 +116,6 @@
"'render' method." %
(component_name.title(), factory), factory)
- def checkTemplatesView(self, module_info, factory):
- def has_render(factory):
- 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)
- self._checkTemplates(module_info, factory, 'view',
- has_render, has_no_render)
-
- def checkTemplatesViewlet(self, module_info, factory):
- def has_render(factory):
- return factory.render != grok.components.Viewlet.render
- def has_no_render(factory):
- return not has_render(factory)
- self._checkTemplates(module_info, factory, 'viewlet',
- has_render, has_no_render)
-
class PageTemplateFileFactory(grok.GlobalUtility):
grok.implements(grok.interfaces.ITemplateFileFactory)
More information about the Checkins
mailing list