diff options
| -rw-r--r-- | debug_toolbar/panels/__init__.py | 8 | ||||
| -rw-r--r-- | debug_toolbar/panels/cache.py | 14 | ||||
| -rw-r--r-- | debug_toolbar/panels/headers.py | 5 | ||||
| -rw-r--r-- | debug_toolbar/panels/logger.py | 7 | ||||
| -rw-r--r-- | debug_toolbar/panels/request_vars.py | 9 | ||||
| -rw-r--r-- | debug_toolbar/panels/settings_vars.py | 5 | ||||
| -rw-r--r-- | debug_toolbar/panels/signals.py | 6 | ||||
| -rw-r--r-- | debug_toolbar/panels/sql.py | 9 | ||||
| -rw-r--r-- | debug_toolbar/panels/template.py | 10 | ||||
| -rw-r--r-- | debug_toolbar/panels/timer.py | 7 | ||||
| -rw-r--r-- | debug_toolbar/panels/version.py | 5 | ||||
| -rw-r--r-- | debug_toolbar/toolbar/loader.py | 14 | 
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) | 
