dsite/recipe/views.py
Ching 1dd97b9e54 feat(dailyrecipe and week recipe): [A] 增加dailyrecipe 每日菜单,增加 weekrecipe 接口
[A] 增加dailyrecipe 每日菜单,增加 weekrecipe 接口

Signed-off-by: Ching <loooching@gmail.com>
2021-10-02 20:28:35 +08:00

63 lines
2.4 KiB
Python

import datetime
from django.shortcuts import render
from django.utils.timezone import now, localtime
from rest_framework import authentication, permissions, status, viewsets
import rest_framework.generics
from rest_framework.response import Response
from rest_framework.views import APIView
import recipe.models
import recipe.serializers
class RecipeAPI(rest_framework.generics.RetrieveUpdateAPIView):
# authentication_classes = (authentication.TokenAuthentication,
# authentication.SessionAuthentication,
# authentication.BasicAuthentication)
# permission_classes = (permissions.IsAuthenticated,)
queryset = recipe.models.Recipe.objects.all()
serializer_class = recipe.serializers.RecipeSerializer
class RecipeListAPI(rest_framework.generics.ListAPIView,
rest_framework.generics.CreateAPIView):
# authentication_classes = (authentication.TokenAuthentication,
# authentication.SessionAuthentication,
# authentication.BasicAuthentication)
# permission_classes = (permissions.IsAuthenticated,)
queryset = recipe.models.Recipe.objects.all()
serializer_class = recipe.serializers.RecipeSerializer
class WeekRecipeListAPI(rest_framework.generics.ListAPIView,
rest_framework.generics.CreateAPIView):
queryset = recipe.models.DailyRecipe.objects.all()
serializer_class = recipe.serializers.WeekRecipeSerializer
def post(self, request, *args, **kwargs):
# Monday == 0 ... Sunday == 6
today = localtime()
recipes = []
for x in range(0, 7-today.weekday()):
daily_recipe, __ = recipe.models.DailyRecipe.objects.get_or_create(
date=today + datetime.timedelta(days=1)
)
daily_recipe.generate_recipe()
recipes.append(daily_recipe.recipes.values_list('id', flat=True))
return Response({}, status=status.HTTP_201_CREATED, headers={})
def get(self, request, *args, **kwargs):
today = localtime()
week_start = (today - datetime.timedelta(days=today.weekday())).date()
week_end = week_start + datetime.timedelta(days=6)
daily_recipes = recipe.models.DailyRecipe.objects.filter(
date__gte=week_start,
date__lte=week_end,
).order_by('date')
data = []
for daily_recipe in daily_recipes:
data.append(daily_recipe.serialize())
return Response(data)