diff options
| -rw-r--r-- | debug_toolbar/panels/headers.py | 6 | ||||
| -rw-r--r-- | debug_toolbar/panels/request_vars.py | 17 | ||||
| -rw-r--r-- | debug_toolbar/panels/template.py | 5 | ||||
| -rw-r--r-- | debug_toolbar/panels/timer.py | 12 | ||||
| -rw-r--r-- | tests/test_integration.py | 10 |
5 files changed, 30 insertions, 20 deletions
diff --git a/debug_toolbar/panels/headers.py b/debug_toolbar/panels/headers.py index 36ecf3c..2a41081 100644 --- a/debug_toolbar/panels/headers.py +++ b/debug_toolbar/panels/headers.py @@ -49,13 +49,15 @@ class HeaderDebugPanel(DebugPanel): self.request_headers['Cookie'] = '=> see Request Vars panel' self.environ = OrderedDict( (k, v) for (k, v) in wsgi_env if k in self.environ_filter) + self.record_stats({ + 'request_headers': self.request_headers, + 'environ': self.environ, + }) def process_response(self, request, response): self.response_headers = OrderedDict(sorted(response.items())) self.record_stats({ - 'request_headers': self.request_headers, 'response_headers': self.response_headers, - 'environ': self.environ, }) diff --git a/debug_toolbar/panels/request_vars.py b/debug_toolbar/panels/request_vars.py index dc5b7b0..b5e7070 100644 --- a/debug_toolbar/panels/request_vars.py +++ b/debug_toolbar/panels/request_vars.py @@ -23,14 +23,11 @@ class RequestVarsDebugPanel(DebugPanel): def title(self): return _('Request Vars') - def process_request(self, request): - self.request = request - def process_response(self, request, response): self.record_stats({ - 'get': [(k, self.request.GET.getlist(k)) for k in sorted(self.request.GET)], - 'post': [(k, self.request.POST.getlist(k)) for k in sorted(self.request.POST)], - 'cookies': [(k, self.request.COOKIES.get(k)) for k in sorted(self.request.COOKIES)], + 'get': [(k, request.GET.getlist(k)) for k in sorted(request.GET)], + 'post': [(k, request.POST.getlist(k)) for k in sorted(request.POST)], + 'cookies': [(k, request.COOKIES.get(k)) for k in sorted(request.COOKIES)], }) view_info = { 'view_func': _('<no view>'), @@ -39,7 +36,7 @@ class RequestVarsDebugPanel(DebugPanel): 'view_urlname': 'None', } try: - match = resolve(self.request.path) + match = resolve(request.path) func, args, kwargs = match view_info['view_func'] = get_name_from_obj(func) view_info['view_args'] = args @@ -50,8 +47,8 @@ class RequestVarsDebugPanel(DebugPanel): pass self.record_stats(view_info) - if hasattr(self.request, 'session'): + if hasattr(request, 'session'): self.record_stats({ - 'session': [(k, self.request.session.get(k)) - for k in sorted(self.request.session.keys(), key=force_text)] + 'session': [(k, request.session.get(k)) + for k in sorted(request.session.keys(), key=force_text)] }) diff --git a/debug_toolbar/panels/template.py b/debug_toolbar/panels/template.py index 711193e..172765a 100644 --- a/debug_toolbar/panels/template.py +++ b/debug_toolbar/panels/template.py @@ -120,14 +120,11 @@ class TemplateDebugPanel(DebugPanel): num_templates = len(self.templates) return _('Templates (%(num_templates)s rendered)') % {'num_templates': num_templates} - def process_request(self, request): - self.request = request - def process_response(self, request, response): context_processors = dict( [ ("%s.%s" % (k.__module__, k.__name__), - pformat(k(self.request))) for k in get_standard_processors() + pformat(k(request))) for k in get_standard_processors() ] ) template_context = [] diff --git a/debug_toolbar/panels/timer.py b/debug_toolbar/panels/timer.py index ac8a808..9a0fef3 100644 --- a/debug_toolbar/panels/timer.py +++ b/debug_toolbar/panels/timer.py @@ -32,8 +32,10 @@ class TimerDebugPanel(DebugPanel): self._start_rusage = resource.getrusage(resource.RUSAGE_SELF) def process_response(self, request, response): - stats = {'total_time': (time.time() - self._start_time) * 1000} - if self.has_resource: + stats = {} + if hasattr(self, '_start_time'): + stats['total_time'] = (time.time() - self._start_time) * 1000 + if hasattr(self, '_start_rusage'): self._end_rusage = resource.getrusage(resource.RUSAGE_SELF) stats['utime'] = 1000 * self._elapsed_ru('ru_utime') stats['stime'] = 1000 * self._elapsed_ru('ru_stime') @@ -62,15 +64,17 @@ class TimerDebugPanel(DebugPanel): def nav_subtitle(self): stats = self.get_stats() - if self.has_resource: + if hasattr(self, '_start_rusage'): utime = self._end_rusage.ru_utime - self._start_rusage.ru_utime stime = self._end_rusage.ru_stime - self._start_rusage.ru_stime return _('CPU: %(cum)0.2fms (%(total)0.2fms)') % { 'cum': (utime + stime) * 1000.0, 'total': stats['total_time'] } - else: + elif 'total_time' in stats: return _('TOTAL: %0.2fms') % stats['total_time'] + else: + return '' def title(self): return _('Time') diff --git a/tests/test_integration.py b/tests/test_integration.py index 4bb0d38..a80f50c 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -12,6 +12,7 @@ from debug_toolbar.middleware import DebugToolbarMiddleware, show_toolbar from debug_toolbar.panels.request_vars import RequestVarsDebugPanel from .base import BaseTestCase +from .views import regular_view rf = RequestFactory() @@ -117,6 +118,15 @@ class DebugToolbarTestCase(BaseTestCase): self.assertEqual(stats['view_kwargs'], 'None') self.assertEqual(stats['view_func'], '<no view>') + # Django doesn't guarantee that process_request, process_view and + # process_response always get called in this order. + + def test_middleware_view_only(self): + DebugToolbarMiddleware().process_view(self.request, regular_view, ('title',), {}) + + def test_middleware_response_only(self): + DebugToolbarMiddleware().process_response(self.request, self.response) + @override_settings(DEBUG=True) class DebugToolbarIntegrationTestCase(TestCase): |
