[1.8.x] Fixed #24273 -- Allowed copying RequestContext more than once.

Thanks Collin Anderson for the report.

Backport of 31d3a355 from master
This commit is contained in:
Aymeric Augustin 2015-02-05 13:20:33 +01:00
parent f5749252ea
commit 5fbec369aa
2 changed files with 8 additions and 2 deletions

View File

@ -232,5 +232,6 @@ class RequestContext(Context):
new_context = super(RequestContext, self).new(values) new_context = super(RequestContext, self).new(values)
# This is for backwards-compatibility: RequestContexts created via # This is for backwards-compatibility: RequestContexts created via
# Context.new don't include values from context processors. # 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 return new_context

View File

@ -2,7 +2,8 @@
from unittest import TestCase 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 from django.template.context import RenderContext
@ -83,3 +84,7 @@ class ContextTests(TestCase):
# make contexts equals again # make contexts equals again
b.update({'a': 1}) b.update({'a': 1})
self.assertEqual(a, b) 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()