diff options
Diffstat (limited to 'repoze/bfg/chameleon_zpt.py')
| -rw-r--r-- | repoze/bfg/chameleon_zpt.py | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/repoze/bfg/chameleon_zpt.py b/repoze/bfg/chameleon_zpt.py index c66a69e66..b4be1a4fc 100644 --- a/repoze/bfg/chameleon_zpt.py +++ b/repoze/bfg/chameleon_zpt.py @@ -1,65 +1,63 @@ from webob import Response from zope.component import queryUtility - -from zope.interface import classProvides from zope.interface import implements from repoze.bfg.interfaces import IResponseFactory from repoze.bfg.interfaces import ITemplateRenderer -from repoze.bfg.interfaces import ITemplateRendererFactory -from repoze.bfg.templating import renderer_from_cache -from repoze.bfg.templating import _auto_reload from chameleon.zpt.template import PageTemplateFile +from repoze.bfg.renderers import template_renderer_factory +from repoze.bfg.settings import get_settings + +def renderer_factory(path, level=4): + return template_renderer_factory(path, ZPTTemplateRenderer, level=4) + class ZPTTemplateRenderer(object): - classProvides(ITemplateRendererFactory) implements(ITemplateRenderer) - - def __init__(self, path, auto_reload=False): + def __init__(self, path): + settings = get_settings() + auto_reload = settings and settings['reload_templates'] self.template = PageTemplateFile(path, auto_reload=auto_reload) def implementation(self): return self.template - def __call__(self, **kw): + def __call__(self, kw): return self.template(**kw) def get_renderer(path): """ Return a callable ``ITemplateRenderer`` object representing a ``chameleon.zpt`` template at the package-relative path (may also be absolute). """ - auto_reload = _auto_reload() - renderer = renderer_from_cache(path, ZPTTemplateRenderer, - auto_reload=auto_reload) - return renderer + return renderer_factory(path) def get_template(path): """ Return a ``chameleon.zpt`` template at the package-relative path (may also be absolute). """ - auto_reload = _auto_reload() - renderer = renderer_from_cache(path, ZPTTemplateRenderer, - auto_reload=auto_reload) + renderer = renderer_factory(path) return renderer.implementation() def render_template(path, **kw): """ Render a ``chameleon.zpt`` template at the package-relative path (may also be absolute) using the kwargs in ``*kw`` as top-level names and return a string.""" - auto_reload = _auto_reload() - renderer = renderer_from_cache(path, ZPTTemplateRenderer, - auto_reload=auto_reload) - return renderer(**kw) + renderer = renderer_factory(path) + return renderer(kw) def render_template_to_response(path, **kw): """ Render a ``chameleon.zpt`` template at the package-relative path (may also be absolute) using the kwargs in ``*kw`` as top-level names and return a Response object with the body as the template result. """ - auto_reload = _auto_reload() - renderer = renderer_from_cache(path, ZPTTemplateRenderer, - auto_reload=auto_reload) - result = renderer(**kw) + renderer = renderer_factory(path) + result = renderer(kw) response_factory = queryUtility(IResponseFactory, default=Response) return response_factory(result) + +def _auto_reload(): + settings = get_settings() + if settings: + return settings['reload_templates'] + return False |
