From 879302c815b22a9aa6fbe7b6263daf1c1e66d4ab Mon Sep 17 00:00:00 2001 From: George Hickman Date: Tue, 2 Apr 2013 12:02:26 +0100 Subject: [PATCH] Add update header to ETagCacheLookup Need to use the IF_MATCH header to check the validity of updating a model in PUT and DELETE methods. --- rest_framework/cache_lookups.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rest_framework/cache_lookups.py b/rest_framework/cache_lookups.py index 2973d5029..eb314ca42 100644 --- a/rest_framework/cache_lookups.py +++ b/rest_framework/cache_lookups.py @@ -21,6 +21,7 @@ class ETagCacheLookup(BaseCacheLookup): """ etag_variable = 'etag' request_header = 'HTTP_IF_NONE_MATCH' + update_header = 'HTTP_IF_MATCH' @staticmethod def get_cache_key(cls, pk): @@ -36,6 +37,9 @@ class ETagCacheLookup(BaseCacheLookup): def get_request_header(self): return self.request_header + def get_update_header(self): + return self.update_header + def get_response_header(self, obj): key = self.get_cache_key(obj, 'pk') etag = self.get_etag(obj) @@ -43,7 +47,7 @@ class ETagCacheLookup(BaseCacheLookup): return {'ETag': etag} def precondition_check(self, obj, request): - if self.get_etag(obj) != request.META.get(self.get_request_header()): + if self.get_etag(obj) != request.META.get(self.get_update_header()): raise PreconditionFailed def resource_unchanged(self, request, key):