Exemplo n.º 1
0
def new_reservation(request, beer_id):
    beer = get_object_or_404(Beer, pk=beer_id)

    if not request.user.has_perm('brewhouse.add_reservation'):
        messages.warning(request, "You're not allowed to reserve beer.")
        return redirect('beer-show', beer_id)

    if not beer.is_reservable():
        messages.warning(request, "That beer is not reservable!")
        return redirect('beer-show', beer_id)

    if Reservation.objects.filter(user=request.user, beer=beer):
        # User has already reserved this beer!
        messages.error(request, "You've already reserved a growler of this beer!")
        return redirect('beer-show', beer_id)

    if request.method == "POST" and request.POST.get('doit'):
        r = Reservation()
        r.beer = beer
        r.user = request.user
        r.save()

        messages.success(request, "Your beer reservation request has been made and is pending approval.")
        return redirect('beer-show', beer_id)

    return render(request, 'brewhouse/new_reservation.html', locals())