diff options
| author | Chris McDonough <chrism@agendaless.com> | 2010-02-04 18:32:36 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2010-02-04 18:32:36 +0000 |
| commit | 89968dce0273f49cf34e07480077f7843593f54e (patch) | |
| tree | bc7f1f02d0af23c497bbb612e962def3a044d6fc /repoze/bfg/view.py | |
| parent | d43b02fbe101233ad89eee605d558ca6f60a7e01 (diff) | |
| download | pyramid-89968dce0273f49cf34e07480077f7843593f54e.tar.gz pyramid-89968dce0273f49cf34e07480077f7843593f54e.tar.bz2 pyramid-89968dce0273f49cf34e07480077f7843593f54e.zip | |
- Fix a bug whereby a ``renderer`` argument to the ``@bfg_view``
decorator that provided a package-relative template filename might
not have been resolved properly. Symptom: inappropriate ``Missing
template resource`` errors.
Diffstat (limited to 'repoze/bfg/view.py')
| -rw-r--r-- | repoze/bfg/view.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/repoze/bfg/view.py b/repoze/bfg/view.py index 02a53824f..ac0977378 100644 --- a/repoze/bfg/view.py +++ b/repoze/bfg/view.py @@ -1,5 +1,6 @@ import cgi import mimetypes +import os import sys # See http://bugs.python.org/issue5853 which is a recursion bug @@ -26,7 +27,9 @@ from repoze.bfg.interfaces import IRoutesMapper from repoze.bfg.interfaces import IView from repoze.bfg.path import caller_package +from repoze.bfg.path import package_path from repoze.bfg.resource import resolve_resource_spec +from repoze.bfg.resource import resource_spec_from_abspath from repoze.bfg.static import PackageURLParser from repoze.bfg.threadlocal import get_current_registry @@ -489,6 +492,20 @@ class bfg_view(object): else: settings = getattr(wrapped, '__bfg_view_settings__', []) wrapped.__bfg_view_settings__ = settings + + # try to convert the renderer provided into a fully qualified + # resource specification + abspath = setting.get('renderer') + if abspath is not None and '.' in abspath: + isabs = os.path.isabs(abspath) + if not (':' in abspath and not isabs): + # not already a resource spec + if not isabs: + pp = package_path(module) + abspath = os.path.join(pp, abspath) + resource = resource_spec_from_abspath(abspath, module) + setting['renderer'] = resource + settings.append(setting) return wrapped |
