29 lines
823 B
Python
29 lines
823 B
Python
"""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
|