示例#1
0
 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'))
示例#2
0
 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'))
示例#3
0
 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'))
示例#4
0
 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'))
示例#5
0
 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'))   
示例#6
0
 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'))
示例#7
0
 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'))
示例#8
0
 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'))
示例#9
0
 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'))
示例#10
0
 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'))
示例#11
0
 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'))
示例#12
0
 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'))
示例#13
0
 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'))
示例#14
0
 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'))
示例#15
0
 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'))
示例#16
0
 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'))
示例#17
0
 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'))
示例#18
0
 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'))
示例#19
0
 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'))
示例#20
0
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(),
        })
示例#21
0
文件: views.py 项目: SAFESDV/SAGE
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(),          
          }
    )