72 lines
2.6 KiB
Python
72 lines
2.6 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=x)
|
|
)
|
|
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 = [{}] * (7 - len(daily_recipes))
|
|
|
|
for daily_recipe in daily_recipes:
|
|
data.append(daily_recipe.serialize())
|
|
|
|
return Response(data)
|
|
|
|
|
|
class DailyRecipeAPI(rest_framework.generics.RetrieveUpdateAPIView):
|
|
|
|
queryset = recipe.models.DailyRecipe.objects.all()
|
|
serializer_class = recipe.serializers.DailyRecipeSerializer
|