Commit 4d817b38 authored by Sean Breant's avatar Sean Breant Committed by Claude Paroz
Browse files

Fixed #19262 -- Support cookie pickling in SimpleTemplateResponse

Refs #15863.
parent 1b307d6c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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.')
+15 −0
Original line number Diff line number Diff line
@@ -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')),