From daf3d51d4bfa0c0c73fb5d8157d8d6827e450ef0 Mon Sep 17 00:00:00 2001 From: Umair Khan Date: Mon, 23 May 2016 18:44:07 +0500 Subject: [PATCH] Send 'template_rendered' signal from Jinja2. Send the signal only under DEBUG=True just like Django. --- zproject/jinja2/backends.py | 12 ++++++++++-- zproject/settings.py | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/zproject/jinja2/backends.py b/zproject/jinja2/backends.py index 7fa51bf38a..97cfba90fa 100644 --- a/zproject/jinja2/backends.py +++ b/zproject/jinja2/backends.py @@ -4,6 +4,7 @@ import sys import jinja2 from django.utils import six +from django.test.signals import template_rendered from django.template.backends import jinja2 as django_jinja2 from django.template import TemplateDoesNotExist, TemplateSyntaxError, Context from django.utils.module_loading import import_string @@ -22,12 +23,14 @@ class Jinja2(django_jinja2.Jinja2): # We need to remove `context_processors` from `OPTIONS` because # `Environment` doesn't expect it self.context_processors = params['OPTIONS'].pop('context_processors', []) + self.debug = params['OPTIONS'].pop('debug', False) super(Jinja2, self).__init__(params, *args, **kwargs) def get_template(self, template_name): try: return Template(self.env.get_template(template_name), - self.context_processors) + self.context_processors, + self.debug) except jinja2.TemplateNotFound as exc: six.reraise(TemplateDoesNotExist, TemplateDoesNotExist(exc.args), sys.exc_info()[2]) @@ -43,8 +46,9 @@ class Template(django_jinja2.Template): processors to the context before passing it to the `render` function. """ - def __init__(self, template, context_processors, *args, **kwargs): + def __init__(self, template, context_processors, debug, *args, **kwargs): self.context_processors = context_processors + self.debug = debug super(Template, self).__init__(template, *args, **kwargs) def render(self, context=None, request=None): @@ -63,4 +67,8 @@ class Template(django_jinja2.Template): cp = import_string(context_processor) context.update(cp(request)) + if self.debug: + template_rendered.send(sender=self, template=self, + context=context) + return self.template.render(context) diff --git a/zproject/settings.py b/zproject/settings.py index 5c0d5940a9..255bfe58aa 100644 --- a/zproject/settings.py +++ b/zproject/settings.py @@ -251,6 +251,7 @@ TEMPLATES = [ ], 'APP_DIRS': False, 'OPTIONS': { + 'debug': DEBUG, 'environment': 'zproject.jinja2.environment', 'extensions': [ 'jinja2.ext.i18n',