コード例 #1
0
class TipoVehiculo:

    base = makeBase()

    eng = makeEngine()

    def __init__(self, id, tipo):
        self.id = id
        self.tipo = tipo

    def __str__(self):

        return self.tipo

    def getAllTipos(self):

        Session = sessionmaker(bind=self.eng)
        ses = Session()
        query = None
        try:
            query = ses.query(_TipoVehiculo).all()
        except:
            print("no se puede generar la consulta")
        ses.close()

        return [TipoVehiculo(int(i.id), str(i.tipo)) for i in query]

    def selectTipo(self, tipo, listoftipos):

        #print(tipo, listoftipos)

        for t in listoftipos:

            if t.tipo == tipo:
                return t
コード例 #2
0
class LineaVehiculo:

    base = makeBase()

    eng = makeEngine()

    def __init__(self, id, idTipoVehiculo, idMarcaVehiculo, linea):

        self.id = id
        self.idTipoVehiculo = idTipoVehiculo
        self.idMarcaVehiculo = idMarcaVehiculo
        self.linea = linea

    def __str__(self):

        return self.linea

    def selectLinea(self, linea, listoflineas):

        print("seleccionando linea", linea)
        for l in listoflineas:
            if l.linea == linea:
                return l

    def getAllLineas(self, marca):

        print("obtienedo linea de la marca", marca)

        Session = sessionmaker(bind=self.eng)
        ses = Session()
        query = None
        res = []
        #query = ses.query(_MarcaVehiculo).filter(_MarcaVehiculo.idTipoVehiculo == tipo.id).all()
        try:
            query = ses.query(_LineaVehiculo).filter(
                _LineaVehiculo.idTipoVehiculo == marca.idTipoVehiculo,
                _LineaVehiculo.idMarcaVehiculo == marca.id).all()

            res = [
                LineaVehiculo(l.id, l.idTipoVehiculo, l.idMarcaVehiculo,
                              l.linea) for l in query
            ]
        except:
            print("consulta fallida")

        ses.close()

        return res
コード例 #3
0
class MarcaVehiculo:

    base = makeBase()

    eng = makeEngine()

    def __init__(self, id, idTipoVehiculo, marca):

        self.id = id
        self.idTipoVehiculo = idTipoVehiculo
        self.marca = marca

    def __str__(self):

        return self.marca

    def getAllMarcas(self, tipo):

        print("obtienedo marca del tipo", tipo)

        Session = sessionmaker(bind=self.eng)
        ses = Session()
        query = None
        res = []
        #query = ses.query(_MarcaVehiculo).filter(_MarcaVehiculo.idTipoVehiculo == tipo.id).all()
        try:
            query = ses.query(_MarcaVehiculo).filter(
                _MarcaVehiculo.idTipoVehiculo == tipo.id).all()

            res = [
                MarcaVehiculo(m.id, m.idTipoVehiculo, m.marca) for m in query
            ]
        except:
            print("consulta fallida")

        ses.close()

        return res

    def selectMarca(self, marca, listofmarcas):
        print("seleccionano marca:", marca)
        for m in listofmarcas:
            if m.marca == marca:
                return m
コード例 #4
0
class Combustible:

    base = makeBase()

    eng = makeEngine()

    def __init__(self, id, nombre, medida):

        self.id = id
        self.nombre = nombre
        self.medida = medida

    def makeC(self, db_combustible):

        return Combustible(db_combustible.id, db_combustible.nombre,
                           db_combustible.medida)

    def __str__(self):
        return self.nombre + ":" + self.medida

    def GetCombustible(self, nameCombustible):
        print("obteniendo combustibe of :", nameCombustible)
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        query = None
        res = None

        try:

            for row in ses.query(_Combustible).all():
                if row.nombre == nameCombustible:
                    res = row
            #query = ses.query(_Combustibles).all()
        except:
            print("no se puede generar la consulta")
        ses.close()

        return self.makeC(self, res)
