From 83cfff1c320b6286cbae6f5cbb0981759f5913d9 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Thu, 18 Aug 2011 04:02:00 -0400 Subject: first cut --- pyramid/mako_templating.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3