aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar/panels/versions.py
diff options
context:
space:
mode:
authorAymeric Augustin2013-11-24 10:42:43 +0100
committerAymeric Augustin2013-11-24 11:01:44 +0100
commitfe3df822111d3b56000deca354b0bceed7bde9cc (patch)
tree8fe21689037cd975f83e7f70480b96e0ba2e3b6a /debug_toolbar/panels/versions.py
parent7d24008ac3d70796c1502215c665311d2f21d6fd (diff)
downloaddjango-debug-toolbar-fe3df822111d3b56000deca354b0bceed7bde9cc.tar.bz2
Rename all panels consistently.
Enforce absolute imports to avoid clashing with built-in package names. Thanks Jannis for his feedback.
Diffstat (limited to 'debug_toolbar/panels/versions.py')
-rw-r--r--debug_toolbar/panels/versions.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/debug_toolbar/panels/versions.py b/debug_toolbar/panels/versions.py
new file mode 100644
index 0000000..6028115
--- /dev/null
+++ b/debug_toolbar/panels/versions.py
@@ -0,0 +1,56 @@
+from __future__ import absolute_import, unicode_literals
+
+import sys
+
+import django
+from django.conf import settings
+from django.utils.translation import ugettext_lazy as _
+from django.utils.datastructures import SortedDict
+from django.utils.importlib import import_module
+
+from debug_toolbar.panels import Panel
+
+
+class VersionsPanel(Panel):
+ """
+ Shows versions of Python, Django, and installed apps if possible.
+ """
+ name = 'Versions'
+ template = 'debug_toolbar/panels/versions.html'
+ has_content = True
+
+ def nav_title(self):
+ return _('Versions')
+
+ def nav_subtitle(self):
+ return 'Django %s' % django.get_version()
+
+ def title(self):
+ return _('Versions')
+
+ def process_response(self, request, response):
+ versions = [('Python', '%d.%d.%d' % sys.version_info[:3])]
+ for app in list(settings.INSTALLED_APPS) + ['django']:
+ name = app.split('.')[-1].replace('_', ' ').capitalize()
+ app = import_module(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.append((name, version))
+ versions = sorted(versions, key=lambda version: version[0])
+
+ self.record_stats({
+ 'versions': SortedDict(versions),
+ 'paths': sys.path,
+ })