コード例 #5
0
class Creator():
    base = makeBase()

    eng = makeEngine()

    def __init__(self):
        pass

    def makeConfigJSON(self):
        config = {}
        with open(pathjson, "r") as f:
            config = json.load(f)
        f.close()
        return config

    def ConseguirPOS(self):

        ip_request = requests.get('https://get.geojs.io/v1/ip.json')
        my_ip = ip_request.json()['ip']
        geo_request = requests.get('https://get.geojs.io/v1/ip/geo/' + my_ip +
                                   '.json')
        geo_data = geo_request.json()

        return geo_data

    def writeConfigJson(self, config):
        with open(pathjson, "w+") as filejson:
            json.dump(config, filejson, indent=4)
        filejson.close()

    def makeDB(self):

        makeDatabase(self.eng, self.base)

    def makeAllTables(self):

        BD_tipoVehiculo.makeTable(self.eng)
        BD_marcaVehiculo.makeTable(self.eng)
        BD_lineaVehiculo.makeTable(self.eng)
        BD_combustible.makeTable(self.eng)
        BD_vehiculo.makeTable(self.eng)
        BD_tacometro.makeTable(self.eng)
        BD_ubicacionVehiculo.makeTable(self.eng)
        BD_recarga.makeTable(self.eng)
        BD_mantenimiento.makeTable(self.eng)

    def loadTipoMarcaLineaVehiculo(self):
        self.loadTipo()
        self.loadMarca()
        self.loadLinea()

    def loadLinea(self):

        lineas = []
        with open(rutalinea) as ins:
            for line in ins:
                lineas.append(line.replace('\n', ""))
        lineas = lineas[1:]

        for i in range(len(lineas)):
            lineas[i] = lineas[i].split(",")[1:]

        elementstoUpload = [
            BD_lineaVehiculo._LineaVehiculo(id=l[0],
                                            idTipoVehiculo=l[1],
                                            idMarcaVehiculo=l[2],
                                            linea=l[3]) for l in lineas
        ]
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ses.add_all(elementstoUpload)
        ses.commit()
        ses.close()

    def addVehiculesPrueba(self):

        prueba1 = BD_vehiculo._Vehiculo(id=2,
                                        nombre="veh1",
                                        idLineaVehiculo=1,
                                        idCombustible=1)
        prueba2 = BD_vehiculo._Vehiculo(id=1,
                                        nombre="veh2",
                                        idLineaVehiculo=1,
                                        idCombustible=1)
        prueba3 = BD_vehiculo._Vehiculo(id=3,
                                        nombre="veh3",
                                        idLineaVehiculo=1,
                                        idCombustible=1)

        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ses.add_all([prueba1, prueba2, prueba3])
        ses.commit()
        ses.close()

    def loadCombustible(self):
        l = [[1, "Gasolina", "galones"], [2, "Diesel", "Galones"],
             [3, "Gas", "m3"], [4, "ACPM", "galones"]]
        elementstoUpload = [
            BD_combustible._Combustible(id=c[0], nombre=c[1], medida=c[2])
            for c in l
        ]
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ses.add_all(elementstoUpload)
        ses.commit()
        ses.close()

    def loadMarca(self):

        marcas = []
        with open(rutamarca) as ins:
            for line in ins:
                marcas.append(line.replace('\n', ""))
        marcas = marcas[1:]

        for i in range(len(marcas)):
            marcas[i] = marcas[i].split(",")[1:]

        elementstoUpload = [
            BD_marcaVehiculo._MarcaVehiculo(id=m[0],
                                            idTipoVehiculo=m[1],
                                            marca=m[2]) for m in marcas
        ]
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ses.add_all(elementstoUpload)
        ses.commit()
        ses.close()

    def loadTipo(self):
        clases = []
        with open(rutaclase) as ins:
            for line in ins:
                clases.append(line.replace('\n', ""))
        clases = clases[1:]

        for i in range(len(clases)):
            clases[i] = clases[i].split(",")[1:]
        #print(clases)
        elementstoUpload = [
            BD_tipoVehiculo._TipoVehiculo(id=c[0], tipo=c[1]) for c in clases
        ]
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ses.add_all(elementstoUpload)
        ses.commit()
        ses.close()
