diff options
| author | Matt George | 2008-09-29 12:30:37 -0500 |
|---|---|---|
| committer | Matt George | 2008-09-29 12:30:37 -0500 |
| commit | 4734384cecd18ee6497730dc997aa34040975d13 (patch) | |
| tree | adbbe87fbc1f441e83ea068f19a5128fffd98f09 /debug_toolbar/panels/template.py | |
| parent | 2a32669822bddb31f687fcf6ca45f5d82d691e8d (diff) | |
| parent | ce8c68b79c2de4abde01b29b1c73754ce4deb981 (diff) | |
| download | django-debug-toolbar-4734384cecd18ee6497730dc997aa34040975d13.tar.bz2 | |
Merge branch 'master' of git://github.com/robhudson/django-debug-toolbar
Conflicts:
debug_toolbar/templates/debug_toolbar/base.html
Diffstat (limited to 'debug_toolbar/panels/template.py')
| -rw-r--r-- | debug_toolbar/panels/template.py | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/debug_toolbar/panels/template.py b/debug_toolbar/panels/template.py index f1cf65b..022a41f 100644 --- a/debug_toolbar/panels/template.py +++ b/debug_toolbar/panels/template.py @@ -1,6 +1,8 @@ +from pprint import pformat from django.conf import settings from django.core.signals import request_started from django.dispatch import Signal +from django.template.context import get_standard_processors from django.template.loader import render_to_string from django.test.signals import template_rendered from debug_toolbar.panels import DebugPanel @@ -30,13 +32,12 @@ class TemplateDebugPanel(DebugPanel): name = 'Template' has_content = True - def __init__(self, request): - super(TemplateDebugPanel, self).__init__(request) - self.templates_used = [] - template_rendered.connect(self._storeRenderedTemplates) + def __init__(self): + self.templates = [] + template_rendered.connect(self._storeTemplateInfo) - def _storeRenderedTemplates(self, sender, **kwargs): - self.templates_used.append(kwargs['template']) + def _storeTemplateInfo(self, sender, **kwargs): + self.templates.append(kwargs) def title(self): return 'Templates' @@ -44,13 +45,32 @@ class TemplateDebugPanel(DebugPanel): def url(self): return '' + def process_request(self, request): + self.context_processors = dict( + [("%s.%s" % (k.__module__, k.__name__), pformat(k(request))) for k in get_standard_processors()] + ) + def content(self): - templates = [ - (t.name, t.origin and t.origin.name or 'No origin') - for t in self.templates_used - ] + template_context = [] + for i, d in enumerate(self.templates): + info = {} + # Clean up some info about templates + t = d.get('template', None) + # Skip templates that we are generating through the debug toolbar. + if t.name.startswith('debug_toolbar/'): + continue + if t.origin and t.origin.name: + t.origin_name = t.origin.name + else: + t.origin_name = 'No origin' + info['template'] = t + # Clean up context for better readability + c = d.get('context', None) + info['context'] = '\n'.join([pformat(_d) for _d in c.dicts]) + template_context.append(info) context = { - 'templates': templates, + 'templates': template_context, 'template_dirs': settings.TEMPLATE_DIRS, + 'context_processors': self.context_processors, } return render_to_string('debug_toolbar/panels/templates.html', context) |
