diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-06-30 21:02:00 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-06-30 21:02:00 +0000 |
| commit | d809ac74d19342bcc84e4fe043697709b2001cc0 (patch) | |
| tree | 9973b531b90336bf6ecf3811aa3b9ba753f4e6d8 /repoze/bfg/templating.py | |
| parent | f9e73ea5a9d5a4210e3a346aa2f9483d70d22ab9 (diff) | |
| download | pyramid-d809ac74d19342bcc84e4fe043697709b2001cc0.tar.gz pyramid-d809ac74d19342bcc84e4fe043697709b2001cc0.tar.bz2 pyramid-d809ac74d19342bcc84e4fe043697709b2001cc0.zip | |
- Add a ``reload_resources`` configuration file setting (aka the
``BFG_RELOAD_RESOURCES`` environment variable). When this is set to
true, the server never needs to be restarted when moving files
between directory resource overrides (esp. for templates currently).
- Add a ``reload_all`` configuration file setting (aka the
``BFG_RELOAD_ALL`` environment variable) that implies both
``reload_resources`` and ``reload_templates``.
- The ``static`` helper view class now uses a ``PackageURLParser`` in
order to allow for the overriding of static resources (CSS / logo
files, etc) using the ``resource`` ZCML directive. The
``PackageURLParser`` class was added to a (new) ``static`` module in
BFG; it is a subclass of the ``StaticURLParser`` class in
``paste.urlparser``.
- The ``repoze.bfg.templating.renderer_from_cache`` function now
checks for the ``reload_resources`` setting; if it's true, it does
not register a template renderer (it won't use the registry as a
template renderer cache).
- Add ``pkg_resources`` to the glossary.
- Update the "Environment" docs to note the existence of
``reload_resources`` and ``reload_all``.
- Use a colon instead of a tab as the separator between package name
and relpath to form the "spec" when register a ITemplateRenderer.
Diffstat (limited to 'repoze/bfg/templating.py')
| -rw-r--r-- | repoze/bfg/templating.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/repoze/bfg/templating.py b/repoze/bfg/templating.py index a81726bb9..3287f0808 100644 --- a/repoze/bfg/templating.py +++ b/repoze/bfg/templating.py @@ -1,9 +1,12 @@ +import os import pkg_resources + from zope.component import queryUtility -from repoze.bfg.interfaces import ITemplateRenderer from zope.component import getSiteManager + +from repoze.bfg.interfaces import ITemplateRenderer from repoze.bfg.path import caller_package -import os +from repoze.bfg.settings import get_settings def renderer_from_cache(path, factory, level=3, **kw): if os.path.isabs(path): @@ -21,7 +24,7 @@ def renderer_from_cache(path, factory, level=3, **kw): # 'path' is a relative filename package = caller_package(level=level) spec = (package.__name__, path) - utility_name = '%s\t%s' % spec # utility name must be a string :-( + utility_name = '%s:%s' % spec # utility name must be a string renderer = queryUtility(ITemplateRenderer, name=utility_name) if renderer is None: # service unit tests here by trying the relative path @@ -29,11 +32,15 @@ def renderer_from_cache(path, factory, level=3, **kw): renderer = queryUtility(ITemplateRenderer, name=path) if renderer is None: if not pkg_resources.resource_exists(*spec): - raise ValueError('Missing template resource: %s:%s' % spec) + raise ValueError('Missing template resource: %s' % utility_name) abspath = pkg_resources.resource_filename(*spec) renderer = factory(abspath, **kw) - sm = getSiteManager() - sm.registerUtility(renderer, ITemplateRenderer, name=utility_name) + settings = get_settings() + if (not settings) or (not settings.get('reload_resources')): + # cache the template + sm = getSiteManager() + sm.registerUtility(renderer, ITemplateRenderer, + name=utility_name) return renderer |
