3
3
from inspect import stack
4
4
5
5
from django .dispatch import Signal
6
- from django .template import Template
7
6
from django .utils .translation import ugettext_lazy as _
8
7
9
8
from debug_toolbar .panels import Panel
10
9
10
+ from django .template import Template as DjangoTemplate
11
+
12
+ try :
13
+ jinja_import = True
14
+ from jinja2 import Template as JinjaTemplate
15
+ except ImportError :
16
+ jinja_import = False
17
+
11
18
12
19
def dummy_color_generator ():
13
20
while True :
@@ -24,25 +31,38 @@ def dummy_color_generator():
24
31
providing_args = ['instance' , 'start' , 'end' , 'level' ])
25
32
26
33
27
- def template_render_wrapper (self , context ):
28
- result = None
29
- if hasattr (Template , 'tp_saved_render' ):
30
- t_start = time ()
31
- try :
32
- result = Template .tp_saved_render (self , context )
33
- finally :
34
- t_end = time ()
34
+ def template_render_wrapper_django (self , context ):
35
+ t_start = time ()
36
+ result = DjangoTemplate .tp_saved_render (self , context )
37
+ t_end = time ()
35
38
36
- template_rendered .send (
37
- sender = Template , instance = self , start = t_start , end = t_end ,
38
- level = len (stack ()))
39
+ template_rendered .send (
40
+ sender = DjangoTemplate , instance = self , start = t_start , end = t_end ,
41
+ level = len (stack ()))
39
42
40
43
return result
41
44
42
- # Wrap the original Template.render
43
- if not hasattr (Template , 'tp_saved_render' ):
44
- Template .tp_saved_render = Template .render
45
- Template .render = template_render_wrapper
45
+
46
+ def template_render_wrapper_jinja (self , context ):
47
+ t_start = time ()
48
+ result = JinjaTemplate .tp_saved_render (self , context )
49
+ t_end = time ()
50
+
51
+ template_rendered .send (
52
+ sender = JinjaTemplate , instance = self , start = t_start , end = t_end ,
53
+ level = len (stack ()))
54
+
55
+ return result
56
+
57
+
58
+ DjangoTemplate .engine = DjangoTemplate
59
+ DjangoTemplate .tp_saved_render = DjangoTemplate .render
60
+ DjangoTemplate .render = template_render_wrapper_django
61
+
62
+ if jinja_import :
63
+ JinjaTemplate .engine = JinjaTemplate
64
+ JinjaTemplate .tp_saved_render = JinjaTemplate .render
65
+ JinjaTemplate .render = template_render_wrapper_jinja
46
66
47
67
48
68
class TemplateProfilerPanel (Panel ):
@@ -62,7 +82,7 @@ def __init__(self, *args, **kwargs):
62
82
self .colors = {}
63
83
self .templates = []
64
84
self .color_generator = contrasting_color_generator ()
65
- return super (TemplateProfilerPanel , self ).__init__ (* args , ** kwargs )
85
+ super (TemplateProfilerPanel , self ).__init__ (* args , ** kwargs )
66
86
67
87
@property
68
88
def nav_title (self ):
0 commit comments