diff options
| author | Aymeric Augustin | 2013-11-24 10:42:43 +0100 | 
|---|---|---|
| committer | Aymeric Augustin | 2013-11-24 11:01:44 +0100 | 
| commit | fe3df822111d3b56000deca354b0bceed7bde9cc (patch) | |
| tree | 8fe21689037cd975f83e7f70480b96e0ba2e3b6a /debug_toolbar/panels/versions.py | |
| parent | 7d24008ac3d70796c1502215c665311d2f21d6fd (diff) | |
| download | django-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.py | 56 | 
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, +        }) | 
