diff --git a/debug_toolbar/panels/__init__.py b/debug_toolbar/panels/__init__.py index 8be87e152..eb3b21fff 100644 --- a/debug_toolbar/panels/__init__.py +++ b/debug_toolbar/panels/__init__.py @@ -2,7 +2,6 @@ from django.template.defaultfilters import slugify from django.template.loader import render_to_string -from debug_toolbar.middleware import DebugToolbarMiddleware class DebugPanel(object): @@ -11,14 +10,15 @@ class DebugPanel(object): """ # name = 'Base' # template = 'debug_toolbar/panels/base.html' - has_content = False # If content returns something, set to true in subclass + 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, context={}): + def __init__(self, toolbar, context={}): + self.toolbar = toolbar self.context.update(context) self.slug = slugify(self.name) @@ -44,16 +44,14 @@ def content(self): return render_to_string(self.template, context) def record_stats(self, stats): - toolbar = DebugToolbarMiddleware.get_current() - panel_stats = toolbar.stats.get(self.slug) + panel_stats = self.toolbar.stats.get(self.slug) if panel_stats: panel_stats.update(stats) else: - toolbar.stats[self.slug] = stats + self.toolbar.stats[self.slug] = stats def get_stats(self): - toolbar = DebugToolbarMiddleware.get_current() - return toolbar.stats.get(self.slug, {}) + return self.toolbar.stats.get(self.slug, {}) # Standard middleware methods diff --git a/debug_toolbar/static/debug_toolbar/js/toolbar.js b/debug_toolbar/static/debug_toolbar/js/toolbar.js index 094c3ac95..0b7d1ecae 100644 --- a/debug_toolbar/static/debug_toolbar/js/toolbar.js +++ b/debug_toolbar/static/debug_toolbar/js/toolbar.js @@ -28,6 +28,23 @@ $(this).parent().removeClass('active'); } else { $('.panelContent').hide(); // Hide any that are already open + var inner = current.find('.djDebugPanelContent .scroll').first(); + if ($(inner).empty()) { + var ajax_data = { + data: { + toolbar_id: $('#djDebug').data('toolbar-id'), + panel_id: this.className + }, + type: 'GET', + url: $('#djDebug').data('render-panel-url') + }; + $.ajax(ajax_data).done(function(data){ + inner.html(data); + }).fail(function(xhr){ + var message = '
Back

'+xhr.status+': '+xhr.statusText+'

'; + $('#djDebugWindow').html(message).show(); + }); + } current.show(); $('#djDebugToolbar li').removeClass('active'); $(this).parent().addClass('active'); diff --git a/debug_toolbar/templates/debug_toolbar/base.html b/debug_toolbar/templates/debug_toolbar/base.html index e21404432..d5a356cd9 100644 --- a/debug_toolbar/templates/debug_toolbar/base.html +++ b/debug_toolbar/templates/debug_toolbar/base.html @@ -8,7 +8,9 @@ //]]> -