def booking(request): if request.method == 'POST': form = DateForm(request.POST) if form.is_valid(): new_booking = Booking() new_booking.date = form.cleaned_data['date'] new_booking.seats = form.cleaned_data['seats'] new_booking.info = form.cleaned_data['info'] new_booking.phone_number = form.cleaned_data['phone_number'] opendate = OpenDate.objects.get(date = form.cleaned_data['date']) remaining = opendate.seats - int(form.cleaned_data['seats']) if remaining == 0: opendate.seats -= int(form.cleaned_data['seats']) opendate.is_booked = 1 elif remaining == 1: opendate.seats = 0 opendate.is_booked = 1 else: opendate.seats = remaining opendate.save() new_booking.save() request.session['form-submitted'] = True try: send_mail( subject = "Booking for " + new_booking.date.strftime('%Y-%m-%d'), message = "A booking for " + new_booking.seats + " seats on " + new_booking.date.strftime('%Y-%m-%d') + " was made.", from_email = "*****@*****.**", recipient_list = ['*****@*****.**'] ) except BadHeaderError: return HttpResponse('Invalid header found.') return redirect('confirmation') else: form = DateForm(initial = {'information' : 'Please enter all the information necessary as explained above.\nAny incomplete booking or without enough information will be automatically cancelled.'}) dates = OpenDate \ .objects \ .filter(date__gte=datetime.date.today()) \ .filter(is_booked = False) if dates: empty = 0 else: empty = 1 return render(request, 'booking/booking.html', dict(form=form, empty=empty))