Skip to content

Commit cc57028

Browse files
committed
Support Django's cached template loader.
Closes #660
1 parent 02e8ea1 commit cc57028

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

debug_toolbar/panels/templates/views.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@ def template_source(request):
2121
for loader_name in settings.TEMPLATE_LOADERS:
2222
loader = find_template_loader(loader_name)
2323
if loader is not None:
24-
loaders.append(loader)
24+
# When the loader has loaders associated with it,
25+
# append those loaders to the list. This occurs with
26+
# django.template.loaders.cached.Loader
27+
if hasattr(loader, 'loaders'):
28+
loaders += loader.loaders
29+
else:
30+
loaders.append(loader)
2531
for loader in loaders:
2632
try:
2733
source, display_name = loader.load_template_source(template_name)

tests/test_integration.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,3 +159,28 @@ def test_expired_store(self):
159159
error = WebDriverWait(self.selenium, timeout=10).until(
160160
lambda selenium: version_panel.find_element_by_tag_name('p'))
161161
self.assertIn("Data for this panel isn't available anymore.", error.text)
162+
163+
@override_settings(TEMPLATE_LOADERS=[(
164+
'django.template.loaders.cached.Loader', (
165+
'django.template.loaders.filesystem.Loader',
166+
'django.template.loaders.app_directories.Loader',
167+
),
168+
)])
169+
def test_django_cached_template_loader(self):
170+
self.selenium.get(self.live_server_url + '/regular/basic/')
171+
version_panel = self.selenium.find_element_by_id('TemplatesPanel')
172+
173+
# Click to show the versions panel
174+
self.selenium.find_element_by_class_name('TemplatesPanel').click()
175+
176+
# Version panel loads
177+
trigger = WebDriverWait(self.selenium, timeout=10).until(
178+
lambda selenium: version_panel.find_element_by_css_selector(
179+
'.remoteCall'))
180+
trigger.click()
181+
182+
# Verify the code is displayed
183+
WebDriverWait(self.selenium, timeout=10).until(
184+
lambda selenium: self.selenium.find_element_by_css_selector(
185+
'#djDebugWindow code'))
186+

0 commit comments

Comments
 (0)