コード例 #6
0
class Recarga:

    base = makeBase()

    eng = makeEngine()

    def __init__(id, precioCombustible, fecha, idTacometro, idVehiculo):

        self.id = id
        self.precioCombustible = precioCombustible
        self.fecha = fecha
        self.idTacometro = idTacometro
        self.idVehiculo = idVehiculo

    def eliminarByVehiculo(self, idVehiculo):
        #idVehiculo = Vehiculo.getIdvehiculo(Vehiculo, nombreVehiculo)
        print("ELIMINANDO recargas DE VEHICULO CON ID", idVehiculo)
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        try:
            for row in ses.query(_Recarga):
                if row.idVehiculo == idVehiculo:
                    ses.delete(row)
            #ses.query(_Vehiculo.nombre == name)
        except:
            print("___________NO SE PUDO ELIMINAR___________")

        ses.commit()
        ses.close()

    def makeRecarga(self, nombreVehiculo, precioCombustible, kilometraje):

        print("HACIENDO RECARGA DE GASOLINA, OBTENIENDO PARAMETROS NECCESARIO")
        print("VEHICULO:", nombreVehiculo)
        print("KILOMETROS", int(kilometraje))
        print("PRECIO DE LA RECARGA", precioCombustible)
        newid = self.getIdMax(self)
        preciorecarga = int(precioCombustible)
        fecha = datetime.date.today()
        #fechastr = "20/5/2019"
        #fecha = datetime.datetime.strptime(fechastr, "%d/%m/%Y").date()
        #meterfechas para ahcer pruebas cuando se liste para el informe
        idtacometro = Tacometro.getIdMax(Tacometro)
        kms = int(kilometraje)

        idveh = Vehiculo.getIdvehiculo(Vehiculo, nombreVehiculo)
        Tacometro.addTacometro(Tacometro, idveh, kms)

        Session = sessionmaker(bind=self.eng)
        ses = Session()
        recarga = _Recarga(id=newid,
                           precioCombustible=preciorecarga,
                           fecha=fecha,
                           idTacometro=idtacometro,
                           idVehiculo=idveh)
        ses.add(recarga)
        ses.commit()
        #res = self.makeTacometro(self, tac)
        ses.close()

    def getAllRecargas(self, datei, datef, idv):
        print("solitando recargas para informe")
        Session = sessionmaker(bind=self.eng)
        ses = Session()

        res = []

        #DBSession.query(User).filter(User.birthday.between('1985-01-17', '1988-01-17'))
        for row in ses.query(_Recarga).filter(
                _Recarga.fecha.between(
                    datei, datef)).filter(_Recarga.idVehiculo == idv):
            #aux = [row.fecha, row.precioCombustible, ]
            res.append([
                row.id, row.precioCombustible,
                str(row.fecha), row.idTacometro, row.idVehiculo
            ])

        ses.close()
        return res

    def getIdMax(self):

        print("obteniendo id maximo de tacometro para un vehiculo")
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ids = [0]
        for id, in ses.query(_Recarga.id).order_by(_Recarga.id):
            ids.append(id)

        print("lista de ids de vehiculo:\n", ids)

        ses.close()
        return ids[-1] + 1  # se retorna el primer elemento
コード例 #7
0
class Mantenimiento:

    base = makeBase()

    eng = makeEngine()

    def __init__(self, id, precioMantenimiento, descripcion, fecha,
                 idTacometro, idVehiculo):
        self.id = id
        self.precioMantenimiento = precioMantenimiento
        self.descripcion = descripcion
        self.fecha = fecha
        self.idVehiculo = idVehiculo
        self.idTacometro = idTacometro

    def eliminarByVehiculo(self, idVehiculo):
        #idVehiculo = Vehiculo.getIdvehiculo(Vehiculo, nombreVehiculo)
        print("ELIMINANDO mantenimientos DE VEHICULO CON ID", idVehiculo)
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        try:
            for row in ses.query(_Mantenimiento):
                if row.idVehiculo == idVehiculo:
                    ses.delete(row)
            #ses.query(_Vehiculo.nombre == name)
        except:
            print("___________NO SE PUDO ELIMINAR___________")

        ses.commit()
        ses.close()

    def getIdMax(self):

        print("obteniendo id maximo de mantenimiento para vehiculo")
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ids = [0]
        for id, in ses.query(_Mantenimiento.id).order_by(_Mantenimiento.id):
            ids.append(id)

        print("lista de ids de vehiculo:\n", ids)

        ses.close()
        return ids[-1] + 1  # se retorna el primer elemento

    def makeMantenimiento(self, idVeh, descripcion, km, precioM):
        print("CREANDO MANENIMIENTO")
        print("ID DE VEHICULO", idVeh)
        fecha = datetime.date.today()
        #fechastr = "20/5/2018"
        #fecha = datetime.datetime.strptime(fechastr, "%d/%m/%Y").date()

        kms = int(km)
        precio = int(precioM)
        idtacometro = Tacometro.getIdMax(Tacometro)
        newid = Mantenimiento.getIdMax(Mantenimiento)

        Tacometro.addTacometro(Tacometro, idVeh, kms)

        Session = sessionmaker(bind=self.eng)
        ses = Session()
        mant = _Mantenimiento(id=newid,
                              precioMantenimiento=precio,
                              descripcion=descripcion,
                              fecha=fecha,
                              idTacometro=idtacometro,
                              idVehiculo=idVeh)
        ses.add(mant)
        ses.commit()
        #res = self.makeTacometro(self, tac)
        ses.close()

    def getAllMtos(self, datei, datef, idv):
        print("solitando recargas para informe")
        Session = sessionmaker(bind=self.eng)
        ses = Session()

        res = []

        #DBSession.query(User).filter(User.birthday.between('1985-01-17', '1988-01-17'))
        for row in ses.query(_Mantenimiento).filter(
                _Mantenimiento.fecha.between(
                    datei, datef)).filter(_Mantenimiento.idVehiculo == idv):
            #aux = [row.fecha, row.precioCombustible, ]
            res.append([
                row.id, row.precioMantenimiento, row.descripcion,
                str(row.fecha), row.idTacometro, row.idVehiculo
            ])

        ses.close()
        return res
