Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion debug_panel/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,29 @@ class DebugPanelMiddleware(debug_toolbar.middleware.DebugToolbarMiddleware):
on outgoing response.
"""

def _process_request(self, request):
# Decide whether the toolbar is active for this request.
from debug_toolbar.middleware import get_show_toolbar, DebugToolbar

show_toolbar = get_show_toolbar()
if not show_toolbar(request):
return

toolbar = DebugToolbar(request)
self.__class__.debug_toolbars[threading.current_thread().ident] = toolbar

# Activate instrumentation ie. monkey-patch.
for panel in toolbar.enabled_panels:
panel.enable_instrumentation()

# Run process_request methods of panels like Django middleware.
response = None
for panel in toolbar.enabled_panels:
response = panel.process_request(request)
if response:
break
return response

def process_request(self, request):
"""
Try to match the request with an URL from debug_panel application.
Expand All @@ -44,7 +67,7 @@ def process_request(self, request):
try:
res = resolve(request.path, urlconf=debug_panel.urls)
except Resolver404:
return super(DebugPanelMiddleware, self).process_request(request)
return self._process_request(request)

return res.func(request, *res.args, **res.kwargs)

Expand Down