Esempio n. 1
0
    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()
Esempio n. 2
0
    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()
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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()
Esempio n. 7
0
    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