Skip to content

Commit 6c38723

Browse files
committed
Show template context on included templates
1 parent ea65261 commit 6c38723

File tree

5 files changed

+58
-1
lines changed

5 files changed

+58
-1
lines changed

debug_toolbar/utils.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,10 @@ 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(Exception("DDT"), node.token)
140+
else:
141+
exception_info = context.render_context.template.get_exception_info(Exception("DDT"), node.token)
139142
line = exception_info["line"]
140143
source_lines = exception_info["source_lines"]
141144
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
@@ -357,3 +358,47 @@ def test_regression_infinite_recursion(self):
357358

358359
# ensure the stacktrace is populated
359360
self.assertTrue(len(query[1]["stacktrace"]) > 0)
361+
362+
@override_settings(
363+
DEBUG=True,
364+
)
365+
def test_flat_template_information(self):
366+
"""
367+
Test case for when the query is used in a flat template hierarchy
368+
(without included templates).
369+
"""
370+
self.assertEqual(len(self.panel._queries), 0)
371+
372+
users = User.objects.all()
373+
render(self.request, "sql/flat.html", {"users": users})
374+
375+
self.assertEqual(len(self.panel._queries), 1)
376+
377+
query = self.panel._queries[0]
378+
template_info = query[1]["template_info"]
379+
template_name = os.path.basename(template_info["name"])
380+
self.assertEqual(template_name, "flat.html")
381+
self.assertEqual(template_info["context"][2]["content"].strip(), "{{ users }}")
382+
self.assertEqual(template_info["context"][2]["highlight"], True)
383+
384+
@override_settings(
385+
DEBUG=True,
386+
)
387+
def test_nested_template_information(self):
388+
"""
389+
Test case for when the query is used in a nested template
390+
hierarchy (with included templates).
391+
"""
392+
self.assertEqual(len(self.panel._queries), 0)
393+
394+
users = User.objects.all()
395+
render(self.request, "sql/nested.html", {"users": users})
396+
397+
self.assertEqual(len(self.panel._queries), 1)
398+
399+
query = self.panel._queries[0]
400+
template_info = query[1]["template_info"]
401+
template_name = os.path.basename(template_info["name"])
402+
self.assertEqual(template_name, "included.html")
403+
self.assertEqual(template_info["context"][0]["content"].strip(), "{{ users }}")
404+
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)