Skip to content

Commit

Permalink
Fixed Django1.8 support (template panel still requires a Django engin…
Browse files Browse the repository at this point in the history
…e to be defined)
  • Loading branch information
apollo13 authored and aaugustin committed Mar 8, 2015
1 parent e44729d commit bc499da
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 13 deletions.
19 changes: 16 additions & 3 deletions debug_toolbar/panels/templates/panel.py
Expand Up @@ -13,7 +13,6 @@
from django.conf.urls import url
from django.db.models.query import QuerySet, RawQuerySet
from django.template import Context, RequestContext, Template
from django.template.context import get_standard_processors
from django.test.signals import template_rendered
from django.test.utils import instrumented_test_render
from django.utils.encoding import force_text
Expand All @@ -24,6 +23,11 @@
from debug_toolbar.panels.sql.tracking import recording, SQLQueryTriggered
from debug_toolbar.panels.templates import views

try:
from django.template.engine import Engine
except ImportError:
Engine = None
from django.template.context import get_standard_processors

# Monkey-patch to enable the template_rendered signal. The receiver returns
# immediately when the panel is disabled to keep the overhead small.
Expand Down Expand Up @@ -51,7 +55,11 @@ def _request_context__init__(
processors = tuple(processors)
self.context_processors = OrderedDict()
updates = dict()
for processor in get_standard_processors() + processors:
if Engine:
std_processors = Engine.get_default().template_context_processors
else:
std_processors = get_standard_processors()
for processor in std_processors + processors:
name = '%s.%s' % (processor.__module__, processor.__name__)
context = processor(request)
self.context_processors[name] = context
Expand Down Expand Up @@ -191,8 +199,13 @@ def process_response(self, request, response):
else:
context_processors = None

if Engine:
template_dirs = Engine.get_default().dirs
else:
template_dirs = settings.TEMPLATE_DIRS

self.record_stats({
'templates': template_context,
'template_dirs': [normpath(x) for x in settings.TEMPLATE_DIRS],
'template_dirs': [normpath(x) for x in template_dirs],
'context_processors': context_processors,
})
26 changes: 16 additions & 10 deletions debug_toolbar/panels/templates/views.py
Expand Up @@ -4,12 +4,13 @@
from django.conf import settings
from django.shortcuts import render_to_response
from django.template import TemplateDoesNotExist
try:
from django.template.loaders.utils import find_template_loader
except ImportError: # django < 1.8
from django.template.loader import find_template_loader
from django.utils.safestring import mark_safe

try:
from django.template.engine import Engine
except ImportError:
Engine = None
from django.template.loader import find_template_loader

def template_source(request):
"""
Expand All @@ -20,18 +21,23 @@ def template_source(request):
if template_name is None:
return HttpResponseBadRequest('"template" key is required')

loaders = []
for loader_name in settings.TEMPLATE_LOADERS:
loader = find_template_loader(loader_name)
final_loaders = []
if Engine:
loaders = Engine.get_default().template_loaders
else:
loaders = [find_template_loader(loader_name) for loader_name in settings.TEMPLATE_LOADERS]

for loader in loaders:
if loader is not None:
# When the loader has loaders associated with it,
# append those loaders to the list. This occurs with
# django.template.loaders.cached.Loader
if hasattr(loader, 'loaders'):
loaders += loader.loaders
final_loaders += loader.loaders
else:
loaders.append(loader)
for loader in loaders:
final_loaders.append(loader)

for loader in final_loaders:
try:
source, display_name = loader.load_template_source(template_name)
break
Expand Down

0 comments on commit bc499da

Please sign in to comment.