Example #1
0
    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]
Example #2
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)
Example #3
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()
Example #4
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()
Example #5
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)
Example #6
0
    def visualizarVehiculos(
        self
    ):  #Muestro los marcadores con las ubicaciones actualizadas en el mapa
        ip_request = requests.get('https://get.geojs.io/v1/ip.json')
        my_ip = ip_request.json()['ip']  #con mi ip obtengo mi geolocalizacion
        geo_request = requests.get('https://get.geojs.io/v1/ip/geo/' + my_ip +
                                   '.json')
        geo_data = geo_request.json()

        self.longitudActual = float(geo_data['longitude'])
        self.latitudActual = float(geo_data['latitude'])

        self.ids.mapview.center_on(
            self.latitudActual,
            self.longitudActual)  #mapa centrado en ubicacion actual
        self.ids.mapview.zoom = 5

        mapmarkerpopupUbicacionActual = MapMarkerPopup(lat=self.latitudActual,
                                                       lon=self.longitudActual,
                                                       popup_size=(120, 70))
        bubbleUbicacionActual = Bubble()
        labelUbicacionActual = Label(text="[b]Ubicaion actual![/b]",
                                     markup=True,
                                     halign="center")
        bubbleUbicacionActual.add_widget(labelUbicacionActual)
        mapmarkerpopupUbicacionActual.add_widget(
            bubbleUbicacionActual
        )  #creo un marcador con etique para saber la ubicacion actual, es de color rojo

        #self.ids.mapview.center_on(4.795100942698568, -75.6890602859938) #Me centra en la utp.
        if len(self.listaMarker) > 0:
            for marker in range(len(self.listaMarker)):
                self.ids.mapview.remove_widget(self.listaMarker[marker])
            self.listaMarker = [
            ]  #La reseteo para poder meter los mapMarker de los vehiculos actualizados.

        #Se hace la consulta a la BD para obtener las lat y lon de los vehiculos-----------------------BD
        self.listaMarker.append(mapmarkerpopupUbicacionActual)

        #hacer consulta base de datos
        pos = UbicacionVehiculo.obtenerData(UbicacionVehiculo)

        for e in pos:
            mapmarkerpopup = MapMarkerPopup(
                lat=float(e[1]),
                lon=float(e[2]),
                color=(0, 1, 1, 1),
                popup_size=(120, 70))  #acepta 1,0,1,1 o 0,0,0,1 o 0,1,1,1
            bubble = Bubble()
            label = Label(text="[b]" +
                          Vehiculo.getNamevehiculo(Vehiculo, e[0]) + "[/b]",
                          markup=True,
                          halign="center")
            bubble.add_widget(label)
            mapmarkerpopup.add_widget(bubble)
            self.listaMarker.append(mapmarkerpopup)

        for i in range(len(pos)):
            self.ids.mapview.add_widget(self.listaMarker[i])
Example #7
0
	def scrollVehiculos(self):
		# CONSULTA BASE DE DATOS PARA LISTAR TODOS LOS VEHICULOS
		for e in Vehiculo.listarNameVehiculos(Vehiculo):
			self.vehiculosinapp.append(e)
		#self.vehiculosinapp.append()
		for i in range(len(self.vehiculosinapp)):
			#print(self.vehiculosinapp)
			#self.l.append(BoxLayout(orientation="horizontal"))
			#self.ids.contenedorFilas.add_widget(self.l[-1]) #al gridlayout le agrego lo boxlayout necesarios, en cada boxlayout puedo posicionar
															 #mis tres botones.
			self.ids.contenedorFilas.add_widget(BoxLayout(orientation="horizontal"))
		for i, n in enumerate(self.ids.contenedorFilas.children):
			n.add_widget(BotonVehiculo(text=(self.vehiculosinapp[i].nombre)))
			n.add_widget(BotonUbicacion(text="ubicacion")) #Los ids son iguales y corresponden al nombre del vehiculo
			n.add_widget(BotonEliminar(text="Eliminar"))
Example #8
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)
Example #9
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()
Example #10
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