From da95140ec391cd162dedb587bdff5d6e596c1015 Mon Sep 17 00:00:00 2001 From: Daniel Harding Date: Thu, 20 Mar 2014 16:25:21 -0500 Subject: Don't run context processors for redirect template. --- debug_toolbar/panels/redirects.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug_toolbar/panels/redirects.py b/debug_toolbar/panels/redirects.py index 757c65c..4e5858b 100644 --- a/debug_toolbar/panels/redirects.py +++ b/debug_toolbar/panels/redirects.py @@ -1,7 +1,7 @@ from __future__ import absolute_import, unicode_literals from django.core.handlers.wsgi import STATUS_CODE_TEXT -from django.shortcuts import render +from django.shortcuts import render_to_response from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel @@ -28,6 +28,6 @@ class RedirectsPanel(Panel): status_line = '%s %s' % (response.status_code, reason_phrase) cookies = response.cookies context = {'redirect_to': redirect_to, 'status_line': status_line} - response = render(request, 'debug_toolbar/redirect.html', context) + response = render_to_response('debug_toolbar/redirect.html', context) response.cookies = cookies return response -- cgit v1.2.3 From 15b1304e74c67d78f400cf63e9ffe06d3f4318dd Mon Sep 17 00:00:00 2001 From: Juan Catalano Date: Tue, 15 Apr 2014 14:33:38 +0000 Subject: Added unit test for broken context processors due to use of `render` This adds the regression test for the case when a custom context processor breaks cause of the use of `render` in the redirects panel. --- tests/context_processors.py | 3 +++ tests/middlewares.py | 5 +++++ tests/panels/test_redirects.py | 15 +++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 tests/context_processors.py create mode 100644 tests/middlewares.py diff --git a/tests/context_processors.py b/tests/context_processors.py new file mode 100644 index 0000000..3514639 --- /dev/null +++ b/tests/context_processors.py @@ -0,0 +1,3 @@ + +def custom(req): + msg = req.myattr diff --git a/tests/middlewares.py b/tests/middlewares.py new file mode 100644 index 0000000..44a3ef1 --- /dev/null +++ b/tests/middlewares.py @@ -0,0 +1,5 @@ + + +class CustomMiddleware(object): + def process_request(request): + request.myattr = 'test attribute' diff --git a/tests/panels/test_redirects.py b/tests/panels/test_redirects.py index 7e94e77..8e63ff0 100644 --- a/tests/panels/test_redirects.py +++ b/tests/panels/test_redirects.py @@ -1,6 +1,7 @@ from __future__ import absolute_import, unicode_literals import django +from django.conf import settings from django.http import HttpResponse from django.test.utils import override_settings from django.utils import unittest @@ -32,6 +33,20 @@ class RedirectsPanelTestCase(BaseTestCase): self.assertContains(response, '302 FOUND') self.assertContains(response, 'http://somewhere/else/') + def test_redirect_breaks_procesor(self): + middlewares = settings.MIDDLEWARE_CLASSES + ['tests.middlewares.CustomMiddleware'] + context_processors = settings.TEMPLATE_CONTEXT_PROCESSORS + \ + ('tests.context_processors.custom',) + + with self.settings(MIDDLEWARE_CLASSES=middlewares, + TEMPLATE_CONTEXT_PROCESSORS=context_processors): + redirect = HttpResponse(status=302) + redirect['Location'] = 'http://somewhere/else/' + response = self.panel.process_response(self.request, redirect) + self.assertFalse(response is redirect) + self.assertContains(response, '302 FOUND') + self.assertContains(response, 'http://somewhere/else/') + def test_unknown_status_code(self): redirect = HttpResponse(status=369) redirect['Location'] = 'http://somewhere/else/' -- cgit v1.2.3