diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-11-20 05:38:38 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-11-20 05:38:38 +0000 |
| commit | 15a3c6f561563eb53ff1cc3637fc6afa75da9e89 (patch) | |
| tree | 94134ee3c1099c30cae283d4cb7e1a8d68db45bf /repoze/bfg/renderers.py | |
| parent | 601e038028655549d23f8eda1c21cb0034724771 (diff) | |
| download | pyramid-15a3c6f561563eb53ff1cc3637fc6afa75da9e89.tar.gz pyramid-15a3c6f561563eb53ff1cc3637fc6afa75da9e89.tar.bz2 pyramid-15a3c6f561563eb53ff1cc3637fc6afa75da9e89.zip | |
Passable stab at supporting an imperative mode.
ZCML directives which accept paths now register absolute paths, while
imperative registrations now register resource specifications.
Diffstat (limited to 'repoze/bfg/renderers.py')
| -rw-r--r-- | repoze/bfg/renderers.py | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/repoze/bfg/renderers.py b/repoze/bfg/renderers.py index f13d1ccb4..e5ea4f3de 100644 --- a/repoze/bfg/renderers.py +++ b/repoze/bfg/renderers.py @@ -7,8 +7,6 @@ from zope.component import queryUtility from repoze.bfg.interfaces import ITemplateRenderer from repoze.bfg.compat import json -from repoze.bfg.path import caller_package -from repoze.bfg.resource import resource_spec from repoze.bfg.settings import get_settings # concrete renderer factory implementations @@ -27,37 +25,33 @@ def string_renderer_factory(name): # utility functions -def template_renderer_factory(path, impl, level=3): - if os.path.isabs(path): - # 'path' is an absolute filename (not common and largely only - # for backwards compatibility) - if not os.path.exists(path): - raise ValueError('Missing template file: %s' % path) - renderer = queryUtility(ITemplateRenderer, name=path) +def template_renderer_factory(spec, impl): + if os.path.isabs(spec): + # 'spec' is an absolute filename + if not os.path.exists(spec): + raise ValueError('Missing template file: %s' % spec) + renderer = queryUtility(ITemplateRenderer, name=spec) if renderer is None: - renderer = impl(path) + renderer = impl(spec) sm = getSiteManager() - sm.registerUtility(renderer, ITemplateRenderer, name=path) - + sm.registerUtility(renderer, ITemplateRenderer, name=spec) else: - # 'path' is a relative filename or a package:relpath spec - spec = resource_spec(path, caller_package(level=level).__name__) + # spec is a package:relpath resource spec renderer = queryUtility(ITemplateRenderer, name=spec) if renderer is None: # service unit tests by trying the relative path string as # the utility name directly - renderer = queryUtility(ITemplateRenderer, name=path) + renderer = queryUtility(ITemplateRenderer, name=spec) if renderer is None: - pkg, path = spec.split(':', 1) - if not pkg_resources.resource_exists(pkg, path): + package_name, filename = spec.split(':', 1) + if not pkg_resources.resource_exists(package_name, filename): raise ValueError('Missing template resource: %s' % spec) - abspath = pkg_resources.resource_filename(pkg, path) + abspath = pkg_resources.resource_filename(package_name, filename) renderer = impl(abspath) if not _reload_resources(): # cache the template sm = getSiteManager() - sm.registerUtility(renderer, ITemplateRenderer, - name=spec) + sm.registerUtility(renderer, ITemplateRenderer, name=spec) return renderer |
