Skip to content
Snippets Groups Projects
views.py 5.36 KiB
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotAllowed, HttpResponseNotFound
from django.shortcuts import redirect
from django.contrib.auth.decorators import login_required
from warpfood.util import *
from warpfood.models import *
from reportlab.pdfgen import canvas
from django.http import HttpResponse
from datetime import datetime
from django.conf import settings
from datetime import datetime, timedelta

#
# ToDo: Insert TemplateTag for Euro Format
# ToDo: Username with hidden Field. Maybe insecure
#

def index(request):
    form = FoodSheetForm()
    if request.user.is_authenticated():
        if request.method == 'POST':
            form = FoodSheetForm(request.POST)
            if form.is_valid():
                form.save()

    time_threshold = datetime.now() - timedelta(days=1)
    FoodSheet.objects.filter(order_time__lte=time_threshold).delete()

    page_context['pizza_services'] = FoodService.objects.all()
    page_context['create_food_sheet'] = form
    page_context['food_sheets'] = FoodSheet.objects.order_by("-id")
    return HttpResponse(render(request, 'warpfood/main.html', page_context))


def edit_sheet(request, sheet_id=0):
    if sheet_id != 0 and request.user.is_superuser():
        try:
            sheet = FoodSheet.objects.get(id=sheet_id)
        except Exception as e:
            return redirect("/")

        form = FoodSheetForm(instance=sheet)
        if request.method == 'POST':
            form = FoodSheetForm(request.POST,instance=sheet)
            if form.is_valid():
                form.save()
                return redirect("/pizza/view/%s" % sheet_id)
        page_context['edit_sheet'] = form
        return HttpResponse(render(request, 'warpfood/edit_sheet.html', page_context))

    return redirect("/")


def view(request, sheet_id=0):
    form = None
    page_context['error'] = ""
    if request.method == 'POST':
        if request.user.is_authenticated():
            form = FoodOrderForm(request.POST)
        else:
            form = FoodOrderFormExt(request.POST)
        if form.is_valid():
            order = form.save()
            if not order.product_id:
                p = FoodProduct()
                p.name = order.article
                p.food_service = order.sheet.food_service
                p.food_category = FoodCategory.objects.get(name="not_assigned")
                p.size = order.size
                p.price = order.price
                p.save()
            form = None

    if sheet_id != 0:
        sheet = FoodSheet.objects.get(id=sheet_id)
        page_context['sheet'] = sheet
        page_context['orders'] = FoodOrder.objects.filter(sheet=sheet)
        total_price = 0
        for order in page_context['orders']:
            total_price += order.price
        page_context['order_sum'] = format_euro(total_price)

        if not form:
            if request.user.is_authenticated():
                page_context['create_food_order'] = FoodOrderForm(initial={'sheet': sheet_id, 'user': request.user, 'paid': False})
            else:
                page_context['create_food_order'] = FoodOrderFormExt(initial={'sheet': sheet_id, 'paid': False})
        else:
            page_context['create_food_order'] = form

        products = FoodProduct.objects.filter(food_service=sheet.food_service)
        page_context['food_products'] = {}
        page_context['food_products']['all']=[]
        for product in products:
            if product.food_category.name not in page_context['food_products']:
                page_context['food_products'][product.food_category.name] = []
            page_context['food_products']['all'].append(product)
            page_context['food_products'][product.food_category.name].append(product)


    return HttpResponse(render(request, 'warpfood/view.html', page_context))


@login_required(login_url=settings.LOGIN_URL, redirect_field_name=None)
def toggle_closed(request, sheet_id=0):
    if sheet_id != 0:
        sheet = FoodSheet.objects.get(id=sheet_id)
        sheet.closed = not sheet.closed
        sheet.save()

    return redirect("/pizza/view/%s" % (sheet_id))


def toggle_paid(request, order_id=0):
    if order_id != 0:
        order = FoodOrder.objects.get(id=order_id)
        order.paid = not order.paid
        order.save()
        return redirect("/pizza/view/%s" % order.sheet.id)


@login_required(login_url=settings.LOGIN_URL, redirect_field_name=None)
def sheet_ordered(request, sheet_id=0):
    if sheet_id != 0:
        sheet = FoodSheet.objects.get(id=sheet_id)
        sheet.order_time = datetime.now()
        sheet.order_user = str(request.user)
        sheet.save()

    return redirect("/pizza/view/%s" % sheet_id)

def delete_order(request, order_id=0):
    if order_id != 0:
        try:
            order = FoodOrder.objects.get(id=order_id)
            sheet_id = order.sheet_id
            order.delete()
            return redirect("/pizza/view/%s" % sheet_id)
        except:
            pass

    return redirect("/")

@login_required(login_url=settings.LOGIN_URL, redirect_field_name=None)
def create_food_service(request):
    form = FoodServiceForm()
    if request.method == 'POST':
        form = FoodServiceForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect("/pizza")
    
    page_context["form"] = form
    return HttpResponse(render(request, 'warpfood/food_service.html', page_context))