add 'metadata' mixin to handle options requests re tomchristie/django-rest-framework#3157

This commit is contained in:
Andrew Somerville 2015-07-16 00:19:51 -04:00
parent 6b08e97b6a
commit 705af66015
2 changed files with 12 additions and 0 deletions

View File

@ -89,3 +89,14 @@ class DestroyModelMixin(object):
def perform_destroy(self, instance): def perform_destroy(self, instance):
instance.delete() instance.delete()
class MetadataModelMixin(object):
def metadata(self, request, *args, **kwargs):
"""
Handler method for HTTP 'OPTIONS' request.
"""
if self.metadata_class is None:
return self.http_method_not_allowed(request, *args, **kwargs)
data = self.metadata_class().determine_metadata(request, self)
return Response(data, status=status.HTTP_200_OK)

View File

@ -146,6 +146,7 @@ class ModelViewSet(mixins.CreateModelMixin,
mixins.UpdateModelMixin, mixins.UpdateModelMixin,
mixins.DestroyModelMixin, mixins.DestroyModelMixin,
mixins.ListModelMixin, mixins.ListModelMixin,
mixins.MetadataModelMixin,
GenericViewSet): GenericViewSet):
""" """
A viewset that provides default `create()`, `retrieve()`, `update()`, A viewset that provides default `create()`, `retrieve()`, `update()`,