tickets: Add summary of bookings.
[matthijs/projects/dorestad-bookings.git] / tickets / views.py
index a06086d593646c7ad7ccd7bf4cfbd4150abd49c3..4eca48d94739342c8a0e87e5cc33931aa936152d 100644 (file)
@@ -5,8 +5,9 @@ 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:
@@ -63,7 +64,7 @@ def book(request):
         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))