Forked from
infrastruktur / warpinfra
125 commits behind the upstream repository.
-
Christian Dresen authoredChristian Dresen authored
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
"""