From 4a1451742bfa2a42ba5ec82bfa741c6644ba3807 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Mon, 11 Nov 2013 12:58:40 +0100 Subject: Set INTERNAL_IPS to a convenient default when it isn't set. --- debug_toolbar/models.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'debug_toolbar/models.py') diff --git a/debug_toolbar/models.py b/debug_toolbar/models.py index d6b18aa..3bdb639 100644 --- a/debug_toolbar/models.py +++ b/debug_toolbar/models.py @@ -19,3 +19,15 @@ for middleware_path in settings.MIDDLEWARE_CLASSES: if issubclass(middleware_cls, DebugToolbarMiddleware): load_panel_classes() break + +def prepend_to_setting(setting_name, value): + """Insert value at the beginning of a list or tuple setting.""" + values = getattr(settings, setting_name) + # Make a list [value] or tuple (value,) + value = type(values)((value,)) + setattr(settings, setting_name, value + values) + + +if not settings.INTERNAL_IPS: + prepend_to_setting('INTERNAL_IPS', '127.0.0.1') + prepend_to_setting('INTERNAL_IPS', '::1') -- cgit v1.2.3 From 0b9367398e86a2b50b0e2b12d9ec05e4a25bc7ee Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Mon, 11 Nov 2013 13:42:33 +0100 Subject: Automatically enable DebugToolbarMiddleware when it isn't enabled. --- debug_toolbar/models.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'debug_toolbar/models.py') diff --git a/debug_toolbar/models.py b/debug_toolbar/models.py index 3bdb639..397771f 100644 --- a/debug_toolbar/models.py +++ b/debug_toolbar/models.py @@ -7,18 +7,16 @@ from debug_toolbar.toolbar.loader import load_panel_classes from debug_toolbar.middleware import DebugToolbarMiddleware -for middleware_path in settings.MIDDLEWARE_CLASSES: +def is_toolbar_middleware(middleware_path): # Replace this with import_by_path in Django >= 1.6. try: mod_path, cls_name = middleware_path.rsplit('.', 1) mod = import_module(mod_path) middleware_cls = getattr(mod, cls_name) except (AttributeError, ImportError, ValueError): - continue + return + return issubclass(middleware_cls, DebugToolbarMiddleware) - if issubclass(middleware_cls, DebugToolbarMiddleware): - load_panel_classes() - break def prepend_to_setting(setting_name, value): """Insert value at the beginning of a list or tuple setting.""" @@ -31,3 +29,12 @@ def prepend_to_setting(setting_name, value): if not settings.INTERNAL_IPS: prepend_to_setting('INTERNAL_IPS', '127.0.0.1') prepend_to_setting('INTERNAL_IPS', '::1') + + +if not any(is_toolbar_middleware(middleware) + for middleware in settings.MIDDLEWARE_CLASSES): + prepend_to_setting('MIDDLEWARE_CLASSES', + 'debug_toolbar.middleware.DebugToolbarMiddleware') + + +load_panel_classes() -- cgit v1.2.3 From ef23e6dc31c66abd0c6784bf0044f53271d34b1e Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Mon, 11 Nov 2013 16:15:30 +0100 Subject: Simplify monkey-patching of URLs into urlconf. --- debug_toolbar/models.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'debug_toolbar/models.py') diff --git a/debug_toolbar/models.py b/debug_toolbar/models.py index 397771f..772b52b 100644 --- a/debug_toolbar/models.py +++ b/debug_toolbar/models.py @@ -1,6 +1,8 @@ from __future__ import unicode_literals from django.conf import settings +from django.conf.urls import include, patterns, url +from django.core.urlresolvers import reverse, NoReverseMatch from django.utils.importlib import import_module from debug_toolbar.toolbar.loader import load_panel_classes @@ -36,5 +38,13 @@ if not any(is_toolbar_middleware(middleware) prepend_to_setting('MIDDLEWARE_CLASSES', 'debug_toolbar.middleware.DebugToolbarMiddleware') +try: + reverse('djdt:render_panel') +except NoReverseMatch: + urlconf_module = import_module(settings.ROOT_URLCONF) + urlconf_module.urlpatterns += patterns('', + url(r'^__debug__/', include('debug_toolbar.urls', namespace='djdt', app_name='djdt')), + ) + load_panel_classes() -- cgit v1.2.3 From eb244f71bfc9cdd5cb4341f98002e03de3414287 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Mon, 11 Nov 2013 17:54:48 +0100 Subject: Don't set up the toolbar when DEBUG = False. --- debug_toolbar/models.py | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) (limited to 'debug_toolbar/models.py') diff --git a/debug_toolbar/models.py b/debug_toolbar/models.py index 772b52b..fc78874 100644 --- a/debug_toolbar/models.py +++ b/debug_toolbar/models.py @@ -20,6 +20,11 @@ def is_toolbar_middleware(middleware_path): return issubclass(middleware_cls, DebugToolbarMiddleware) +def is_toolbar_middleware_installed(): + return any(is_toolbar_middleware(middleware) + for middleware in settings.MIDDLEWARE_CLASSES) + + def prepend_to_setting(setting_name, value): """Insert value at the beginning of a list or tuple setting.""" values = getattr(settings, setting_name) @@ -28,23 +33,33 @@ def prepend_to_setting(setting_name, value): setattr(settings, setting_name, value + values) -if not settings.INTERNAL_IPS: - prepend_to_setting('INTERNAL_IPS', '127.0.0.1') - prepend_to_setting('INTERNAL_IPS', '::1') +def patch_internal_ips(): + if not settings.INTERNAL_IPS: + prepend_to_setting('INTERNAL_IPS', '127.0.0.1') + prepend_to_setting('INTERNAL_IPS', '::1') + +def patch_middleware_classes(): + if not is_toolbar_middleware_installed(): + prepend_to_setting('MIDDLEWARE_CLASSES', + 'debug_toolbar.middleware.DebugToolbarMiddleware') + + +def patch_root_urlconf(): + try: + reverse('djdt:render_panel') + except NoReverseMatch: + urlconf_module = import_module(settings.ROOT_URLCONF) + urlconf_module.urlpatterns += patterns('', # noqa + url(r'^__debug__/', include('debug_toolbar.urls', namespace='djdt', app_name='djdt')), + ) -if not any(is_toolbar_middleware(middleware) - for middleware in settings.MIDDLEWARE_CLASSES): - prepend_to_setting('MIDDLEWARE_CLASSES', - 'debug_toolbar.middleware.DebugToolbarMiddleware') -try: - reverse('djdt:render_panel') -except NoReverseMatch: - urlconf_module = import_module(settings.ROOT_URLCONF) - urlconf_module.urlpatterns += patterns('', - url(r'^__debug__/', include('debug_toolbar.urls', namespace='djdt', app_name='djdt')), - ) +if settings.DEBUG: + patch_internal_ips() + patch_middleware_classes() + patch_root_urlconf() -load_panel_classes() +if is_toolbar_middleware_installed(): + load_panel_classes() -- cgit v1.2.3