diff options
| author | Chris McDonough <chrism@plope.com> | 2011-08-18 04:02:00 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2011-08-18 04:02:00 -0400 |
| commit | 83cfff1c320b6286cbae6f5cbb0981759f5913d9 (patch) | |
| tree | e4aea5d4e57fcc7092266dd3e304980473a4a489 | |
| parent | d9ea462264e7dfc9f225b2b8b53007d6f1dacd04 (diff) | |
| download | pyramid-83cfff1c320b6286cbae6f5cbb0981759f5913d9.tar.gz pyramid-83cfff1c320b6286cbae6f5cbb0981759f5913d9.tar.bz2 pyramid-83cfff1c320b6286cbae6f5cbb0981759f5913d9.zip | |
first cut
| -rw-r--r-- | pyramid/mako_templating.py | 22 |
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 |
