X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=tickets%2Fviews.py;h=4eca48d94739342c8a0e87e5cc33931aa936152d;hb=97514165a01d41917c6eae9c0d43f6766296712e;hp=f8ec3ba874e1a87e7659420e57ede3e87c9249fc;hpb=f608a07f83a17210ea58324ea27ff03a30bd7135;p=matthijs%2Fprojects%2Fdorestad-bookings.git diff --git a/tickets/views.py b/tickets/views.py index f8ec3ba..4eca48d 100644 --- a/tickets/views.py +++ b/tickets/views.py @@ -5,20 +5,21 @@ import datetime import django from django.shortcuts import render_to_response from django.template import RequestContext +from django.contrib.auth.decorators import permission_required -from models import Booking +from models import Booking, TICKET_PRICE, SHOW_CHOICES class BookingForm(django.forms.ModelForm): class Meta: model=Booking exclude=['payment'] -def confirm_booking(booking): +def confirm_booking(booking, template): from django.core.mail import EmailMessage context = {'booking' : booking} - rendered = django.template.loader.render_to_string('tickets/booked.eml', context) + rendered = django.template.loader.render_to_string(template, context) (headers, body) = rendered.strip().split('\n\n', 1) # Turn the headers into a dict so EmailMessage can turn them into a @@ -60,10 +61,10 @@ def book(request): if f.is_valid(): booking = f.save() - confirm_booking(booking) + confirm_booking(booking, 'tickets/booked.eml') return render_to_response('tickets/booked.html', {'booking' : booking}, context_instance=RequestContext(request)) - return render_to_response('tickets/bookingform.html', {'form' : f}, context_instance=RequestContext(request)) + return render_to_response('tickets/bookingform.html', {'form' : f, 'price' : TICKET_PRICE}, context_instance=RequestContext(request)) # These two forms are used for entering payment details. They aren't # very different, so it should really be possible to merge them (but @@ -84,6 +85,7 @@ class PaymentConfirmForm(django.forms.Form): # This field is used to distinguish these two forms confirm = django.forms.BooleanField(initial=True, widget=django.forms.HiddenInput) +@permission_required('tickets.change_booking') def payments(request): c = {} bookings = None @@ -109,6 +111,7 @@ def payments(request): for b in bookings: b.payment = datetime.datetime.now() b.save() + confirm_booking(b, 'tickets/payed.eml') # Don't show the form again f = None @@ -124,3 +127,15 @@ def payments(request): c['amount'] = sum([b.price for b in bookings]) return render_to_response('tickets/payments.html', c, context_instance=RequestContext(request)) + +@permission_required('tickets.change_booking') +def bookings(request): + shows = {} + for (show, show_desc) in SHOW_CHOICES: + shows[show_desc] = { + 'bookings' : Booking.objects.filter(show=show), + 'payed' : Booking.objects.filter(show=show, payment__isnull=False), + } + + c = { 'shows' : shows } + return render_to_response('tickets/bookings.html', c, context_instance=RequestContext(request))