def VerReservas(request, id): try: chofer = Chofer.objects.get(user=User(id=request.user.id)) except: return render( request, 'error.html', { "mensaje": "No has ingresado al sistema como chofer", "redirection": "/" }) try: viaje = Viaje.objects.get(id=id) except: return render(request, 'error.html', { "mensaje": "El viaje no existe", "redirection": "/" }) elset = set([]) for tramo in viaje.tramos.all(): for reserva in tramo.reservas_del_tramo.all(): elset.add(reserva) if viaje.conductor != chofer: return render( request, 'error.html', { "mensaje": "No estás autorizado para mirar este viaje", "redirection": "/" }) return render(request, 'reservasviaje.html', {"reservas": list(elset)})
def VerReservas(request): p = Pasajero.objects.get(user=User(id=request.user.id)) lista = [] for reserva in Reservacion.objects.filter(pasajero=p): first = reserva.tramos.first() second = reserva.tramos.last() lista.append((first, second, reserva.estado_pago, reserva.estado_reserva, reserva)) return render(request, 'reservas.html', {"lista": lista})
def ConfirmarCancelacion(request, id): try: viaje = Viaje.objects.get(id=id) except Viaje.DoesNotExist: return render(request, 'error.html', { "mensaje": "El viaje no existe", "redirection": "/listarviajes/" }) try: chofer = Chofer.objects.get(user=User(id=request.user.id)) except Chofer.DoesNotExist: return render( request, 'error.html', { "mensaje": "No has ingresado al sistema como conductor", "redirection": "/" }) chofer_viaje = Chofer.objects.get(user=User(id=viaje.conductor.id)) if chofer != chofer_viaje: return render( request, 'error.html', { "mensaje": "No tienes permiso para realizar esta acción", "redirection": "/listarviajes/" }) return render(request, 'confirmacion.html', {"viaje_cancelado": viaje})
def RechazarReserva(request, id): print("rechazo", id) try: chofer = Chofer.objects.get(user=User(id=request.user.id)) reserva = Reservacion.objects.get(id=id) except Chofer.DoesNotExist: return render(request, 'error.html', { "mensaje": "No estás loggeado como conductor", "redirection": "/" }) except Reservacion.DoesNotExist: return render(request, 'error.html', { "mensaje": "La reserva no existe", "redirection": "/" }) conductor_reserva = reserva.tramos.first().viaje.conductor if conductor_reserva != chofer: return render( request, 'error.html', { "mensaje": "No tienes permiso para realizar esta acción", "redirection": "/listarviajes/" }) if reserva.estado_reserva == Reservacion.ACEPTADO: for tramo in reserva.tramos.all(): tramo.asientos_libres = tramo.asientos_libres + 1 tramo.save() elif reserva.estado_reserva == Reservacion.RECHAZADO: return render( request, 'error.html', { "mensaje": "La reserva ya fue rechazada anteriormente", "redirection": "/reservasviaje/" + str(reserva.tramos.first().viaje.id) }) reserva.estado_reserva = Reservacion.RECHAZADO reserva.save() viaje = Viaje.objects.get(id=reserva.tramos.first().viaje.id) elset = set([]) for tramo in viaje.tramos.all(): for reserva in tramo.reservas_del_tramo.all(): elset.add(reserva) print(viaje.id) return render(request, 'reservasviaje.html', { "mensaje": "Reserva rechazada", "reservas": list(elset) })
def ConfirmarRechazo(request, id): try: chofer = Chofer.objects.get(user=User(id=request.user.id)) reserva = Reservacion.objects.get(id=id) except Chofer.DoesNotExist: return render(request, 'error.html', { "mensaje": "No estás loggeado como conductor", "redirection": "/" }) except Reservacion.DoesNotExist: return render(request, 'error.html', { "mensaje": "La reserva no existe", "redirection": "/" }) conductor_reserva = reserva.tramos.first().viaje.conductor if conductor_reserva != chofer: return render( request, 'error.html', { "mensaje": "No tienes permiso para realizar esta acción", "redirection": "/listarviajes/" }) return render(request, 'confirmacion.html', {"reserva_rechazada": reserva})
def ConfirmarAceptacion(request, id): try: chofer = Chofer.objects.get(user=User(id=request.user.id)) reserva = Reservacion.objects.get(id=id) except Chofer.DoesNotExist: return render( request, 'error.html', { "mensaje": "No has ingresado al sistema como chofer", "redirection": "/" }) except Reservacion.DoesNotExist: return render(request, 'error.html', { "mensaje": "Acción no autorizada", "redirection": "/listarviajes" }) conductor_reserva = reserva.tramos.first().viaje.conductor if conductor_reserva != chofer: return render(request, 'error.html', { "mensaje": "Acción no autorizada", "redirection": "/listarviajes" }) return render(request, 'confirmacion.html', {"reserva_aceptada": reserva})
def CancelarViaje(request, id): print("cancelo", id) try: chofer = Chofer.objects.get(user=User(id=request.user.id)) viaje = Viaje.objects.get(id=id) viajes = Viaje.objects.filter(conductor=chofer) if viaje.conductor != chofer: return render( request, 'listarviajes.html', { "viajes": viajes, "mensaje": "No estás autorizado a realizar esa acción" }) viaje.limpiar_reservas() viaje.delete() return render(request, 'listarviajes.html', { "viajes": viajes, "mensaje": "Viaje eliminado exitosamente" }) except Viaje.DoesNotExist: viajes = Viaje.objects.filter(conductor=chofer) return render(request, 'listarviajes.html', { "viajes": viajes, "mensaje": "El viaje no existe" })
def AceptarReserva(request, id): print("acepto", id) try: chofer = Chofer.objects.get(user=User(id=request.user.id)) reserva = Reservacion.objects.get(id=id) except Chofer.DoesNotExist: return render(request, 'error.html', { "mensaje": "No estás loggeado como conductor", "redirection": "/" }) except Reservacion.DoesNotExist: return render(request, 'error.html', { "mensaje": "La reserva no existe", "redirection": "/" }) conductor_reserva = reserva.tramos.first().viaje.conductor if conductor_reserva != chofer: return render( request, 'error.html', { "mensaje": "No tienes permiso para realizar esta acción", "redirection": "/listarviajes/" }) tramos = reserva.tramos capacidad = True mensaje = "Reserva aceptada" if reserva.estado_reserva != Reservacion.ACEPTADO: for tramo in tramos.all(): if tramo.asientos_libres <= 0: capacidad = False if capacidad: for tramo in tramos.all(): tramo.asientos_libres = tramo.asientos_libres - 1 tramo.save() reserva.estado_reserva = Reservacion.ACEPTADO reserva.save() else: mensaje = "No hay suficientes cupos disponibles" return render( request, 'error.html', { "mensaje": "No hay suficientes cupos disponibles", "redirection": "/reservasviaje/" + str(reserva.tramos.first().viaje.id) }) else: return render( request, 'error.html', { "mensaje": "La reserva ya fue aceptada anterioemente", "redirection": "/reservasviaje/" + str(reserva.tramos.first().viaje.id) }) viaje = Viaje.objects.get(id=reserva.tramos.first().viaje.id) elset = set([]) for tramo in viaje.tramos.all(): for reserva in tramo.reservas_del_tramo.all(): elset.add(reserva) return render(request, 'reservasviaje.html', { "mensaje": mensaje, "reservas": list(elset) })