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 reportlab.platypus import SimpleDocTemplate from reportlab.platypus.tables import Table, TableStyle, colors # # ToDo: Hidden Field Paid default value to false # ToDo: Insert TemplateTag for Euro Format # ToDo: Implement Datetime Field for Estimated Order Time # ToDo: Username with hidden Field. Maybe insecure # def index(request): pages['error'] = "" if request.method == 'POST': form = FoodSheetForm(request.POST) if form.is_valid: form.save() else: pages['error'] = form.errors pages['food_sheets'] = FoodSheet.objects.order_by("-id") pages['pizza_services'] = FoodService.objects.all() pages['create_food_sheet'] = FoodSheetForm() return HttpResponse(render(request, 'warpfood/main.html', pages)) def view(request, sheet_id=0): pages['error'] = "" if request.method == 'POST': form = FoodOrderForm(request.POST) if form.is_valid(): form.save() else: pages['error'] = form.errors if sheet_id != 0: sheet = FoodSheet.objects.get(id=sheet_id) pages['sheet'] = sheet pages['orders'] = FoodOrder.objects.filter(sheet=sheet) total_price = 0 for order in pages['orders']: total_price += order.price pages['order_sum'] = format_euro(total_price) if request.user.is_authenticated(): pages['create_food_order'] = FoodOrderForm(initial={'sheet': sheet_id, 'user': request.user, 'paid': False}) else: pages['create_food_order'] = FoodOrderFormExt(initial={'sheet': sheet_id, 'paid': False}) products = FoodProduct.objects.filter(food_service=sheet.food_service) pages['food_products'] = {} for product in products: if product.food_category.name not in pages['food_products']: pages['food_products'][product.food_category.name] = [] pages['food_products'][product.food_category.name].append(product) return HttpResponse(render(request, 'warpfood/view.html', pages)) @login_required(login_url='/login/', 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='/login/', redirect_field_name=None) def export_sheet(request, sheet_id=0): response = HttpResponse(content_type='application/pdf') sheet = FoodSheet.objects.get(id=sheet_id) response['Content-Disposition'] = 'attachment; filename="abbc.pdf"' cm = 2.54 elements = [] doc = SimpleDocTemplate(response, showBoundary=1) info_table = Table((sheet.pizza_service.name,sheet.pizza_service.phone), [70,70], [24] ) data = [ ('User', 'Article', 'Size', 'Price', 'Comment', 'Paid'), ] for order in FoodOrder.objects.filter(sheet=sheet): data.append(('', order.article, order.size, order.price, '', order.paid)) pizza_table = Table(data, [70,70,70,70,70,70], [24, 16,16] ) t.setStyle( TableStyle([ ('GRID', (1,1), (-2,-2), 0.25, colors.red), ('BOX', (0,0), (-1,-1), 0.25, colors.blue, None, (2,2,1)), ]) ) story = [info_table,pizza_table] doc.build(story) return response """