From d05dcbb4aa93b1ce9d097ed8d537f06eb2491f5e Mon Sep 17 00:00:00 2001 From: Bryan Chow Date: Wed, 3 Mar 2010 16:02:19 -0800 Subject: Factor versions data out of VersionDebugPanel. --- debug_toolbar/debug/version.py | 34 +++++++++++++++++++++++++++++++++ debug_toolbar/panels/version.py | 42 +++++++++-------------------------------- 2 files changed, 43 insertions(+), 33 deletions(-) create mode 100644 debug_toolbar/debug/version.py diff --git a/debug_toolbar/debug/version.py b/debug_toolbar/debug/version.py new file mode 100644 index 0000000..0c17f58 --- /dev/null +++ b/debug_toolbar/debug/version.py @@ -0,0 +1,34 @@ +import sys +from django import get_version +from django.conf import settings + +class DebugVersions(object): + + def django_version(self): + return get_version() + + def get_versions(self): + 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 versions + + def get_paths(self): + return sys.path diff --git a/debug_toolbar/panels/version.py b/debug_toolbar/panels/version.py index 098ab62..5f6aa49 100644 --- a/debug_toolbar/panels/version.py +++ b/debug_toolbar/panels/version.py @@ -1,13 +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 _ - -import debug_toolbar from debug_toolbar.panels import DebugPanel - +from debug_toolbar.debug.version import DebugVersions class VersionDebugPanel(DebugPanel): """ @@ -16,44 +10,26 @@ class VersionDebugPanel(DebugPanel): name = 'Version' has_content = True + def __init__(self, context={}): + super(VersionDebugPanel, self).__init__(context) + self.debug_version = DebugVersions() + def nav_title(self): return _('Versions') def nav_subtitle(self): - return 'Django %s' % django.get_version() + return 'Django %s' % self.debug_version.django_version() def url(self): return '' - + def title(self): return _('Versions') def content(self): - 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 - context = self.context.copy() context.update({ - 'versions': versions, - 'paths': sys.path, + 'versions': self.debug_version.get_versions(), + 'paths': self.debug_version.get_paths(), }) - return render_to_string('debug_toolbar/panels/versions.html', context) -- cgit v1.2.3