File: jinja2.py

package info (click to toggle)
python-django-debug-toolbar 1%3A5.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,984 kB
  • sloc: python: 6,880; javascript: 631; makefile: 62; sh: 16
file content (23 lines) | stat: -rw-r--r-- 856 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import functools

from django.template.backends.jinja2 import Template as JinjaTemplate
from django.template.context import make_context
from django.test.signals import template_rendered


def patch_jinja_render():
    orig_render = JinjaTemplate.render

    @functools.wraps(orig_render)
    def wrapped_render(self, context=None, request=None):
        # This patching of render only instruments the rendering
        # of the immediate template. It won't include the parent template(s).
        self.name = self.template.name
        template_rendered.send(
            sender=self, template=self, context=make_context(context, request)
        )
        return orig_render(self, context, request)

    if JinjaTemplate.render != wrapped_render:
        JinjaTemplate.original_render = JinjaTemplate.render
        JinjaTemplate.render = wrapped_render