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')),  ) | 
