def ubicacionVehiculo(self): #integracion base de datos nombre = self.parent.children[2].text print ("ubicar vehiculo", nombre)#bd print("id vehiculo: ", Vehiculo.getIdvehiculo(Vehiculo, nombre)) idv = Vehiculo.getIdvehiculo(Vehiculo, nombre) geo_data = Creator.ConseguirPOS(Creator) UbicacionVehiculo.actualizarUbicacion(UbicacionVehiculo,idv, geo_data['latitude'], geo_data['longitude'] ) #Agregar ubicacion DB #print(self.parent.children[2].text) #Para obtener el nombre del vehiculo. #print(geo_data['latitude'], geo_data['longitude']) self.popup = Popup(title="ESTADO",content=Label(text="Ubicacion guardada correctamente"),size_hint=(0.7, 0.2)) self.popup.open()
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 agregarMantenimiento(self): c = Creator() filejson = c.makeConfigJSON() nombreVehiculo = filejson["nameVehicule"] idVehiculo = Vehiculo.getIdvehiculo(Vehiculo, nombreVehiculo) if self.ids.precioMantenimiento.text=="" or self.ids.kilometrosMantenimiento.text=="" or self.ids.descripcionMantenimiento.text=="": self.ids.datosIncompletosMantenimiento.text="Ingrese todos los datos" elif Tacometro.validarTacometro2(Tacometro,int(self.ids.kilometrosMantenimiento.text), idVehiculo): self.ids.datosIncompletosMantenimiento.text="Esos kilometros ya fueron registrados debe ser superior" else: km = self.ids.kilometrosMantenimiento.text descripcion = self.ids.descripcionMantenimiento.text precio = self.ids.precioMantenimiento.text Mantenimiento.makeMantenimiento(Mantenimiento,idVehiculo,descripcion, km, precio) self.ids.datosIncompletosMantenimiento.text="" box=BoxLayout(orientation="horizontal") box.add_widget(Label(text=str(time.strftime("%d/%m/%Y")))) box.add_widget(Label(text=self.ids.precioMantenimiento.text)) box.add_widget(Label(text=self.ids.kilometrosMantenimiento.text)) box.add_widget(Label(text=self.ids.descripcionMantenimiento.text)) box.add_widget(Label(text=nombreVehiculo)) self.ids.contenedorMantenimientos.add_widget(box)
def eliminarVehiculo(self): nombre = self.parent.children[2].text idvehiculo = Vehiculo.getIdvehiculo(Vehiculo, nombre) print("VEHICULO ID, eliminando.................:", nombre, idvehiculo) Vehiculo.deleteVehiculo(Vehiculo, nombre) Tacometro.eliminarByVehiculo(Tacometro, idvehiculo) Recarga.eliminarByVehiculo(Recarga, idvehiculo) Mantenimiento.eliminarByVehiculo(Mantenimiento, idvehiculo) UbicacionVehiculo.eliminarByVehiculo(UbicacionVehiculo, idvehiculo) #aqui eliminar las recargas, los mantenimientos, las ubicacionnes, tacometros que tengan el id del vehiculo self.parent.parent.remove_widget(self.parent)
def agregarRecarga(self): #obtener el nombre del vehiculo c = Creator() filejson = c.makeConfigJSON() nombreVehiculo = filejson["nameVehicule"] idVehiculo = Vehiculo.getIdvehiculo(Vehiculo, nombreVehiculo) if self.ids.precioRecarga.text=="" or self.ids.kilometrosRecarga.text=="": self.ids.datosIncompletosRecarga.text="Ingrese todos los datos" elif Tacometro.validarTacometro(Tacometro,int(self.ids.kilometrosRecarga.text), idVehiculo): self.ids.datosIncompletosRecarga.text="Esos kilometros ya fueron registrados debe ser superior" else: self.ids.datosIncompletosRecarga.text="" Recarga.makeRecarga(Recarga, nombreVehiculo,self.ids.precioRecarga.text, self.ids.kilometrosRecarga.text) box=BoxLayout(orientation="horizontal") box.add_widget(Label(text=str(time.strftime("%d/%m/%Y")))) box.add_widget(Label(text=self.ids.precioRecarga.text)) box.add_widget(Label(text=self.ids.kilometrosRecarga.text)) box.add_widget(Label(text=nombreVehiculo)) self.ids.contenedorRecargas.add_widget(box)
def enviarReporte(self): c = Creator() filejson = c.makeConfigJSON() nombreVehiculo = filejson["nameVehicule"] idVehiculo = Vehiculo.getIdvehiculo(Vehiculo, nombreVehiculo) #self.ids.correopantalla.text = filejson["mail"] import csv import smtplib import mimetypes # Importamos los módulos necesarios from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.encoders import encode_base64 fechai = 0 fechaf = -1 validarFecha = True try: fechai = datetime.strptime(self.ids.fechaInicial.text, "%d/%m/%Y").date() fechaf = datetime.strptime(self.ids.fechaFinal.text, "%d/%m/%Y").date() except: validarFecha=False #si la fecha esta mal print("entramos a la excepcion") if fechai > fechaf: self.ids.advertenciaResporte.text="fechas invalidas" elif validarFecha: self.ids.advertenciaResporte.text="" mto = Mantenimiento.getAllMtos(Mantenimiento, fechai, fechaf,idVehiculo) rec = Recarga.getAllRecargas(Recarga, fechai, fechaf, idVehiculo) f=open("reporteVehiculo.csv", "w") f.close() with open('reporteVehiculo.csv', 'w') as csvfile: spamwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL) spamwriter.writerow(['Recargas del Vehiculo']) spamwriter.writerow(['Fecha', 'Precio', 'Kilometros recorridos']) for i in range(len(rec)): #spamwriter.writerow(['Fecha'+str(i)]+ ['Precio'+str(i)]+ ['Kilometros recorridos'+str(i)]) spamwriter.writerow( [[rec[i][2] ] + [ str(rec[i][1]) ] + [ str(Tacometro.getValorTacByID(Tacometro,rec[i][3])) ]]) spamwriter.writerow(['Mantenimientos del Vehiculo']) spamwriter.writerow(['Fecha', 'Precio', 'Kilometros recorridos', 'Descripcion']) for i in range(len(mto)): #spamwriter.writerow(['Fecha'+str(i)]+ ['Precio'+str(i)]+ ['Kilometros recorridos'+str(i)]) spamwriter.writerow([ [ mto[i][3] ] + [str(mto[i][1]) ] + [str(Tacometro.getValorTacByID(Tacometro,mto[i][4] )) ] + [mto[i][2] ]]) # Creamos objeto Multipart, quien será el recipiente que enviaremos msg = MIMEMultipart() msg['From']="*****@*****.**" msg['To'] = self.ids.correopantalla.text msg['Subject']="Reporte del vehiculo: " + nombreVehiculo # Adjuntamos Imagen file = open("reporteVehiculo.csv", "r") attach_image = MIMEText(file.read()) attach_image.add_header('Content-Disposition', 'attachment; filename = "reporteVehiculo.csv"') msg.attach(attach_image) # Autenticamos mailServer = smtplib.SMTP('smtp.gmail.com',587) mailServer.ehlo() mailServer.starttls() mailServer.ehlo() mailServer.login("*****@*****.**","laboratoriodesw20191") # Enviamos mailServer.sendmail("*****@*****.**", self.ids.correopantalla.text, msg.as_string()) # Cerramos conexión mailServer.close()
def crearReporte(self): validarFecha=True fechai = 0 fechaf = -1 c = Creator() filejson = c.makeConfigJSON() nombreVehiculo = filejson["nameVehicule"] idVehiculo = Vehiculo.getIdvehiculo(Vehiculo, nombreVehiculo) try: fechai = datetime.strptime(self.ids.fechaInicial.text, "%d/%m/%Y").date() fechaf = datetime.strptime(self.ids.fechaFinal.text, "%d/%m/%Y").date() except: validarFecha=False #si la fecha esta mal print("entramos a la excepcion") if self.ids.tipoReporte.text=="Tipo de reporte" or self.ids.fechaInicial.text=="" or self.ids.fechaFinal.text=="": self.ids.advertenciaResporte.text="Complete todos los datos" elif fechai > fechaf: self.ids.advertenciaResporte.text="fechas invalidas" elif validarFecha: self.ids.advertenciaResporte.text="" print("Creando reporte") if self.ids.tipoReporte.text=="Reporte de recargas": self.ids.elegirListaReporte.clear_widgets() #Se elimina toda la lista del reporte elegido anteriormente nombreColumnas=BoxLayout(size_hint_y=0.1) #Box con los nombres de cada columna scrollReportes=ScrollView() gridReportes=GridLayout(cols=1, size_hint_y=None, row_default_height=self.height*0.1) #Va a contener todas las filas del repo gridReportes.bind(minimum_height=gridReportes.setter('height')) #es para que el scroll se pueda mover. columna= Label(text="Fecha Recarga", color=(1,1,0,1)) nombreColumnas.add_widget(columna) columna= Label(text="Precio Recarga", color=(1,0,1,1)) nombreColumnas.add_widget(columna) columna= Label(text="Kilometros Recorridos", color=(0,0,1,1)) nombreColumnas.add_widget(columna)#;Recarga.getAllRecargas(Recarga, fechai, fechaf) rec = Recarga.getAllRecargas(Recarga, fechai, fechaf, idVehiculo) for i in range(len(rec)): gridReportes.add_widget(BoxLayout(orientation="horizontal")) for i, n in enumerate(gridReportes.children): print("") n.add_widget(Label(text= rec[i][2])) n.add_widget(Label(text= str(rec[i][1]))) n.add_widget(Label(text= str(Tacometro.getValorTacByID(Tacometro,rec[i][3])))) elif self.ids.tipoReporte.text=="Reporte de mantenimiento": self.ids.elegirListaReporte.clear_widgets() nombreColumnas=BoxLayout(size_hint_y=0.1) scrollReportes=ScrollView() gridReportes=GridLayout(cols=1, size_hint_y=None, row_default_height=self.height*0.1) gridReportes.bind(minimum_height=gridReportes.setter('height')) #es para que el scroll se pueda mover. columna= Label(text="Fecha Mantenimiento", color=(1,1,0,1)) nombreColumnas.add_widget(columna) columna= Label(text="Precio Mantenimiento", color=(1,0,1,1)) nombreColumnas.add_widget(columna) columna= Label(text="Kilometros Recorridos", color=(0,0,1,1)) nombreColumnas.add_widget(columna) mto = Mantenimiento.getAllMtos(Mantenimiento, fechai, fechaf,idVehiculo) for i in range(len(mto)): gridReportes.add_widget(BoxLayout(orientation="horizontal")) for i, n in enumerate(gridReportes.children): n.add_widget(Label(text= mto[i][3] )) n.add_widget(Label(text= str(mto[i][1]) )) n.add_widget(Label(text= str(Tacometro.getValorTacByID(Tacometro,mto[i][4] )))) #Creo la lista de reportes para la huella de carbono----------->DB elif self.ids.tipoReporte.text=="Reportes de huella de carbono": self.ids.elegirListaReporte.clear_widgets() nombreColumnas=BoxLayout(size_hint_y=0.1) scrollReportes=ScrollView() gridReportes=GridLayout(cols=1, size_hint_y=None, row_default_height=self.height*0.1) gridReportes.bind(minimum_height=gridReportes.setter('height')) #es para que el scroll se pueda mover. columna= Label(text="Fecha Recarga Comb", color=(1,1,0,1)) nombreColumnas.add_widget(columna) columna= Label(text="Cantidad combustible", color=(1,0,1,1)) nombreColumnas.add_widget(columna) columna= Label(text="Huella Carbono (gr)", color=(0,0,1,1)) nombreColumnas.add_widget(columna) for i in range(10): gridReportes.add_widget(BoxLayout(orientation="horizontal")) for i, n in enumerate(gridReportes.children): n.add_widget(Label(text=str(time.strftime("%d/%m/%Y")))) n.add_widget(Label(text="cantidad"+str(i))) n.add_widget(Label(text="huella"+str(i))) self.ids.elegirListaReporte.add_widget(nombreColumnas) scrollReportes.add_widget(gridReportes) self.ids.elegirListaReporte.add_widget(scrollReportes) else: self.ids.advertenciaResporte.text="No ha ingresado una fecha correcta..." validarFecha=True