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))