コード例 #8
0
class UbicacionVehiculo:

    base = makeBase()

    eng = makeEngine()

    def __init__(self, id, idvehiculo, latitud, longitud):
        self.id = id
        self.idvehiculo = idvehiculo
        self.latitud = latitud
        self.longitud = longitud

    def eliminarByVehiculo(self, idVehiculo):
        print("ELIMINANDO TACOMETROS DE VEHICULO CON ID", idVehiculo)
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        try:
            for row in ses.query(_UbicacionVehiculo):
                if row.idvehiculo == idVehiculo:
                    ses.delete(row)
            #ses.query(_Vehiculo.nombre == name)
        except:
            print("no se pudo eliminar")


        ses.commit()
        ses.close()

    def actualizarUbicacion(self, idveh, lat, lon):
        print("actualizando la geolocalizacion")
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        for row in ses.query(_UbicacionVehiculo):
            if row.idvehiculo == idveh:
                row.latitud = lat
                row.longitud = lon
        ses.commit()
        ses.close()

    def makeUV(self, id, lat, lon):

        #lat = "4.6464"
        #lon = "-75.6117"
        print("creando la ubicacion del vehiculo_____")
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ubi = _UbicacionVehiculo(id = id, idvehiculo = id, latitud = lat, longitud = lon)
        ses.add(ubi)
        ses.commit()
        #res = self.makeVehiculo(self, veh)
        ses.close()

    def obtenerData(self):

        res = []
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        for lat, lon, id, in ses.query(_UbicacionVehiculo.latitud,_UbicacionVehiculo.longitud , _UbicacionVehiculo.idvehiculo ):
            res.append([id,lat,lon])

        ses.close()
        return res
コード例 #9
0
class Tacometro:
    base = makeBase()

    eng = makeEngine()

    def __init__(self, id, idVehiculo, valorTacometro):

        self.id = id
        self.idVehiculo = idVehiculo
        self.valorTacometro = valorTacometro

    def eliminarByVehiculo(self, idVehiculo):
        print("ELIMINANDO TACOMETROS DE VEHICULO CON ID", idVehiculo)
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        try:
            for row in ses.query(_Tacometro):
                if row.idVehiculo == idVehiculo:
                    ses.delete(row)
            #ses.query(_Vehiculo.nombre == name)
        except:
            print("no se pudo eliminar")

        ses.commit()
        ses.close()

    def makeTacometro(self, db_tacometro):
        return Tacometro(db_tacometro.id, db_tacometro.idVehiculo,
                         db_tacometro.valorTacometro)

    def addTacometro(self, idVehiculo, valorTacometro):

        print("AGREGANDO VALOR AL TACOMETRO________")
        newid = self.getIdMax(self)
        print("nuevo id tacometro:", newid)
        tac = _Tacometro(id=newid,
                         idVehiculo=idVehiculo,
                         valorTacometro=valorTacometro)
        res = None
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ses.add(tac)
        ses.commit()
        res = self.makeTacometro(self, tac)
        ses.close()

        return res

    def validarTacometro(self, kms, idVehiculo):
        value = self.getMaxValueByVehiculo(self, idVehiculo)
        return value >= kms

    def validarTacometro2(self, kms, idVehiculo):
        value = self.getMaxValueByVehiculo(self, idVehiculo)
        return value > kms

    def getMaxValueByVehiculo(self, idVehiculo):
        print("obteniendo el valor maximo en tacometro por vehiculo")
        l = [0]
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        for row in ses.query(_Tacometro).order_by(_Tacometro.valorTacometro):
            if row.idVehiculo == idVehiculo:
                l.append(row.valorTacometro)

        ses.close()
        print("valores de tacometro registrado_________", l)
        return l[-1]

    def getValorTacByID(self, idR):

        res = 0
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        for row in ses.query(_Tacometro):
            if row.id == idR:
                res = row.valorTacometro
                break

        ses.close()
        return res

    def getIdMax(self):

        print("obteniendo id maximo de tacometro para un vehiculo")
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ids = [0]
        for id, in ses.query(_Tacometro.id).order_by(_Tacometro.id):
            ids.append(id)

        print("lista de ids de vehiculo:\n", ids)

        ses.close()
        return ids[-1] + 1  # se retorna el primer elemento
