summaryrefslogtreecommitdiff
path: root/repoze
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-01-06 02:46:54 +0000
committerChris McDonough <chrism@agendaless.com>2010-01-06 02:46:54 +0000
commit3ebf0287eeb8c269a7a3b35ee1441d1b07118d7f (patch)
tree2c6a500eaa4408cb26b4d2dffd7a2eb685adc2d8 /repoze
parent9544d0f3406ae7994251577a8c087efc0ec907cc (diff)
downloadpyramid-3ebf0287eeb8c269a7a3b35ee1441d1b07118d7f.tar.gz
pyramid-3ebf0287eeb8c269a7a3b35ee1441d1b07118d7f.tar.bz2
pyramid-3ebf0287eeb8c269a7a3b35ee1441d1b07118d7f.zip
- Show the derived abspath of template resource specifications in the
traceback when a renderer template cannot be found. - Show the original traceback when a Chameleon template cannot be rendered due to a platform incompatibility.
Diffstat (limited to 'repoze')
-rw-r--r--repoze/bfg/chameleon_text.py7
-rw-r--r--repoze/bfg/chameleon_zpt.py7
-rw-r--r--repoze/bfg/renderers.py12
3 files changed, 15 insertions, 11 deletions
diff --git a/repoze/bfg/chameleon_text.py b/repoze/bfg/chameleon_text.py
index 85f0126b3..f1dc8e3aa 100644
--- a/repoze/bfg/chameleon_text.py
+++ b/repoze/bfg/chameleon_text.py
@@ -1,14 +1,17 @@
+import sys
+
from webob import Response
from zope.interface import implements
try:
from chameleon.core.template import TemplateFile
-except ImportError, why: # pragma: no cover
+except ImportError: # pragma: no cover
+ exc_class, exc, tb = sys.exc_info()
# Chameleon doesn't work on non-CPython platforms
class TemplateFile(object):
def __init__(self, *arg, **kw):
- raise ImportError(why[0])
+ raise ImportError, exc, tb
try:
from chameleon.zpt.language import Parser
diff --git a/repoze/bfg/chameleon_zpt.py b/repoze/bfg/chameleon_zpt.py
index 22d409f33..f597ebd5f 100644
--- a/repoze/bfg/chameleon_zpt.py
+++ b/repoze/bfg/chameleon_zpt.py
@@ -1,14 +1,17 @@
+import sys
+
from webob import Response
from zope.interface import implements
try:
from chameleon.zpt.template import PageTemplateFile
-except ImportError, why: # pragma: no cover
+except ImportError: # pragma: no cover
+ exc_class, exc, tb = sys.exc_info()
# Chameleon doesn't work on non-CPython platforms
class PageTemplateFile(object):
def __init__(self, *arg, **kw):
- raise ImportError(why[0])
+ raise ImportError, exc, tb
from repoze.bfg.interfaces import IResponseFactory
from repoze.bfg.interfaces import ITemplateRenderer
diff --git a/repoze/bfg/renderers.py b/repoze/bfg/renderers.py
index e937bd2a1..b54803b3b 100644
--- a/repoze/bfg/renderers.py
+++ b/repoze/bfg/renderers.py
@@ -46,19 +46,17 @@ def template_renderer_factory(spec, impl):
# spec is a package:relpath resource spec
renderer = reg.queryUtility(ITemplateRenderer, name=spec)
if renderer is None:
- # service unit tests by trying the relative path string as
- # the utility name directly
- renderer = reg.queryUtility(ITemplateRenderer, name=spec)
- if renderer is None:
try:
package_name, filename = spec.split(':', 1)
except ValueError: # pragma: no cover
- # unit test or someone passing a relative pathname
+ # unit test or somehow we were passed a relative pathname;
+ # this should die
package_name = caller_package(4).__name__
filename = spec
- if not pkg_resources.resource_exists(package_name, filename):
- raise ValueError('Missing template resource: %s' % spec)
abspath = pkg_resources.resource_filename(package_name, filename)
+ if not pkg_resources.resource_exists(package_name, filename):
+ raise ValueError(
+ 'Missing template resource: %s (%s)' % (spec, abspath))
renderer = impl(abspath)
if not _reload_resources():
# cache the template