Skip to content
Snippets Groups Projects
Forked from infrastruktur / warpinfra
125 commits behind the upstream repository.
views.py 3.95 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 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
"""