X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=tickets%2Fviews.py;h=f0cdfa4be9d00616584d08ce01404dff4e9529e8;hb=b0dc7832eac85f62c17de630b0dd5b3817db74ff;hp=60f00ef0ef347811e7b0c0921b7fda097acd9fcc;hpb=c6090313d4db4c414c7c14b3af1a3e1940086a65;p=matthijs%2Fprojects%2Fdorestad-bookings.git diff --git a/tickets/views.py b/tickets/views.py index 60f00ef..f0cdfa4 100644 --- a/tickets/views.py +++ b/tickets/views.py @@ -1 +1,63 @@ # Create your views here. + +import django +from django.shortcuts import render_to_response +from django.template import RequestContext + +from models import Booking + +class BookingForm(django.forms.ModelForm): + class Meta: + model=Booking + +def confirm_booking(booking): + from django.core.mail import EmailMessage + + context = {'booking' : booking} + + rendered = django.template.loader.render_to_string('tickets/booked.eml', context) + (headers, body) = rendered.strip().split('\n\n', 1) + + # Turn the headers into a dict so EmailMessage can turn them into a + # string again. Bit pointless, but it works. + # Perhaps we should just use python email stuff directly. OTOH, we + # still always need to parse for the From header. + + headers_dict = {} + # If no From header is present, let EmailMessage do the default + # thing + from_email = None + for header in headers.split('\n'): + (field, value) = header.split(':') + if (field == 'From'): + from_email = value + elif (field == 'Subject'): + subject = value + else: + # Don't put From and Subject in the dict, else they'll be + # present twice. + headers_dict[field] = value + + msg = EmailMessage( + # Only setting the From address through headers won't set the + # envelope address right. + from_email = from_email, + subject = subject, + body = body, + to = [booking.email], + headers = headers_dict + ) + msg.send() + +def book(request): + if request.method == "POST": + f = BookingForm(request.POST) + else: + f = BookingForm() + + if f.is_valid(): + booking = f.save() + confirm_booking(booking) + 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))