"""Recipe app common views.""" from rest_framework import generics, permissions from recipe import models from recipe.serializers import common as serializers class RecipeViewMixin(generics.GenericAPIView): """Recipe view mixin.""" pagination_class = None permission_classes = (permissions.AllowAny,) def get_queryset(self): user = self.request.user qs = models.Recipe.objects.published().annotate_in_favorites(user) return qs class RecipeListView(RecipeViewMixin, generics.ListAPIView): """Resource for obtaining a list of recipes.""" serializer_class = serializers.RecipeListSerializer class RecipeDetailView(RecipeViewMixin, generics.RetrieveAPIView): """Resource for detailed recipe information.""" serializer_class = serializers.RecipeDetailSerializer