summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2015-02-05 13:20:33 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2015-02-05 13:21:50 +0100
commit31d3a35579d3dd05d0de7eb384e7ed22b589ed96 (patch)
tree4e7e20a35f6aa679e7b242c51fc16302296e7064
parentde62b8ef4587e8f01462629e2812f06f9ddf71e8 (diff)
Fixed #24273 -- Allowed copying RequestContext more than once.
Thanks Collin Anderson for the report.
-rw-r--r--django/template/context.py3
-rw-r--r--tests/template_tests/test_context.py7
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()