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
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
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
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)
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()
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
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
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
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
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()