# -*- coding: utf-8 -*- from __future__ import unicode_literals import datetime from django.shortcuts import render from apps.food.models import Menu, HappyHour, SingleFood, UserRating from django.http import HttpResponse from rest_framework import viewsets, generics from rest_framework import status from rest_framework.decorators import api_view from rest_framework.response import Response from apps.food.serializers import MenuSerializer, SingleFoodSerializer # Create your views here. def daily_food(request): today = datetime.datetime.now() feki_menu = Menu.objects.filter(date__exact=today).filter(location__contains="Feldkirchenstraße").last() austr_menu = Menu.objects.filter(date__exact=today).filter(location__contains="Austraße").last() erba_cafete = Menu.objects.filter(date__exact=today).filter(location__contains="Erba").last() markus_cafete = Menu.objects.filter(date__exact=today).filter(location__contains="markus").last() happy_hours = HappyHour.objects.filter(date__exact=today) return render(request, "food/daily_food.jinja", { 'day': today, 'happy_hours': happy_hours, 'feki_menu': feki_menu, 'austr_menu': austr_menu, 'erba_cafete': erba_cafete, 'markus_cafete': markus_cafete, }) def weekly_food(request): today = datetime.datetime.now() lastday = today + datetime.timedelta(7) weekly_menus = Menu.objects.filter(date__gte=today, date__lte=lastday) feki_menu = weekly_menus.filter(location__contains="Feldkirchenstraße") austr_menu = weekly_menus.filter(location__contains="Austraße") erba_cafete = weekly_menus.filter(location__contains="Erba") markus_cafete = weekly_menus.filter(location__contains="markus") happy_hours = HappyHour.objects.filter(date__gte=today, date__lte=lastday) return render(request, "food/weekly_food.jinja", { 'day': today, 'lastday': lastday, 'happy_hours': happy_hours, 'feki_menu': feki_menu, 'austr_menu': austr_menu, 'erba_cafete': erba_cafete, 'markus_cafete': markus_cafete, }) def food_detail(request, id): food = SingleFood.objects.get(id=id) return render(request, "food/detailed_food.jinja", {'food': food}) def all_food(request): menus = Menu.objects.all() feki_menu = menus.filter(location__contains="Feldkirchenstraße") austr_menu = menus.filter(location__contains="Austraße") erba_cafete = menus.filter(location__contains="Erba") markus_cafete = menus.filter(location__contains="markus") happy_hours = HappyHour.objects.all() return render(request, "food/daily_food.jinja", { 'happy_hours': happy_hours, 'feki_menu': feki_menu, 'austr_menu': austr_menu, 'erba_cafete': erba_cafete, 'markus_cafete': markus_cafete, }) def food(request): return render(request, "food/home.jinja", { }) def food_rating(request): if (request.user.is_authenticated): food_id = request.GET.get('food_id', None) rating = request.GET.get('rating', None) if food_id and rating: food = SingleFood.objects.get(id=food_id) user_rating, created = UserRating.objects.get_or_create(user=request.user, food=food) user_rating.rating = rating user_rating.save() food_user_ratings = UserRating.objects.all().filter(food=food) sum = 0 for food_user_rating in food_user_ratings: sum += food_user_rating.rating food.rating = sum / food_user_ratings.count() food.save() return HttpResponse(status=200) return HttpResponse(status=404) return HttpResponse(status=403) def food_image(request): food_id = request.GET.get('food_id', None) img = request.GET.get('img', None) if food_id and img: food = SingleFood.objects.get(id=food_id) food.image = img food.save() return HttpResponse(status=200) return HttpResponse(status=404) @api_view(['GET']) def serialize_daily_food(request, location="", year="", month="", day=""): request_date = datetime.datetime.strptime((year + "-" + month + "-" + day), "%Y-%m-%d") queryset = Menu.objects.filter(location__contains=location).filter(date__exact=request_date) serializer = MenuSerializer(queryset) return Response(serializer) class FoodViewSet(viewsets.ModelViewSet): """ API endpoint that allows users to be viewed or edited. """ queryset = Menu.objects.all() serializer_class = MenuSerializer class FoodList(generics.ListAPIView): serializer_class = MenuSerializer def get_queryset(self): """ This view should return a list of all the purchases for the user as determined by the username portion of the URL. """ if 'location' in self.kwargs: location = self.kwargs['location'] else: location = "" if 'year' in self.kwargs and 'month' in self.kwargs and 'day' in self.kwargs: request_date = datetime.datetime.strptime( (self.kwargs['year'] + "-" + self.kwargs['month'] + "-" + self.kwargs['day']), "%Y-%m-%d") else: request_date = datetime.datetime.now() print("LOCATION: " + location) print("DATE: " + str(request_date)) return Menu.objects.filter(location__contains=location).filter(date__exact=request_date)