From 924361de6c1c87a5dd4db0e37b94380246d85790 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Fri, 18 Sep 2009 19:29:32 -0400 Subject: Made the versions panel more powerful --- debug_toolbar/panels/version.py | 23 +++++++++++++++++++--- .../templates/debug_toolbar/panels/versions.html | 18 +++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 debug_toolbar/templates/debug_toolbar/panels/versions.html diff --git a/debug_toolbar/panels/version.py b/debug_toolbar/panels/version.py index 3d82dd0..1837021 100644 --- a/debug_toolbar/panels/version.py +++ b/debug_toolbar/panels/version.py @@ -1,21 +1,38 @@ +import sys + import django +from django.template.loader import render_to_string from django.utils.translation import ugettext_lazy as _ + +import debug_toolbar from debug_toolbar.panels import DebugPanel + class VersionDebugPanel(DebugPanel): """ Panel that displays the Django version. """ name = 'Version' + has_content = True def nav_title(self): - return _('Django Version') + return _('Versions') def nav_subtitle(self): - return django.get_version() + return 'Django %s' % django.get_version() def url(self): return '' + + def title(self): + return 'Versions' def content(self): - return '' + versions = { + 'Django': django.get_version(), + 'Django Debug Toolbar': debug_toolbar.__version__, + } + return render_to_string('debug_toolbar/panels/versions.html', { + 'versions': versions, + 'paths': sys.path, + }) diff --git a/debug_toolbar/templates/debug_toolbar/panels/versions.html b/debug_toolbar/templates/debug_toolbar/panels/versions.html new file mode 100644 index 0000000..f0ee012 --- /dev/null +++ b/debug_toolbar/templates/debug_toolbar/panels/versions.html @@ -0,0 +1,18 @@ +{% load i18n %} + + + + + + + + + + {% for package, version in versions.iteritems %} + + + + + {% endfor %} + +
{% trans "Package" %}{% trans "Version" %}
{{ package }}{{ version }}
-- cgit v1.2.3 From c91d9b7e48528fcc901b567d28ed67bdcb42bffa Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Fri, 25 Sep 2009 22:48:16 -0400 Subject: Mkae this threadsafe --- debug_toolbar/middleware.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index 29c6336..cd2386c 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -32,7 +32,7 @@ class DebugToolbarMiddleware(object): on outgoing response. """ def __init__(self): - self.debug_toolbar = None + self.debug_toolbars = {} self.original_urlconf = settings.ROOT_URLCONF self.original_pattern = patterns('', ('', include(self.original_urlconf)),) self.override_url = True @@ -63,22 +63,19 @@ class DebugToolbarMiddleware(object): self.override_url = False request.urlconf = 'debug_toolbar.urls' - self.debug_toolbar = DebugToolbar(request) - for panel in self.debug_toolbar.panels: + self.debug_toolbars[request] = DebugToolbar(request) + for panel in self.debug_toolbars[request]: panel.process_request(request) - elif self.debug_toolbar: - self.debug_toolbar = None - return None def process_view(self, request, view_func, view_args, view_kwargs): - if self.debug_toolbar: - for panel in self.debug_toolbar.panels: + if request in self.debug_toolbars: + for panel in self.debug_toolbars[request].panels: panel.process_view(request, view_func, view_args, view_kwargs) def process_response(self, request, response): - if not self.debug_toolbar: + if request not in self.debug_toolbars: return response - if self.debug_toolbar.config['INTERCEPT_REDIRECTS']: + if self.debug_toolbars[request].config['INTERCEPT_REDIRECTS']: if isinstance(response, HttpResponseRedirect): redirect_to = response.get('Location', None) if redirect_to: @@ -88,8 +85,9 @@ class DebugToolbarMiddleware(object): ) if response.status_code != 200: return response - for panel in self.debug_toolbar.panels: + for panel in self.debug_toolbars[request].panels: panel.process_response(request, response) if response['Content-Type'].split(';')[0] in _HTML_TYPES: - response.content = replace_insensitive(smart_unicode(response.content), u'', smart_unicode(self.debug_toolbar.render_toolbar() + u'')) + response.content = replace_insensitive(smart_unicode(response.content), u'', smart_unicode(self.debug_toolbars[request].render_toolbar() + u'')) + del self.debug_toolbars[request] return response -- cgit v1.2.3 From 4fd746e82f9ae2c36ca49627ae9b1a01b982d8ae Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Fri, 25 Sep 2009 23:20:09 -0400 Subject: detect versions for other installed applications --- debug_toolbar/middleware.py | 2 +- debug_toolbar/panels/version.py | 26 ++++++++++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index cd2386c..eed25c4 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -64,7 +64,7 @@ class DebugToolbarMiddleware(object): request.urlconf = 'debug_toolbar.urls' self.debug_toolbars[request] = DebugToolbar(request) - for panel in self.debug_toolbars[request]: + for panel in self.debug_toolbars[request].panels: panel.process_request(request) def process_view(self, request, view_func, view_args, view_kwargs): diff --git a/debug_toolbar/panels/version.py b/debug_toolbar/panels/version.py index 1837021..f5a5a59 100644 --- a/debug_toolbar/panels/version.py +++ b/debug_toolbar/panels/version.py @@ -1,6 +1,7 @@ import sys import django +from django.conf import settings from django.template.loader import render_to_string from django.utils.translation import ugettext_lazy as _ @@ -28,10 +29,27 @@ class VersionDebugPanel(DebugPanel): return 'Versions' def content(self): - versions = { - 'Django': django.get_version(), - 'Django Debug Toolbar': debug_toolbar.__version__, - } + versions = {} + for app in settings.INSTALLED_APPS + ['django']: + name = app.split('.')[-1].replace('_', ' ').capitalize() + __import__(app) + app = sys.modules[app] + if hasattr(app, 'get_version'): + get_version = app.get_version + if callable(get_version): + version = get_version() + else: + version = get_version + elif hasattr(app, 'VERSION'): + version = app.VERSION + elif hasattr(app, '__version__'): + version = app.__version__ + else: + continue + if isinstance(version, (list, tuple)): + version = '.'.join(str(o) for o in version) + versions[name] = version + return render_to_string('debug_toolbar/panels/versions.html', { 'versions': versions, 'paths': sys.path, -- cgit v1.2.3 From 2d848a859a85b6937a1fe10d05211a3717589d86 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Fri, 25 Sep 2009 23:35:26 -0400 Subject: kill whitespace --- debug_toolbar/panels/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug_toolbar/panels/version.py b/debug_toolbar/panels/version.py index f5a5a59..3b69520 100644 --- a/debug_toolbar/panels/version.py +++ b/debug_toolbar/panels/version.py @@ -49,7 +49,7 @@ class VersionDebugPanel(DebugPanel): if isinstance(version, (list, tuple)): version = '.'.join(str(o) for o in version) versions[name] = version - + return render_to_string('debug_toolbar/panels/versions.html', { 'versions': versions, 'paths': sys.path, -- cgit v1.2.3