aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar/middleware.py
diff options
context:
space:
mode:
authorRob Hudson2008-08-27 23:57:17 -0700
committerRob Hudson2008-08-27 23:57:17 -0700
commitab06fbe6bf60be18a740547db957b5c44ae6b786 (patch)
tree0c424715d0b8d5f4abb1ffe3214adf599ff09f08 /debug_toolbar/middleware.py
downloaddjango-debug-toolbar-ab06fbe6bf60be18a740547db957b5c44ae6b786.tar.bz2
Initial commit of basic working Debug Toolbar (that needs a lot of CSS and JS love)
Diffstat (limited to 'debug_toolbar/middleware.py')
-rw-r--r--debug_toolbar/middleware.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py
new file mode 100644
index 0000000..b2e9b29
--- /dev/null
+++ b/debug_toolbar/middleware.py
@@ -0,0 +1,32 @@
+"""
+Debug Toolbar middleware
+"""
+import re
+from django.conf import settings
+from django.utils.safestring import mark_safe
+from debug_toolbar.toolbar.loader import DebugToolbar
+
+_HTML_TYPES = ('text/html', 'application/xhtml+xml')
+_END_HEAD_RE = re.compile(r'</head>', re.IGNORECASE)
+_END_BODY_RE = re.compile(r'</body>', re.IGNORECASE)
+
+class DebugToolbarMiddleware(object):
+ """
+ Middleware to set up Debug Toolbar on incoming request and render toolbar
+ on outgoing response.
+ """
+ def __init__(self):
+ self.debug_toolbar = None
+
+ def process_request(self, request):
+ if settings.DEBUG:
+ self.debug_toolbar = DebugToolbar()
+ self.debug_toolbar.load_panels()
+ return None
+
+ def process_response(self, request, response):
+ if settings.DEBUG:
+ if response['Content-Type'].split(';')[0] in _HTML_TYPES:
+ #response.content = _END_HEAD_RE.sub(mark_safe(self.debug_toolbar.render_styles() + "%s" % match.group()), response.content)
+ response.content = _END_BODY_RE.sub(mark_safe(self.debug_toolbar.render_toolbar() + '</body>'), response.content)
+ return response