text: """
  Generic views that provide commonly needed behaviour.
  """
  from rest_framework_app_api import mixins
  from rest_framework.generics import GenericAPIView
  
  
  # Concrete view classes that provide method handlers
  # by composing the mixin classes with the base view.
  
  class CreateAPIView(mixins.CreateModelMixin,
                      GenericAPIView):
      """
      Concrete view for creating a model instance.
      """
      def post(self, request, *args, **kwargs):
          return self.create(request, *args, **kwargs)
  
  
  class ListAPIView(mixins.ListModelMixin,
                    GenericAPIView):
      """
      Concrete view for listing a queryset.
      """
      def get(self, request, *args, **kwargs):
          return self.list(request, *args, **kwargs)
  
  
  class RetrieveAPIView(mixins.RetrieveModelMixin,
                        GenericAPIView):
      """
      Concrete view for retrieving a model instance.
      """
      def get(self, request, *args, **kwargs):
          return self.retrieve(request, *args, **kwargs)
  
  
  class DestroyAPIView(mixins.DestroyModelMixin,
                       GenericAPIView):
      """
      Concrete view for deleting a model instance.
      """
      def delete(self, request, *args, **kwargs):
          return self.destroy(request, *args, **kwargs)
  
  
  class UpdateAPIView(mixins.UpdateModelMixin,
                      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 ListCreateAPIView(mixins.ListModelMixin,
                          mixins.CreateModelMixin,
                          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 RetrieveUpdateAPIView(mixins.RetrieveModelMixin,
                              mixins.UpdateModelMixin,
                              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 RetrieveDestroyAPIView(mixins.RetrieveModelMixin,
                               mixins.DestroyModelMixin,
                               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 RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin,
                                     mixins.UpdateModelMixin,
                                     mixins.DestroyModelMixin,
                                     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)
  