コード例 #10
0
class Vehiculo:

    base = makeBase()

    eng = makeEngine()

    def __init__(self, id, nombre, idLineaVehiculo, idCombustible):

        self.id = id
        self.nombre = nombre
        self.idLineaVehiculo = idLineaVehiculo
        self.idCombustible = idCombustible


    def makeVehiculo(self, db_vehiculo):

        return Vehiculo(db_vehiculo.id , db_vehiculo.nombre, db_vehiculo.idLineaVehiculo, db_vehiculo.idCombustible)


    def existeVehiculo(self, vehiculo):

        print("verificando existencia de:", vehiculo)
        Session = sessionmaker(bind=self.eng)
        ses = Session()

        #make validation
        for nombre, in ses.query(_Vehiculo.nombre):
            if nombre == vehiculo:
                ses.close()
                return True
        #print("sale del ciclo______________")
        ses.close()
        return False


    def getIdMax(self):

        print("obteniendo id maximo de vehiculo")
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ids = [0]
        for id, in ses.query(_Vehiculo.id).order_by(_Vehiculo.id):
            ids.append(id)

        print("lista de ids de vehiculo:\n",ids)

        ses.close()
        return ids[-1] + 1# se retorna el primer elemento

    def getIdvehiculo(self, name):

        print("obteniendo id del vehiculo:", name)
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        res = None
        for id, nombre, in ses.query(_Vehiculo.id, _Vehiculo.nombre):
            if nombre == name:
                res = id
                break


        ses.close()
        print("id del vehiculo" ,name, "es:", res)
        return res


    def getNamevehiculo(self, idv):

        print("obteniendo name del vehiculo:", idv)
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        res = None
        for id, nombre, in ses.query(_Vehiculo.id, _Vehiculo.nombre):
            if id == idv:
                res = nombre
                break


        ses.close()
        print("nombre del vehiculo" ,idv, "es:", res)
        return res


    def addVehiculo(self, nombre, idLineaVehiculo, idCombustible):

        print("Añadiendo vehiculo___________:")
        newid = self.getIdMax(self)
        print("NEW ID-------,", newid)

        veh = _Vehiculo(id = newid, nombre = nombre, idLineaVehiculo = idLineaVehiculo, idCombustible = idCombustible)
        res = None
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        ses.add(veh)
        ses.commit()
        res = self.makeVehiculo(self, veh)
        ses.close()

        return res

    def listarNameVehiculos(self):

        print("Obteniendo la totalidad de los equipos")
        res = []
        Session = sessionmaker(bind=self.eng)
        ses = Session()
        for id, nombre, idLineaVehiculo, idCombustible, in ses.query(_Vehiculo.id, _Vehiculo.nombre, _Vehiculo.idLineaVehiculo, _Vehiculo.idCombustible):
            res.append(Vehiculo(id, nombre, idLineaVehiculo, idCombustible))

        ses.close()
        return res


    def deleteVehiculo(self, name):

        Session = sessionmaker(bind=self.eng)
        ses = Session()
        try:
            for row in ses.query(_Vehiculo):
                if row.nombre == name:
                    ses.delete(row)
            #ses.query(_Vehiculo.nombre == name)
        except:
            print("no se pudo eliminar")


        ses.commit()
        ses.close()