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 changeWindows(self, app): c = Creator() json = c.makeConfigJSON() print("PASO DE VENTANA_____VEHICULO:", self.parent.children[2].text) json["nameVehicule"] = self.parent.children[2].text c.writeConfigJson(json) app.root.current = "tableroPrincipal" print(app.root.screens[1].name) for i in app.root.screens: if i.name == "tableroPrincipal": i.confCorreo()
def on_guardar(self, *args): #armar el vehiculo para guardarlo a la base de datos nombreVehiculo = self.ids.nombreVehiculo.text valorTacometro = self.ids.valorTacometro.text tipoCombustible = self.ids.spinner_0.text tipoVehiculo = self.ids.spinner_1.text marcaVehiculo = self.ids.spinner_2.text modeloVehiculo = self.ids.spinner_3.text if nombreVehiculo == "" or valorTacometro == "" or tipoCombustible == "Combustible" or tipoVehiculo == "Tipo vehiculo" or marcaVehiculo == "marca" or modeloVehiculo == "modelo": self.ids.advertenciaAgregarVehiculo.text = "Complete todos los campos." return [False, None] else: print( "Valores cargados validando existencia para escribir la base de datos" ) self.combustible = Combustible.GetCombustible( Combustible, self.ids.spinner_0.text) self.lineaSelect = LineaVehiculo.selectLinea( LineaVehiculo, self.ids.spinner_3.text, self.lineas) self.nombre = self.ids.nombreVehiculo.text self.kilometraje = self.ids.valorTacometro.text print("vehiculo a agregar") print("tipo:", self.tipoSelect) print("marca", self.marcaSelect) print("linea:", self.lineaSelect) print("combustible", self.combustible) print("Valor tacometro:", self.kilometraje) print("Nombre vehiculo:", self.nombre) if Vehiculo.existeVehiculo(Vehiculo, self.nombre): #no lo puedo agregar a la base de datos self.ids.advertenciaAgregarVehiculo.text = "ya existe ese vehiculo." return [False, None] else: #como no existe lo agrego a la base de datos veh = Vehiculo.addVehiculo(Vehiculo, self.nombre, self.lineaSelect.id, self.combustible.id) print("TIPO DEL KILOMETRAJE", type(self.kilometraje)) Tacometro.addTacometro(Tacometro, veh.id, int(self.kilometraje)) #aqui agrego la latitud y longitud a la table de geolocaclizacion geopos = Creator.ConseguirPOS(Creator) UbicacionVehiculo.makeUV(UbicacionVehiculo, veh.id, geopos['latitude'], geopos['longitude']) return [True, nombreVehiculo, veh]
def _on_answer( self, instance, answer): #al oprimir el boton si o no se activa esta funcion self.popup.dismiss() if answer == 'si': #write the mail in the config.json mail = str(self.ids.correo.text) creator = Creator() config = creator.makeConfigJSON() config["mail"] = mail config["mailvalidate"] = True creator.writeConfigJson(config) self.manager.current = "segunda" #Cambio de ventana aqui porque depende de lo que seleccione en el popup si, no. elif answer == 'no': pass
def alarmaActivada(self, ventanaActual, nombreAlarma, recargaOmantenimiento): #para lanzar una alarma que se haya programado. #mixer.init() #mixer.music.load('helio.mp3') #mixer.music.play() c = Creator() filejson = c.makeConfigJSON() nombreVehiculo = filejson["nameVehicule"] contenedorBtn = GridLayout(cols=3, size_hint_y= None, height='44sp') contenedorGeneral=GridLayout(cols=1) informacionAlarma = Label(text="Usted ha programado la alarma: "+nombreAlarma+" para "+recargaOmantenimiento+" del vehiculo: " + nombreVehiculo) btnAceptar = Button(text="OK", on_press=lambda alarm:self.regresaraPestanaAnterior(ventanaActual)) contenedorBtn.add_widget(BoxLayout()) contenedorBtn.add_widget(btnAceptar) contenedorBtn.add_widget(BoxLayout()) contenedorGeneral.add_widget(informacionAlarma) contenedorGeneral.add_widget(contenedorBtn) self.popup = Popup(title="ALARMA",content=contenedorGeneral,size_hint=(1, 1), auto_dismiss= False) self.popup.open()
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 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()
from db.creator import Creator #from negocio.combustible import Combustible #how to make the database x = Creator() x.addVehiculesPrueba() """ x.makeDB() x.makeAllTables() x.loadTipoMarcaLineaVehiculo() x.loadCombustible() """ #rom negocio.tipovehiculo import TipoVehiculo #t = TipoVehiculo
def build(self): #process to make the database or not, and take the mail or not creator = Creator() config = creator.makeConfigJSON() #print("La configuracion\n",config) if not config["init"]: #make the database creator.makeDB() creator.makeAllTables() creator.loadTipoMarcaLineaVehiculo() creator.loadCombustible() print( "____________________________Creacion completa___________________________________" ) config["init"] = True creator.writeConfigJson(config) k = Builder.load_file("vistas.kv") if not config["mailvalidate"]: #request the mail k = Builder.load_file("vistas.kv") else: k = Builder.load_file("vistas2.kv") return k
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
def confCorreo(self): c = Creator() filejson = c.makeConfigJSON() self.ids.correopantalla.text = filejson["mail"]