From 31d3a35579d3dd05d0de7eb384e7ed22b589ed96 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Thu, 5 Feb 2015 13:20:33 +0100 Subject: [PATCH] Fixed #24273 -- Allowed copying RequestContext more than once. Thanks Collin Anderson for the report. --- django/template/context.py | 3 ++- tests/template_tests/test_context.py | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/django/template/context.py b/django/template/context.py index d72c70c37a..9543931cec 100644 --- a/django/template/context.py +++ b/django/template/context.py @@ -232,5 +232,6 @@ class RequestContext(Context): new_context = super(RequestContext, self).new(values) # This is for backwards-compatibility: RequestContexts created via # Context.new don't include values from context processors. - del new_context._processors_index + if hasattr(new_context, '_processors_index'): + del new_context._processors_index return new_context diff --git a/tests/template_tests/test_context.py b/tests/template_tests/test_context.py index c5ad3e1d50..24d589fb25 100644 --- a/tests/template_tests/test_context.py +++ b/tests/template_tests/test_context.py @@ -2,7 +2,8 @@ from unittest import TestCase -from django.template import Context, Variable, VariableDoesNotExist +from django.http import HttpRequest +from django.template import Context, RequestContext, Variable, VariableDoesNotExist from django.template.context import RenderContext @@ -83,3 +84,7 @@ class ContextTests(TestCase): # make contexts equals again b.update({'a': 1}) self.assertEqual(a, b) + + def test_copy_request_context_twice(self): + # Regression test for #24273 - this doesn't raise an exception + RequestContext(HttpRequest()).new().new()