Source code for lback.api.generics

from typing import List,Any

from lback.api.view import APIView
from lback.api.mixins import ListModelMixin, CreateModelMixin, RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
from lback.core.response import Response

[docs] class GenericAPIView(APIView): """ Base class for all generic views. Provides context for various generic behaviors. """
[docs] class ListAPIView(ListModelMixin, GenericAPIView): """ View for listing a queryset. """
[docs] def get(self, request: Any, *args, **kwargs) -> List[Any]: return self.list(request, *args, **kwargs)
[docs] class CreateAPIView(CreateModelMixin, GenericAPIView): """ View for creating a model instance. """
[docs] def post(self, request: Any, *args, **kwargs) -> Any: return self.create(request, *args, **kwargs)
[docs] class RetrieveAPIView(RetrieveModelMixin, GenericAPIView): """ View for retrieving a model instance. """
[docs] def get(self, request: Any, *args, **kwargs) -> Any: return self.retrieve(request, *args, **kwargs)
[docs] class UpdateAPIView(UpdateModelMixin, GenericAPIView): """ View for updating a model instance. """
[docs] def put(self, request: Any, *args, **kwargs) -> Any: return self.update(request, *args, **kwargs)
[docs] def patch(self, request: Any, *args, **kwargs) -> Any: return self.update(request, *args, **kwargs)
[docs] class DestroyAPIView(DestroyModelMixin, GenericAPIView): """ View for deleting a model instance. """
[docs] def delete(self, request: Any, *args, **kwargs) -> Response: return self.destroy(request, *args, **kwargs)
[docs] class ListCreateAPIView(ListModelMixin, CreateModelMixin, GenericAPIView): """ View for listing and creating model instances. """
[docs] def get(self, request: Any, *args, **kwargs) -> List[Any]: return self.list(request, *args, **kwargs)
[docs] def post(self, request: Any, *args, **kwargs) -> Any: return self.create(request, *args, **kwargs)
[docs] class RetrieveUpdateDestroyAPIView(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, GenericAPIView): """ View for retrieving, updating, and deleting a model instance. """
[docs] def get(self, request: Any, *args, **kwargs) -> Any: return self.retrieve(request, *args, **kwargs)
[docs] def put(self, request: Any, *args, **kwargs) -> Any: return self.update(request, *args, **kwargs)
[docs] def patch(self, request: Any, *args, **kwargs) -> Any: return self.update(request, *args, **kwargs)
[docs] def delete(self, request: Any, *args, **kwargs) -> Response: return self.destroy(request, *args, **kwargs)