Commit 9f1202c1 authored by Anton Novosyolov's avatar Anton Novosyolov Committed by Tim Graham
Browse files

Fixed #23695 -- Made condition decorator work for HEAD requests without ETag.

parent 0e16c3e3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -139,7 +139,7 @@ def condition(etag_func=None, last_modified_func=None):
                        }
                    )
                    response = HttpResponse(status=412)
                elif (not if_none_match and request.method == "GET" and
                elif (not if_none_match and request.method in ("GET", "HEAD") and
                        res_last_modified and if_modified_since and
                        res_last_modified <= if_modified_since):
                    response = HttpResponseNotModified()
+5 −0
Original line number Diff line number Diff line
@@ -124,6 +124,11 @@ class ConditionalGet(TestCase):
        response = self.client.get('/condition/last_modified2/')
        self.assertFullResponse(response, check_etag=False)

    def test_single_condition_head(self):
        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_STR
        response = self.client.head('/condition/')
        self.assertNotModified(response)

    def test_invalid_etag(self):
        self.client.defaults['HTTP_IF_NONE_MATCH'] = r'"\"'
        response = self.client.get('/condition/etag/')