aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAymeric Augustin2013-10-18 22:34:29 +0200
committerAymeric Augustin2013-10-18 22:34:29 +0200
commitd112cc5ed14fa97eb187aa7f0b38318ea03d77dc (patch)
tree9b2834cf02ce0062cb161bbb1379525569b31483
parentd3d5b492543ed0fa42914152178df88b59496fe7 (diff)
downloaddjango-debug-toolbar-d112cc5ed14fa97eb187aa7f0b38318ea03d77dc.tar.bz2
Make show_toolbar available for easier customization.
Thanks Ned Batchelder for the suggestion. Fix #324.
-rw-r--r--debug_toolbar/middleware.py24
-rw-r--r--tests/tests.py46
2 files changed, 29 insertions, 41 deletions
diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py
index 29da751..214d895 100644
--- a/debug_toolbar/middleware.py
+++ b/debug_toolbar/middleware.py
@@ -34,6 +34,19 @@ def replace_insensitive(string, target, replacement):
return string
+def show_toolbar(request):
+ """
+ Default function to determine whether to show the toolbar on a given page.
+ """
+ if getattr(settings, 'TEST', False):
+ return False
+
+ if request.META.get('REMOTE_ADDR', None) not in settings.INTERNAL_IPS:
+ return False
+
+ return bool(settings.DEBUG)
+
+
class DebugToolbarMiddleware(object):
"""
Middleware to set up Debug Toolbar on incoming request and render toolbar
@@ -49,7 +62,7 @@ class DebugToolbarMiddleware(object):
self._urlconfs = {}
# Set method to use to decide to show toolbar
- self.show_toolbar = self._show_toolbar # default
+ self.show_toolbar = show_toolbar
# The tag to attach the toolbar to
self.tag = '</body>'
@@ -64,15 +77,6 @@ class DebugToolbarMiddleware(object):
if tag:
self.tag = '</' + tag + '>'
- def _show_toolbar(self, request):
- if getattr(settings, 'TEST', False):
- return False
-
- remote_addr = request.META.get('REMOTE_ADDR', None)
-
- # if not internal ip, and not DEBUG
- return remote_addr in settings.INTERNAL_IPS and bool(settings.DEBUG)
-
def process_request(self, request):
__traceback_hide__ = True
if self.show_toolbar(request):
diff --git a/tests/tests.py b/tests/tests.py
index 7e1757f..2b26893 100644
--- a/tests/tests.py
+++ b/tests/tests.py
@@ -17,7 +17,7 @@ from django.template import Template, Context
from django.utils import six
from django.utils import unittest
-from debug_toolbar.middleware import DebugToolbarMiddleware
+from debug_toolbar.middleware import DebugToolbarMiddleware, show_toolbar
from debug_toolbar.panels.logger import (LoggingPanel,
MESSAGE_IF_STRING_REPRESENTATION_INVALID)
from debug_toolbar.panels.sql import SQLDebugPanel
@@ -45,46 +45,26 @@ class BaseTestCase(TestCase):
self.toolbar.stats = {}
+
+@override_settings(DEBUG=True, INTERNAL_IPS=['127.0.0.1'])
class DebugToolbarTestCase(BaseTestCase):
urls = 'tests.urls'
- def test_middleware(self):
- with self.settings(INTERNAL_IPS=['127.0.0.1'], DEBUG=True):
- resp = self.client.get('/execute_sql/')
- self.assertEqual(resp.status_code, 200)
+ def test_show_toolbar(self):
+ self.assertTrue(show_toolbar(self.request))
def test_show_toolbar_DEBUG(self):
- request = rf.get('/')
- middleware = DebugToolbarMiddleware()
-
- with self.settings(INTERNAL_IPS=['127.0.0.1'], DEBUG=True):
- self.assertTrue(middleware._show_toolbar(request))
-
- with self.settings(INTERNAL_IPS=['127.0.0.1'], DEBUG=False):
- self.assertFalse(middleware._show_toolbar(request))
+ with self.settings(DEBUG=False):
+ self.assertFalse(show_toolbar(self.request))
def test_show_toolbar_TEST(self):
- request = rf.get('/')
- middleware = DebugToolbarMiddleware()
-
- with self.settings(INTERNAL_IPS=['127.0.0.1'], TEST=True, DEBUG=True):
- self.assertFalse(middleware._show_toolbar(request))
-
- with self.settings(INTERNAL_IPS=['127.0.0.1'], TEST=False, DEBUG=True):
- self.assertTrue(middleware._show_toolbar(request))
+ with self.settings(TEST=True):
+ self.assertFalse(show_toolbar(self.request))
def test_show_toolbar_INTERNAL_IPS(self):
- request = rf.get('/')
-
- request.META = {'REMOTE_ADDR': '127.0.0.1'}
- middleware = DebugToolbarMiddleware()
-
- with self.settings(INTERNAL_IPS=['127.0.0.1'], DEBUG=True):
- self.assertTrue(middleware._show_toolbar(request))
-
- with self.settings(INTERNAL_IPS=[], DEBUG=True):
- self.assertFalse(middleware._show_toolbar(request))
+ with self.settings(INTERNAL_IPS=[]):
+ self.assertFalse(show_toolbar(self.request))
def test_request_urlconf_string(self):
request = rf.get('/')
@@ -176,6 +156,10 @@ class DebugToolbarIntegrationTestCase(TestCase):
urls = 'tests.urls'
+ def test_middleware(self):
+ response = self.client.get('/execute_sql/')
+ self.assertEqual(response.status_code, 200)
+
@override_settings(DEFAULT_CHARSET='iso-8859-1')
def test_non_utf8_charset(self):
response = self.client.get('/regular/ASCII/')