summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2011-08-18 04:02:00 -0400
committerChris McDonough <chrism@plope.com>2011-08-18 04:02:00 -0400
commit83cfff1c320b6286cbae6f5cbb0981759f5913d9 (patch)
treee4aea5d4e57fcc7092266dd3e304980473a4a489
parentd9ea462264e7dfc9f225b2b8b53007d6f1dacd04 (diff)
downloadpyramid-83cfff1c320b6286cbae6f5cbb0981759f5913d9.tar.gz
pyramid-83cfff1c320b6286cbae6f5cbb0981759f5913d9.tar.bz2
pyramid-83cfff1c320b6286cbae6f5cbb0981759f5913d9.zip
first cut
-rw-r--r--pyramid/mako_templating.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/pyramid/mako_templating.py b/pyramid/mako_templating.py
index 3055e2cfb..b8105c68a 100644
--- a/pyramid/mako_templating.py
+++ b/pyramid/mako_templating.py
@@ -1,4 +1,5 @@
import os
+import sys
import threading
from zope.interface import implements
@@ -110,6 +111,14 @@ def renderer_factory(info):
return MakoLookupTemplateRenderer(path, lookup)
+class MakoRenderingException(Exception):
+ def __init__(self, text):
+ self.text = text
+
+ def __repr__(self):
+ return self.text
+
+ __str__ = __repr__
class MakoLookupTemplateRenderer(object):
implements(ITemplateRenderer)
@@ -134,5 +143,16 @@ class MakoLookupTemplateRenderer(object):
template = self.implementation()
if def_name is not None:
template = template.get_def(def_name)
- result = template.render_unicode(**system)
+ try:
+ result = template.render_unicode(**system)
+ except:
+ try:
+ exc_info = sys.exc_info()
+ errtext = exceptions.text_error_template().render(
+ error=exc_info[0],
+ traceback=exc_info[2])
+ raise MakoRenderingException(errtext)
+ finally:
+ del exc_info
+
return result