diff options
| author | Aymeric Augustin | 2013-11-15 20:14:40 +0100 | 
|---|---|---|
| committer | Aymeric Augustin | 2013-11-15 20:33:51 +0100 | 
| commit | 70d3aa1b8c12d614f2ca1b1b550bb605d8c8a506 (patch) | |
| tree | 00df40543a7e7a3b509dfb3bc2c9efb1f3736e05 /debug_toolbar/middleware.py | |
| parent | 5f54e2d88a12ec7fa06bd2a9dd54e1af2f0b50f7 (diff) | |
| download | django-debug-toolbar-70d3aa1b8c12d614f2ca1b1b550bb605d8c8a506.tar.bz2 | |
Make panels behave more like Django middleware.
Diffstat (limited to 'debug_toolbar/middleware.py')
| -rw-r--r-- | debug_toolbar/middleware.py | 44 | 
1 files changed, 22 insertions, 22 deletions
| diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index 44d0700..7456072 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -59,34 +59,34 @@ class DebugToolbarMiddleware(object):      def process_request(self, request):          __traceback_hide__ = True                                       # noqa -        if self.show_toolbar(request): -            toolbar = DebugToolbar(request) -            for panel in toolbar.panels: -                panel.enabled = panel.dom_id() not in request.COOKIES -                if not panel.enabled: -                    continue -                panel.enable_instrumentation() -                panel.process_request(request) -            self.__class__.debug_toolbars[threading.current_thread().ident] = toolbar +        if not self.show_toolbar(request): +            return +        response = None +        toolbar = DebugToolbar(request) +        for panel in toolbar.enabled_panels: +            panel.enable_instrumentation() +        for panel in toolbar.enabled_panels: +            response = panel.process_request(request) +            if response: +                break +        self.__class__.debug_toolbars[threading.current_thread().ident] = toolbar +        return response      def process_view(self, request, view_func, view_args, view_kwargs):          __traceback_hide__ = True                                       # noqa          toolbar = self.__class__.debug_toolbars.get(threading.current_thread().ident)          if not toolbar:              return -        result = None -        for panel in toolbar.panels: -            if not panel.enabled: -                continue +        response = None +        for panel in toolbar.enabled_panels:              response = panel.process_view(request, view_func, view_args, view_kwargs)              if response: -                result = response -        return result +                break +        return response      def process_response(self, request, response):          __traceback_hide__ = True                                       # noqa -        ident = threading.current_thread().ident -        toolbar = self.__class__.debug_toolbars.get(ident) +        toolbar = self.__class__.debug_toolbars.pop(threading.current_thread().ident, None)          if not toolbar or request.is_ajax() or getattr(response, 'streaming', False):              return response          if isinstance(response, HttpResponseRedirect): @@ -101,10 +101,11 @@ class DebugToolbarMiddleware(object):                      {'redirect_to': redirect_to}                  )                  response.cookies = cookies -        for panel in toolbar.panels: -            if not panel.enabled: -                continue -            panel.process_response(request, response) +        for panel in reversed(toolbar.enabled_panels): +            new_response = panel.process_response(request, response) +            if new_response: +                response = new_response +        for panel in reversed(toolbar.enabled_panels):              panel.disable_instrumentation()          if ('gzip' not in response.get('Content-Encoding', '') and                  response.get('Content-Type', '').split(';')[0] in _HTML_TYPES): @@ -114,5 +115,4 @@ class DebugToolbarMiddleware(object):                  force_text(toolbar.render_toolbar() + self.tag))              if response.get('Content-Length', None):                  response['Content-Length'] = len(response.content) -        del self.__class__.debug_toolbars[ident]          return response | 
