Fixed #19262 -- Support cookie pickling in SimpleTemplateResponse

Refs #15863.
This commit is contained in:
Sean Breant 2012-11-09 21:07:53 +01:00 committed by Claude Paroz
parent 1b307d6c8f
commit 4d817b3887
2 changed files with 16 additions and 1 deletions

View File

@ -40,7 +40,7 @@ class SimpleTemplateResponse(HttpResponse):
rendered, and that the pickled state only includes rendered
data, not the data used to construct the response.
"""
obj_dict = self.__dict__.copy()
obj_dict = super(SimpleTemplateResponse, self).__getstate__()
if not self._is_rendered:
raise ContentNotRenderedError('The response content must be '
'rendered before it can be pickled.')

View File

@ -189,6 +189,21 @@ class SimpleTemplateResponseTest(TestCase):
unpickled_response = pickle.loads(pickled_response)
repickled_response = pickle.dumps(unpickled_response)
def test_pickling_cookie(self):
response = SimpleTemplateResponse('first/test.html', {
'value': 123,
'fn': datetime.now,
})
response.cookies['key'] = 'value'
response.render()
pickled_response = pickle.dumps(response, pickle.HIGHEST_PROTOCOL)
unpickled_response = pickle.loads(pickled_response)
self.assertEqual(unpickled_response.cookies['key'].value, 'value')
@override_settings(
TEMPLATE_CONTEXT_PROCESSORS=[test_processor_name],
TEMPLATE_DIRS=(os.path.join(os.path.dirname(__file__),'templates')),