260 lines
8.0 KiB
Python
260 lines
8.0 KiB
Python
"""
|
|
Generic views that provide commonly needed behaviour.
|
|
"""
|
|
from rest_framework.generics import GenericAPIView
|
|
from starfields_drf_generics import mixins
|
|
|
|
|
|
# Concrete view classes that provide method handlers
|
|
# by composing the mixin classes with the base view.
|
|
|
|
# Single item CRUD
|
|
|
|
class CachedCreateAPIView(mixins.CachedCreateModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for creating a model instance.
|
|
"""
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
return self.create(request, *args, **kwargs)
|
|
|
|
|
|
class CachedRetrieveAPIView(mixins.CachedRetrieveModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for retrieving a model instance.
|
|
"""
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return self.retrieve(request, *args, **kwargs)
|
|
|
|
|
|
class CachedUpdateAPIView(mixins.CachedUpdateModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for updating a model instance.
|
|
"""
|
|
|
|
def put(self, request, *args, **kwargs):
|
|
return self.update(request, *args, **kwargs)
|
|
|
|
def patch(self, request, *args, **kwargs):
|
|
return self.partial_update(request, *args, **kwargs)
|
|
|
|
|
|
class CachedDestroyAPIView(mixins.CachedDestroyModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for deleting a model instance.
|
|
"""
|
|
|
|
def delete(self, request, *args, **kwargs):
|
|
return self.destroy(request, *args, **kwargs)
|
|
|
|
|
|
class CachedRetrieveUpdateAPIView(mixins.CachedRetrieveModelMixin,
|
|
mixins.CachedUpdateModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for retrieving, updating a model instance.
|
|
"""
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return self.retrieve(request, *args, **kwargs)
|
|
|
|
def put(self, request, *args, **kwargs):
|
|
return self.update(request, *args, **kwargs)
|
|
|
|
def patch(self, request, *args, **kwargs):
|
|
return self.partial_update(request, *args, **kwargs)
|
|
|
|
|
|
class CachedRetrieveDestroyAPIView(mixins.CachedRetrieveModelMixin,
|
|
mixins.CachedDestroyModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for retrieving or deleting a model instance.
|
|
"""
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return self.retrieve(request, *args, **kwargs)
|
|
|
|
def delete(self, request, *args, **kwargs):
|
|
return self.destroy(request, *args, **kwargs)
|
|
|
|
|
|
class CachedRetrieveUpdateDestroyAPIView(mixins.CachedRetrieveModelMixin,
|
|
mixins.CachedUpdateModelMixin,
|
|
mixins.CachedDestroyModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for retrieving, updating or deleting a model instance.
|
|
"""
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return self.retrieve(request, *args, **kwargs)
|
|
|
|
def put(self, request, *args, **kwargs):
|
|
return self.update(request, *args, **kwargs)
|
|
|
|
def patch(self, request, *args, **kwargs):
|
|
return self.partial_update(request, *args, **kwargs)
|
|
|
|
def delete(self, request, *args, **kwargs):
|
|
return self.destroy(request, *args, **kwargs)
|
|
|
|
|
|
class CachedCreateRetrieveUpdateDestroyAPIView(mixins.CachedCreateModelMixin,
|
|
mixins.CachedRetrieveModelMixin,
|
|
mixins.CachedUpdateModelMixin,
|
|
mixins.CachedDestroyModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for creating, retrieving, updating or deleting a model
|
|
instance.
|
|
"""
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return self.retrieve(request, *args, **kwargs)
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
return self.create(request, *args, **kwargs)
|
|
|
|
def put(self, request, *args, **kwargs):
|
|
return self.update(request, *args, **kwargs)
|
|
|
|
def patch(self, request, *args, **kwargs):
|
|
return self.partial_update(request, *args, **kwargs)
|
|
|
|
def delete(self, request, *args, **kwargs):
|
|
return self.destroy(request, *args, **kwargs)
|
|
|
|
|
|
# List based CRUD
|
|
|
|
class CachedListRetrieveAPIView(mixins.CachedListRetrieveModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for listing a queryset.
|
|
"""
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return self.list(request, *args, **kwargs)
|
|
|
|
|
|
class CachedListCreateAPIView(mixins.CachedListCreateModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for creating multiple instances.
|
|
"""
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
return self.list_create(request, *args, **kwargs)
|
|
|
|
|
|
class CachedListUpdateAPIView(mixins.CachedListUpdateModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for updating multiple instances.
|
|
"""
|
|
|
|
def put(self, request, *args, **kwargs):
|
|
return self.list_update(request, *args, **kwargs)
|
|
|
|
def patch(self, request, *args, **kwargs):
|
|
return self.list_partial_update(request, *args, **kwargs)
|
|
|
|
|
|
class CachedListDestroyAPIView(mixins.CachedListDestroyModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for deleting multiple instances.
|
|
"""
|
|
|
|
def delete(self, request, *args, **kwargs):
|
|
return self.list_destroy(request, *args, **kwargs)
|
|
|
|
|
|
class CachedListRetrieveCreateAPIView(mixins.CachedListRetrieveModelMixin,
|
|
mixins.CachedListCreateModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for listing a queryset or creating a model instance.
|
|
"""
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return self.list(request, *args, **kwargs)
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
return self.create(request, *args, **kwargs)
|
|
|
|
|
|
class CachedListCreateRetrieveDestroyAPIView(
|
|
mixins.CachedListCreateModelMixin,
|
|
mixins.CachedListRetrieveModelMixin,
|
|
mixins.CachedListDestroyModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for creating, retrieving or deleting a model instance.
|
|
"""
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return self.list(request, *args, **kwargs)
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
return self.list_create(request, *args, **kwargs)
|
|
|
|
def delete(self, request, *args, **kwargs):
|
|
return self.list_destroy(request, *args, **kwargs)
|
|
|
|
|
|
class CachedListCreateRetrieveUpdateAPIView(
|
|
mixins.CachedListCreateModelMixin,
|
|
mixins.CachedListRetrieveModelMixin,
|
|
mixins.CachedListUpdateModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for creating, retrieving, updating or deleting a model
|
|
instance.
|
|
"""
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return self.list(request, *args, **kwargs)
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
return self.list_create(request, *args, **kwargs)
|
|
|
|
def put(self, request, *args, **kwargs):
|
|
return self.list_update(request, *args, **kwargs)
|
|
|
|
def patch(self, request, *args, **kwargs):
|
|
return self.list_partial_update(request, *args, **kwargs)
|
|
|
|
|
|
class CachedListCreateRetrieveUpdateDestroyAPIView(
|
|
mixins.CachedListCreateModelMixin,
|
|
mixins.CachedListRetrieveModelMixin,
|
|
mixins.CachedListUpdateModelMixin,
|
|
mixins.CachedListDestroyModelMixin,
|
|
GenericAPIView):
|
|
"""
|
|
Concrete view for creating, retrieving, updating or deleting a model
|
|
instance.
|
|
"""
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return self.list(request, *args, **kwargs)
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
return self.list_create(request, *args, **kwargs)
|
|
|
|
def put(self, request, *args, **kwargs):
|
|
return self.list_update(request, *args, **kwargs)
|
|
|
|
def patch(self, request, *args, **kwargs):
|
|
return self.list_partial_update(request, *args, **kwargs)
|
|
|
|
def delete(self, request, *args, **kwargs):
|
|
return self.list_destroy(request, *args, **kwargs)
|