Skip to content

Commit f527947

Browse files
committed
Show template context on included templates
1 parent cdb6b7e commit f527947

File tree

5 files changed

+62
-1
lines changed

5 files changed

+62
-1
lines changed

debug_toolbar/utils.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,14 @@ def get_template_context(node, context, context_lines=3):
135135

136136

137137
def get_template_source_from_exception_info(node, context):
138-
exception_info = context.template.get_exception_info(Exception("DDT"), node.token)
138+
if context.template.origin == node.origin:
139+
exception_info = context.template.get_exception_info(
140+
Exception("DDT"), node.token
141+
)
142+
else:
143+
exception_info = context.render_context.template.get_exception_info(
144+
Exception("DDT"), node.token
145+
)
139146
line = exception_info["line"]
140147
source_lines = exception_info["source_lines"]
141148
name = exception_info["name"]

tests/panels/test_sql.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import datetime
2+
import os
23
import unittest
34

45
import django
@@ -396,3 +397,47 @@ def test_prettify_sql(self):
396397
self.panel.generate_stats(self.request, response)
397398
self.assertEqual(len(self.panel._queries), 1)
398399
self.assertEqual(pretty_sql, self.panel._queries[-1][1]["sql"])
400+
401+
@override_settings(
402+
DEBUG=True,
403+
)
404+
def test_flat_template_information(self):
405+
"""
406+
Test case for when the query is used in a flat template hierarchy
407+
(without included templates).
408+
"""
409+
self.assertEqual(len(self.panel._queries), 0)
410+
411+
users = User.objects.all()
412+
render(self.request, "sql/flat.html", {"users": users})
413+
414+
self.assertEqual(len(self.panel._queries), 1)
415+
416+
query = self.panel._queries[0]
417+
template_info = query[1]["template_info"]
418+
template_name = os.path.basename(template_info["name"])
419+
self.assertEqual(template_name, "flat.html")
420+
self.assertEqual(template_info["context"][2]["content"].strip(), "{{ users }}")
421+
self.assertEqual(template_info["context"][2]["highlight"], True)
422+
423+
@override_settings(
424+
DEBUG=True,
425+
)
426+
def test_nested_template_information(self):
427+
"""
428+
Test case for when the query is used in a nested template
429+
hierarchy (with included templates).
430+
"""
431+
self.assertEqual(len(self.panel._queries), 0)
432+
433+
users = User.objects.all()
434+
render(self.request, "sql/nested.html", {"users": users})
435+
436+
self.assertEqual(len(self.panel._queries), 1)
437+
438+
query = self.panel._queries[0]
439+
template_info = query[1]["template_info"]
440+
template_name = os.path.basename(template_info["name"])
441+
self.assertEqual(template_name, "included.html")
442+
self.assertEqual(template_info["context"][0]["content"].strip(), "{{ users }}")
443+
self.assertEqual(template_info["context"][0]["highlight"], True)

tests/templates/sql/flat.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{% extends "base.html" %}
2+
{% block content %}
3+
{{ users }}
4+
{% endblock %}

tests/templates/sql/included.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{ users }}

tests/templates/sql/nested.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{% extends "base.html" %}
2+
{% block content %}
3+
{% include "sql/included.html" %}
4+
{% endblock %}

0 commit comments

Comments
 (0)