From 85bd25bf34c10fcbd6ab5943762b57ed25534f7c Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 27 Aug 2014 16:56:20 +0200 Subject: [PATCH] Do not traceback when rendering a blurp (fixes #5092) If DEBUG is True, report exception in result string. --- .../templatetags/blurp_tags.py | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/cmsplugin_blurp/templatetags/blurp_tags.py b/src/cmsplugin_blurp/templatetags/blurp_tags.py index f69e3a3..9c1f66f 100644 --- a/src/cmsplugin_blurp/templatetags/blurp_tags.py +++ b/src/cmsplugin_blurp/templatetags/blurp_tags.py @@ -1,4 +1,8 @@ +import logging + from django import template +from django.conf import settings +from django.utils.html import escape from classytags.arguments import Argument from classytags.core import Options, Tag @@ -21,9 +25,19 @@ class RenderBlurp(Tag): return '' template = renderer.render_template() context = renderer.render(context) - if not hasattr(template, 'render'): - template = template.Template(template) - return template.render(context) + try: + if not hasattr(template, 'render'): + template = template.Template(template) + return template.render(context) + except Exception, e: + logging.getLogger(__name__).exception('error while rendering %s', + renderer) + msg = '' + if settings.TEMPLATE_DEBUG: + msg += 'error while rendering %s: %s' % (renderer, e) + msg = '
%s
' % escape(msg) + return msg + @register.tag class BlurpNode(Tag):