def cancelar_reserva(request, lr_id=None): b = Bussiness() if request.method == 'POST': form = CancelarReservaForm(data=request.POST) if form.is_valid(): reserva = form.cleaned_data["turnos"] motivo = form.cleaned_data["motivo"] if b.cancelar_reserva(reserva, motivo, request.user.get_profile()): messages.success(request, u'Reserva cancelada con éxito') siguiente = form.cleaned_data['next'] if form.cleaned_data['next'] else request.path return HttpResponseRedirect(siguiente) elif lr_id and LineaDeReserva.objects.filter(id=lr_id).exists(): lr = LineaDeReserva.objects.get(id=lr_id) if lr.estado != Turno.RESERVADO or lr.turno.estado != Turno.RESERVADO: messages.warning(request, u'No puede cancelar una reserva con un estado distinto a reservado') logger.warning('Intentando cancelar la linea de reserva %s con estado %s'%(lr.id,lr.estado)) form = CancelarReservaForm(initial={'afiliado':lr.reserva.afiliado.id, 'numero':lr.reserva.afiliado.numero, 'dni':lr.reserva.afiliado.dni, 'next':request.GET.get('next') }, lr=lr) else: form = CancelarReservaForm(initial=request.GET) return render(request, "turno/cancelar_reserva.html", locals())