diff options
| author | Aymeric Augustin | 2014-01-08 21:32:45 +0100 |
|---|---|---|
| committer | Aymeric Augustin | 2014-01-08 21:39:05 +0100 |
| commit | c11b64c598db64d10e4d316a6fde433fc5d20aed (patch) | |
| tree | 11171a7e23a86d2f8f25ab06effc27547b534e94 | |
| parent | 37fadc0a0af4db7a0d3dd750e6a43efe4aed5ad9 (diff) | |
| download | django-debug-toolbar-c11b64c598db64d10e4d316a6fde433fc5d20aed.tar.bz2 | |
Update version panel for Django 1.7.
| -rw-r--r-- | debug_toolbar/panels/versions.py | 65 |
1 files changed, 43 insertions, 22 deletions
diff --git a/debug_toolbar/panels/versions.py b/debug_toolbar/panels/versions.py index 321ba6e..29f165b 100644 --- a/debug_toolbar/panels/versions.py +++ b/debug_toolbar/panels/versions.py @@ -27,28 +27,49 @@ class VersionsPanel(Panel): template = 'debug_toolbar/panels/versions.html' 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]) - + versions = [ + ('Python', '%d.%d.%d' % sys.version_info[:3]), + ('Django', self.get_app_version(django)), + ] + if django.VERSION[:2] >= (1, 7): + versions += list(self.gen_app_versions_1_7()) + else: + versions += list(self.gen_app_versions_1_6()) self.record_stats({ - 'versions': OrderedDict(versions), + 'versions': OrderedDict(sorted(versions, key=lambda v: v[0])), 'paths': sys.path, }) + + def gen_app_versions_1_7(self): + from django.apps import apps + for app_config in apps.get_app_configs(): + name = app_config.verbose_name + app = app_config.module + version = self.get_app_version(app) + if version: + yield name, version + + def gen_app_versions_1_6(self): + for app in list(settings.INSTALLED_APPS): + name = app.split('.')[-1].replace('_', ' ').capitalize() + app = import_module(app) + version = self.get_app_version(app) + if version: + yield name, version + + def get_app_version(self, 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: + return + if isinstance(version, (list, tuple)): + version = '.'.join(str(o) for o in version) + return version |
