aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--debug_toolbar/panels/__init__.py8
-rw-r--r--debug_toolbar/panels/cache.py14
-rw-r--r--debug_toolbar/panels/headers.py5
-rw-r--r--debug_toolbar/panels/logger.py7
-rw-r--r--debug_toolbar/panels/request_vars.py9
-rw-r--r--debug_toolbar/panels/settings_vars.py5
-rw-r--r--debug_toolbar/panels/signals.py6
-rw-r--r--debug_toolbar/panels/sql.py9
-rw-r--r--debug_toolbar/panels/template.py10
-rw-r--r--debug_toolbar/panels/timer.py7
-rw-r--r--debug_toolbar/panels/version.py5
-rw-r--r--debug_toolbar/toolbar/loader.py14
12 files changed, 67 insertions, 32 deletions
diff --git a/debug_toolbar/panels/__init__.py b/debug_toolbar/panels/__init__.py
index cf65aa8..fa2e4b6 100644
--- a/debug_toolbar/panels/__init__.py
+++ b/debug_toolbar/panels/__init__.py
@@ -7,9 +7,13 @@ class DebugPanel(object):
# name = Base
has_content = False # If content returns something, set to true in subclass
+ # We'll maintain a local context instance so we can expose our template
+ # context variables to panels which need them:
+ context = {}
+
# Panel methods
- def __init__(self):
- pass
+ def __init__(self, context={}):
+ self.context.update(context)
def dom_id(self):
return 'djDebug%sPanel' % (self.name.replace(' ', ''))
diff --git a/debug_toolbar/panels/cache.py b/debug_toolbar/panels/cache.py
index 61b5690..5617ec2 100644
--- a/debug_toolbar/panels/cache.py
+++ b/debug_toolbar/panels/cache.py
@@ -76,7 +76,8 @@ class CacheDebugPanel(DebugPanel):
name = 'Cache'
has_content = True
- def __init__(self):
+ def __init__(self, *args, **kwargs):
+ super(self.__class__, self).__init__(*args, **kwargs)
# This is hackish but to prevent threading issues is somewhat needed
if isinstance(cache.cache, CacheStatTracker):
cache.cache.reset()
@@ -95,9 +96,10 @@ class CacheDebugPanel(DebugPanel):
return ''
def content(self):
- context = dict(
- cache_calls = len(self.cache.calls),
- cache_time = self.cache.total_time,
- cache = self.cache,
- )
+ context = self.context.copy()
+ context.update({
+ 'cache_calls': len(self.cache.calls),
+ 'cache_time': self.cache.total_time,
+ 'cache': self.cache,
+ })
return render_to_string('debug_toolbar/panels/cache.html', context)
diff --git a/debug_toolbar/panels/headers.py b/debug_toolbar/panels/headers.py
index 7a44c2d..1e929f6 100644
--- a/debug_toolbar/panels/headers.py
+++ b/debug_toolbar/panels/headers.py
@@ -47,7 +47,8 @@ class HeaderDebugPanel(DebugPanel):
)
def content(self):
- context = {
+ context = self.context.copy()
+ context.update({
'headers': self.headers
- }
+ })
return render_to_string('debug_toolbar/panels/headers.html', context)
diff --git a/debug_toolbar/panels/logger.py b/debug_toolbar/panels/logger.py
index 99f2602..620102e 100644
--- a/debug_toolbar/panels/logger.py
+++ b/debug_toolbar/panels/logger.py
@@ -75,4 +75,9 @@ class LoggingPanel(DebugPanel):
'file': record.pathname,
'line': record.lineno,
})
- return render_to_string('debug_toolbar/panels/logger.html', {'records': records})
+
+ context = self.context.copy()
+ context.update({'records': records})
+
+ return render_to_string('debug_toolbar/panels/logger.html', context)
+
diff --git a/debug_toolbar/panels/request_vars.py b/debug_toolbar/panels/request_vars.py
index cea5ec7..956e028 100644
--- a/debug_toolbar/panels/request_vars.py
+++ b/debug_toolbar/panels/request_vars.py
@@ -27,15 +27,18 @@ class RequestVarsDebugPanel(DebugPanel):
self.view_kwargs = view_kwargs
def content(self):
- context = {
+ context = self.context.copy()
+ context.update({
'get': [(k, self.request.GET.getlist(k)) for k in self.request.GET],
'post': [(k, self.request.POST.getlist(k)) for k in self.request.POST],
'cookies': [(k, self.request.COOKIES.get(k)) for k in self.request.COOKIES],
'view_func': '%s.%s' % (self.view_func.__module__, self.view_func.__name__),
'view_args': self.view_args,
'view_kwargs': self.view_kwargs
- }
+ })
if hasattr(self.request, 'session'):
- context['session'] = [(k, self.request.session.get(k)) for k in self.request.session.iterkeys()]
+ context.update({
+ 'session': [(k, self.request.session.get(k)) for k in self.request.session.iterkeys()]
+ })
return render_to_string('debug_toolbar/panels/request_vars.html', context)
diff --git a/debug_toolbar/panels/settings_vars.py b/debug_toolbar/panels/settings_vars.py
index 8243acf..ebb4464 100644
--- a/debug_toolbar/panels/settings_vars.py
+++ b/debug_toolbar/panels/settings_vars.py
@@ -22,7 +22,8 @@ class SettingsVarsDebugPanel(DebugPanel):
return ''
def content(self):
- context = {
+ context = self.context.copy()
+ context.update({
'settings': get_safe_settings(),
- }
+ })
return render_to_string('debug_toolbar/panels/settings_vars.html', context)
diff --git a/debug_toolbar/panels/signals.py b/debug_toolbar/panels/signals.py
index ed5f92f..dbd3725 100644
--- a/debug_toolbar/panels/signals.py
+++ b/debug_toolbar/panels/signals.py
@@ -80,4 +80,8 @@ class SignalDebugPanel(DebugPanel):
text = "function %s" % receiver.__name__
receivers.append(text)
signals.append((name, signal, receivers))
- return render_to_string('debug_toolbar/panels/signals.html', {'signals': signals})
+
+ context = self.context.copy()
+ context.update({'signals': signals})
+
+ return render_to_string('debug_toolbar/panels/signals.html', context)
diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py
index 7fa4423..1ac8445 100644
--- a/debug_toolbar/panels/sql.py
+++ b/debug_toolbar/panels/sql.py
@@ -137,7 +137,8 @@ class SQLDebugPanel(DebugPanel):
name = 'SQL'
has_content = True
- def __init__(self):
+ def __init__(self, *args, **kwargs):
+ super(self.__class__, self).__init__(*args, **kwargs)
self._offset = len(connection.queries)
self._sql_time = 0
self._queries = []
@@ -173,11 +174,13 @@ class SQLDebugPanel(DebugPanel):
query['start_offset'] = width_ratio_tally
width_ratio_tally += query['width_ratio']
- context = {
+ context = self.context.copy()
+ context.update({
'queries': self._queries,
'sql_time': self._sql_time,
'is_mysql': settings.DATABASE_ENGINE == 'mysql',
- }
+ })
+
return render_to_string('debug_toolbar/panels/sql.html', context)
def ms_from_timedelta(td):
diff --git a/debug_toolbar/panels/template.py b/debug_toolbar/panels/template.py
index 86b1c3e..fe34729 100644
--- a/debug_toolbar/panels/template.py
+++ b/debug_toolbar/panels/template.py
@@ -36,7 +36,8 @@ class TemplateDebugPanel(DebugPanel):
name = 'Template'
has_content = True
- def __init__(self):
+ def __init__(self, *args, **kwargs):
+ super(self.__class__, self).__init__(*args, **kwargs)
self.templates = []
template_rendered.connect(self._store_template_info)
@@ -103,9 +104,12 @@ class TemplateDebugPanel(DebugPanel):
pass
info['context'] = '\n'.join(context_list)
template_context.append(info)
- context = {
+
+ context = self.context.copy()
+ context.update({
'templates': template_context,
'template_dirs': [normpath(x) for x in settings.TEMPLATE_DIRS],
'context_processors': context_processors,
- }
+ })
+
return render_to_string('debug_toolbar/panels/templates.html', context)
diff --git a/debug_toolbar/panels/timer.py b/debug_toolbar/panels/timer.py
index 583c1c0..d866166 100644
--- a/debug_toolbar/panels/timer.py
+++ b/debug_toolbar/panels/timer.py
@@ -84,7 +84,10 @@ class TimerDebugPanel(DebugPanel):
# ('Page faults', '%d no i/o, %d requiring i/o' % (minflt, majflt)),
# ('Disk operations', '%d in, %d out, %d swapout' % (blkin, blkout, swap)),
)
- context = {
+
+ context = self.context.copy()
+ context.update({
'rows': rows,
- }
+ })
+
return render_to_string('debug_toolbar/panels/timer.html', context)
diff --git a/debug_toolbar/panels/version.py b/debug_toolbar/panels/version.py
index 96a4535..098ab62 100644
--- a/debug_toolbar/panels/version.py
+++ b/debug_toolbar/panels/version.py
@@ -50,7 +50,10 @@ class VersionDebugPanel(DebugPanel):
version = '.'.join(str(o) for o in version)
versions[name] = version
- return render_to_string('debug_toolbar/panels/versions.html', {
+ context = self.context.copy()
+ context.update({
'versions': versions,
'paths': sys.path,
})
+
+ return render_to_string('debug_toolbar/panels/versions.html', context)
diff --git a/debug_toolbar/toolbar/loader.py b/debug_toolbar/toolbar/loader.py
index c7f999e..8e89aef 100644
--- a/debug_toolbar/toolbar/loader.py
+++ b/debug_toolbar/toolbar/loader.py
@@ -11,6 +11,9 @@ class DebugToolbar(object):
self.config = {
'INTERCEPT_REDIRECTS': True,
}
+ self.template_context = {
+ 'BASE_URL': self.request.META.get('SCRIPT_NAME', ''),
+ }
# Override this tuple by copying to settings.py as `DEBUG_TOOLBAR_PANELS`
self.default_panels = (
'debug_toolbar.panels.version.VersionDebugPanel',
@@ -56,9 +59,8 @@ class DebugToolbar(object):
raise exceptions.ImproperlyConfigured, 'Toolbar Panel module "%s" does not define a "%s" class' % (panel_module, panel_classname)
try:
- panel_instance = panel_class()
+ panel_instance = panel_class(context=self.template_context)
except:
- print panel_class
raise # Bubble up problem loading panel
self.panels.append(panel_instance)
@@ -67,7 +69,7 @@ class DebugToolbar(object):
"""
Renders the overall Toolbar with panels inside.
"""
- return render_to_string('debug_toolbar/base.html', {
- 'panels': self.panels,
- 'BASE_URL': self.request.META.get('SCRIPT_NAME', ''),
- })
+ context = self.template_context.copy()
+ context.update({ 'panels': self.panels, })
+
+ return render_to_string('debug_toolbar/base.html', context)