def testLlenarMotosNoBloqueaLosDemas(self): e = self.crearEstacionamientoNuevo(1,1,1) ahora=datetime.now().replace(second=0,microsecond=0) fecha_inicio=(ahora+timedelta(1)).replace(hour=15,minute=15) fecha_fin=fecha_inicio.replace(hour=16,minute=15) self.hacerReservaNueva(e,'Moto',fecha_inicio,fecha_fin) self.assertTrue(marzullo(e.id, fecha_inicio, fecha_fin,'Liviano') and marzullo(e.id, fecha_inicio, fecha_fin,'Pesado'))
def testFiveSpotsSixReservation(self): #borde, ocupacion = capacidad antes de intentar hacer reservas nuevas e = self.crear_estacionamiento(5) Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 9), finalReserva=datetime(2015, 1, 20, 17), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 17), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 12), finalReserva=datetime(2015, 1, 20, 17), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 12), finalReserva=datetime(2015, 1, 20, 17), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 17), estado = "Válido", tipo_vehiculo = 'Liviano').save() self.assertFalse(marzullo(e.id, datetime(2015,1,20,9), datetime(2015,1,20,18),'Liviano')) self.assertFalse(marzullo(e.id, datetime(2015,1,20,9), datetime(2015,1,20,15),'Liviano'))
def testFiveSpotsSixReservationNoOverlapping(self): #Dos esquinas, 1. count = capacidad, inicio=apertura # 2. count = capacidad, fin=cierre e = self.crear_estacionamiento(5) Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 9), finalReserva=datetime(2015, 1, 20, 17), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 17), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 12), finalReserva=datetime(2015, 1, 20, 17), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 12), finalReserva=datetime(2015, 1, 20, 17), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 17), estado = "Válido", tipo_vehiculo = 'Liviano').save() self.assertTrue(marzullo(e.id, datetime(2015,1,20,6), datetime(2015,1,20,10), 'Liviano')) #La reserva de arriba NO se concreta, puesto que s�lo se verific� si era v�lida, sin agregar su objeto self.assertFalse(marzullo(e.id, datetime(2015,1,20,9), datetime(2015,1,20,18), 'Liviano'))
def testReservarParaPesado(self): e = self.crearEstacionamientoNuevo(0,1,0) ahora=datetime.now().replace(second=0,microsecond=0) fecha_inicio=(ahora+timedelta(1)).replace(hour=15,minute=15) fecha_fin=fecha_inicio.replace(hour=16,minute=15) self.assertTrue(marzullo(e.id, fecha_inicio, fecha_fin,'Pesado'))
def testNoSePuedeReservarSinPuesto(self): e = self.crearEstacionamientoNuevo(0,1,0) ahora=datetime.now().replace(second=0,microsecond=0) fecha_inicio=(ahora+timedelta(1)).replace(hour=15,minute=15) fecha_fin=fecha_inicio.replace(hour=16,minute=15) self.assertFalse(marzullo(e.id, fecha_inicio, fecha_fin,'Moto'))
def testFiveSpotsFiveReservation(self): #borde, ocupaci�n = capacidad e = self.crear_estacionamiento(5) Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 9), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 12), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() self.assertTrue(marzullo(e.id, datetime(2015,1,20,10), datetime(2015,1,20,18),'Liviano'))
def testManyReservationsOneOverlap(self): #malicia, count = (capacidad+1) en la hora (9am - 10am), algunas reservas tienen inicio = apertura e = self.crear_estacionamiento(10) Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 7), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 8), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 9), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 7), finalReserva=datetime(2015, 1, 20, 11), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 8), finalReserva=datetime(2015, 1, 20, 12), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 9), finalReserva=datetime(2015, 1, 20, 13), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 9), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() self.assertFalse(marzullo(e.id, datetime(2015,1,20,9), datetime(2015,1,20,10), 'Liviano'))
def testManyReservationsMaxOverlapping(self): #esquina, count = capacidad en una hora (10am - 11am), algunas reservas tienen inicio = apertura e = self.crear_estacionamiento(10) Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 7), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 8), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 9), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 7), finalReserva=datetime(2015, 1, 20, 11), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 8), finalReserva=datetime(2015, 1, 20, 12), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 9), finalReserva=datetime(2015, 1, 20, 13), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 9), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 10), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() self.assertTrue(marzullo(e.id, datetime(2015,1,20,10), datetime(2015,1,20,15),'Liviano'))
def testSmallestReservation(self): #borde, fin - inicio = 1hora e = self.crear_estacionamiento(1) self.assertTrue(marzullo(e.id, datetime(2015,1,20,8), datetime(2015,1,20,9),'Liviano'))
def testOneReservationLate(self): #borde, fin = cierre e = self.crear_estacionamiento(2) self.assertTrue(marzullo(e.id, datetime(2015,1,20,15), datetime(2015,1,20,18),'Liviano'))
def testTenSpotsOneReservation(self): #malicia e = self.crear_estacionamiento(10) self.assertTrue(marzullo(e.id, datetime(2015,1,20,9), datetime(2015,1,20,15),'Liviano'))
def testNoSpotParking(self): #borde, capacidad = 0 e = self.crear_estacionamiento(0) self.assertFalse(marzullo(e.id, datetime(2015,1,20,9), datetime(2015,1,20,15),'Liviano'))
def testFullPlusOne(self): #malicia, fin - inicio = 1hora, doce veces + una reserva FullDay e = self.crear_estacionamiento(1) for i in range(12): Reserva(estacionamiento = e, inicioReserva = datetime(2015, 1, 20, 6+i), finalReserva = datetime(2015, 1, 20, 7+i), estado = "Válido", tipo_vehiculo = 'Liviano').save() self.assertFalse(marzullo(e.id, datetime(2015, 1, 20, 6), datetime(2015, 1, 20, 18),'Liviano'))
def testAllSmallestReservations(self): #malicia, fin - inicio = 1hora, doce veces e = self.crear_estacionamiento(1) for i in range(12): Reserva(estacionamiento = e, inicioReserva = datetime(2015, 1, 20, 6+i), finalReserva = datetime(2015, 1, 20, 7+i), estado = "Válido", tipo_vehiculo ='Liviano').save() for i in range(12): self.assertFalse(marzullo(e.id, datetime(2015,1,20,6+i), datetime(2015,1,20,7+i),'Liviano'))
def testOneReservationMax(self): #borde, ocupaci�n = capacidad e = self.crear_estacionamiento(1) self.assertTrue(marzullo(e.id, datetime(2015,1,20,9), datetime(2015,1,20,15),'Liviano'))
def testOneReservationEarly(self): #borde, inicio = aprtura e = self.crear_estacionamiento(2) self.assertTrue(marzullo(e.id, datetime(2015,1,20,6), datetime(2015,1,20,10),'Liviano'))
def testAddTwoReservation2(self): #esquina, dos reservaciones con incio = apertura estac. e = self.crear_estacionamiento(10) Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 6), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() self.assertTrue(marzullo(e.id, datetime(2015,1,20,6), datetime(2015,1,20,14),'Liviano'))
def testOneReservationFullDay(self): #esquina, inicio = aprtura y fin = cierre e = self.crear_estacionamiento(1) self.assertTrue(marzullo(e.id, datetime(2015,1,20,6), datetime(2015,1,20,18),'Liviano'))
def testAddThreeReservations(self): #malicia, reserva cubre todo el horario, y ocupaci�n = capacidad e = self.crear_estacionamiento(3) Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 9), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() Reserva(estacionamiento = e, inicioReserva=datetime(2015, 1, 20, 10), finalReserva=datetime(2015, 1, 20, 15), estado = "Válido", tipo_vehiculo = 'Liviano').save() self.assertTrue(marzullo(e.id, datetime(2015,1,20,6), datetime(2015,1,20,18),'Liviano'))
def Mover_Reserva_buscar_nueva(request): form = MoverReservaNuevaForm() reserva_selec = Reserva.objects.get(id=request.session['reservaid']) transreser = TransReser.objects.get(reserva=reserva_selec) _id = reserva_selec.estacionamiento.id if request.method == 'POST': form = MoverReservaNuevaForm(request.POST) if form.is_valid(): NuevoInicio = form.cleaned_data['nuevoInicio'] try: reserva_selec = Reserva.objects.get( id=request.session['reservaid'], estado='Válido') except: return render( request, 'reserva_mover_buscar_nueva.html', { "color": "red", 'mensaje': 'ID no existe o CI no corresponde al registrado en la reserva.', "form": form }) NuevoFinal = NuevoInicio + (reserva_selec.finalReserva - reserva_selec.inicioReserva) m_validado = validarHorarioReserva( NuevoInicio, NuevoFinal, reserva_selec.estacionamiento.apertura, reserva_selec.estacionamiento.cierre, reserva_selec.estacionamiento.horizonte) # Si no es valido devolvemos el request if not m_validado[0]: return render( request, 'reserva_mover_buscar_nueva.html', { 'color': 'red', 'mensaje': m_validado[1], "form": form, 'reserva': reserva_selec, 'transreser': transreser, 'billetera': BilleteraLogin() }) if marzullo(_id, NuevoInicio, NuevoFinal, reserva_selec.tipo_vehiculo): diasFeriados = DiasFeriadosEscogidos.objects.filter( estacionamiento=reserva_selec.estacionamiento) reservaNueva = Reserva( estacionamiento=reserva_selec.estacionamiento, inicioReserva=NuevoInicio, finalReserva=NuevoFinal, estado=reserva_selec.estado, tipo_vehiculo=reserva_selec.tipo_vehiculo, cedula=reserva_selec.cedula, cedulaTipo=reserva_selec.cedulaTipo, nombre=reserva_selec.nombre, apellido=reserva_selec.apellido, ) montoTotal = calcular_Precio_Reserva( reservaNueva, reserva_selec.estacionamiento) diferencia = transreser.transaccion.monto - montoTotal request.session['finalReservaHora'] = NuevoFinal.hour request.session['finalReservaMinuto'] = NuevoFinal.minute request.session['inicioReservaHora'] = NuevoInicio.hour request.session['inicioReservaMinuto'] = NuevoInicio.minute request.session['anioinicial'] = NuevoInicio.year request.session['mesinicial'] = NuevoInicio.month request.session['diainicial'] = NuevoInicio.day request.session['aniofinal'] = NuevoFinal.year request.session['mesfinal'] = NuevoFinal.month request.session['diafinal'] = NuevoFinal.day request.session['tipo_vehiculo'] = reserva_selec.tipo_vehiculo request.session['nombre'] = reserva_selec.nombre request.session['apellido'] = reserva_selec.apellido request.session['cedula'] = reserva_selec.cedula request.session['cedulaTipo'] = reserva_selec.cedulaTipo request.session['monto'] = float(montoTotal) return render( request, 'reserva_mover_buscar_nueva.html', { "form": form, 'reserva': reserva_selec, 'transreser': transreser, 'billetera': BilleteraLogin(), 'reservaNueva': reservaNueva, 'Monto': montoTotal, 'diferencia': diferencia, 'mensaje': m_validado[1] }) return render( request, 'reserva_mover_buscar_nueva.html', { "form": form, 'reserva': reserva_selec, 'transreser': transreser, 'billetera': BilleteraLogin(), })
def Mover_Reserva_buscar_nueva(request): form = MoverReservaNuevaForm() reserva_selec = Reserva.objects.get(id = request.session['reservaid']) transreser = TransReser.objects.get(reserva = reserva_selec) _id = reserva_selec.estacionamiento.id if request.method == 'POST': form = MoverReservaNuevaForm(request.POST) if form.is_valid(): NuevoInicio = form.cleaned_data['nuevoInicio'] try: reserva_selec = Reserva.objects.get(id = request.session['reservaid'], estado = 'Válido') except: return render( request, 'reserva_mover_buscar_nueva.html', { "color" : "red" , 'mensaje' : 'ID no existe o CI no corresponde al registrado en la reserva.' , "form" : form } ) NuevoFinal = NuevoInicio + (reserva_selec.finalReserva - reserva_selec.inicioReserva) m_validado = validarHorarioReserva(NuevoInicio, NuevoFinal, reserva_selec.estacionamiento.apertura, reserva_selec.estacionamiento.cierre, reserva_selec.estacionamiento.horizonte) # Si no es valido devolvemos el request if not m_validado[0]: return render( request, 'reserva_mover_buscar_nueva.html', { 'color' :'red' , 'mensaje': m_validado[1] , "form" : form , 'reserva' : reserva_selec , 'transreser' : transreser , 'billetera' : BilleteraLogin() } ) if marzullo(_id, NuevoInicio, NuevoFinal, reserva_selec.tipo_vehiculo): diasFeriados = DiasFeriadosEscogidos.objects.filter(estacionamiento = reserva_selec.estacionamiento) reservaNueva = Reserva( estacionamiento = reserva_selec.estacionamiento, inicioReserva = NuevoInicio, finalReserva = NuevoFinal, estado = reserva_selec.estado, tipo_vehiculo = reserva_selec.tipo_vehiculo, cedula = reserva_selec.cedula, cedulaTipo = reserva_selec.cedulaTipo, nombre = reserva_selec.nombre, apellido = reserva_selec.apellido, ) montoTotal = calcular_Precio_Reserva(reservaNueva,reserva_selec.estacionamiento) diferencia = transreser.transaccion.monto - montoTotal request.session['finalReservaHora'] = NuevoFinal.hour request.session['finalReservaMinuto'] = NuevoFinal.minute request.session['inicioReservaHora'] = NuevoInicio.hour request.session['inicioReservaMinuto'] = NuevoInicio.minute request.session['anioinicial'] = NuevoInicio.year request.session['mesinicial'] = NuevoInicio.month request.session['diainicial'] = NuevoInicio.day request.session['aniofinal'] = NuevoFinal.year request.session['mesfinal'] = NuevoFinal.month request.session['diafinal'] = NuevoFinal.day request.session['tipo_vehiculo'] = reserva_selec.tipo_vehiculo request.session['nombre'] = reserva_selec.nombre request.session['apellido'] = reserva_selec.apellido request.session['cedula'] = reserva_selec.cedula request.session['cedulaTipo'] = reserva_selec.cedulaTipo request.session['monto'] = float(montoTotal) return render( request, 'reserva_mover_buscar_nueva.html', { "form" : form ,'reserva' : reserva_selec ,'transreser' : transreser ,'billetera' : BilleteraLogin() ,'reservaNueva' : reservaNueva ,'Monto' : montoTotal ,'diferencia' : diferencia ,'mensaje' : m_validado[1] } ) return render( request, 'reserva_mover_buscar_nueva.html', { "form" : form, 'reserva' : reserva_selec, 'transreser' : transreser, 'billetera' : BilleteraLogin(), } )