-
Christian Dresen authoredChristian Dresen authored
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))