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.
This commit is contained in:
George Hickman 2013-04-02 12:02:26 +01:00
parent 70199d9755
commit 879302c815

View File

@ -21,6 +21,7 @@ class ETagCacheLookup(BaseCacheLookup):
""" """
etag_variable = 'etag' etag_variable = 'etag'
request_header = 'HTTP_IF_NONE_MATCH' request_header = 'HTTP_IF_NONE_MATCH'
update_header = 'HTTP_IF_MATCH'
@staticmethod @staticmethod
def get_cache_key(cls, pk): def get_cache_key(cls, pk):
@ -36,6 +37,9 @@ class ETagCacheLookup(BaseCacheLookup):
def get_request_header(self): def get_request_header(self):
return self.request_header return self.request_header
def get_update_header(self):
return self.update_header
def get_response_header(self, obj): def get_response_header(self, obj):
key = self.get_cache_key(obj, 'pk') key = self.get_cache_key(obj, 'pk')
etag = self.get_etag(obj) etag = self.get_etag(obj)
@ -43,7 +47,7 @@ class ETagCacheLookup(BaseCacheLookup):
return {'ETag': etag} return {'ETag': etag}
def precondition_check(self, obj, request): 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 raise PreconditionFailed
def resource_unchanged(self, request, key): def resource_unchanged(self, request, key):