diff options
| -rw-r--r-- | debug_toolbar/models.py | 45 | ||||
| -rw-r--r-- | tests/settings.py | 16 | ||||
| -rw-r--r-- | tests/urls.py | 3 |
3 files changed, 46 insertions, 18 deletions
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() diff --git a/tests/settings.py b/tests/settings.py index 33058f2..a41b5a7 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -8,10 +8,12 @@ BASE_DIR = os.path.dirname(os.path.dirname(__file__)) SECRET_KEY = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' +INTERNAL_IPS = ['127.0.0.1'] + # Application definition -INSTALLED_APPS = ( +INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', @@ -20,7 +22,17 @@ INSTALLED_APPS = ( 'django.contrib.staticfiles', 'debug_toolbar', 'tests', -) +] + +MIDDLEWARE_CLASSES = [ + 'debug_toolbar.middleware.DebugToolbarMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] ROOT_URLCONF = 'tests.urls' diff --git a/tests/urls.py b/tests/urls.py index 977084b..d4417a1 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals -from django.conf.urls import patterns, url +from django.conf.urls import include, patterns, url from django.contrib import admin from .models import NonAsciiRepr @@ -18,4 +18,5 @@ urlpatterns = patterns('tests.views', # noqa url(r'^non_ascii_request/$', 'regular_view', {'title': NonAsciiRepr()}), url(r'^new_user/$', 'new_user'), url(r'^execute_sql/$', 'execute_sql'), + url(r'^__debug__/', include('debug_toolbar.urls', namespace='djdt', app_name='djdt')), ) |
