Example #1
0
def actualizar():

    ind = ES.entradaConLista(droid, 'Busqueda del servidor',\
                    'Seleccione servidor', lSitios)  # Busca el servidor.
    if (None == ind) or (ind == (len(lSitios)-1)) or (len(lSitios) <= ind) or \
              (0 > ind): # Se asegura de tener el indice correcto.
        return ES.muestraFin()
        sys.exit()
    IPServ = lIPs[ind]
    if ((ind == (len(lSitios) - 2)) or ('' == IPServ)):
        IPServ = ES.entradaNombre(droid, 'IP del servidor',
                                  'Introduzca IP del servidor', IPServ[0:10])
    print("Obteniendo archivo desde %s (%s)." % (lSitios[ind], IPServ))
    if droid:
        decip = droid.wifiGetConnectionInfo().result['ip_address']
        hexip = hex(decip).split('x')[1]
        dirL = int(hexip, 16)
        miDirIP = socket.inet_ntoa(struct.pack("<L", dirL))
    else:
        miDirIP = obtenerIP(
            IPServ)  # Esta rutina fue la unica que encontre para mi IP.

    print("Mi direccion IP es: %s" % miDirIP)
    try:
        if IPServ[0:IPServ.rindex('.')] != miDirIP[0:miDirIP.rindex(
                '.'
        )]:  # Las tres primeras partes de ambos IPv4 deben ser iguales.
            print("El servidor seleccionado %s es errado." % IPServ)
            return ES.muestraFin()
            sys.exit()
    except ValueError:  # La funcion rindex (busca indece desde el final de la cadena), no consigue el '.'.
        print("ERROR EXTRA#O DE RED")  # Este error NUNCA deberia ocurrir.
        return ES.muestraFin()
        sys.exit()

# Se trata de saber, cuando se actualizo por ultima vez un archivo. En el nuevo control.txt,
# ademas de la informacion del sistema, tambien se guardara la fecha de descarga de cada archivo.
# dControl = ES.cargaDicc("control.txt")	# Diccionario de control, antes de recibir el nuevo. No implementado 27/08/2019.

    URL = "http://" + IPServ + ':8080/storage/'
    bImpar = True
    data = urlopen(URL + CONTROL, None, 10).read().decode(
        'ISO-8859-1'
    )  # None, ningun parametro es enviado al servidor; 10, timeout.
    if None == data:
        print('ERROR. No hubo carga.')
        sys.exit()
    f = open(DIR + CONTROL, "w")
    if f:
        archivos = data.split('\n')
        fechaGrabado = archivos.pop(0)
        f.write('Datos grabados: ' + fechaGrabado)
        ahora = strftime("\nDatos descargados: %a, %d/%m/%Y %-l:%M:%S %p\n",
                         localtime())
        f.write(ahora)
        f.close()
    else:
        print('ERROR. No se pudo escribir en el archivo.')
        sys.exit()
    for nombreArchivo in archivos:
        #    if nombreArchivo[5:6].isdigit(): continue      # La primera linea es una fecha. El primer caracter es un digito.
        nombreArchivo = nombreArchivo.rstrip(' \t\n\r')
        if not nombreArchivo: continue
        sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE, CO.AZUL)
        print("%sLeyendo%s %s remoto." % (sColor, CO.FIN, nombreArchivo))
        try:
            data = urlopen(URL + nombreArchivo, None, 10).read().decode(
                'ISO-8859-1'
            )  # None, ningun parametro es enviado al servidor; 10, timeout.
            bLeido = True  # No hubo error de lectura desde el servidor.
        except:
            print("%sERROR LEYENDO%s %s %sREMOTO.%s" %
                  (CO.ROJO, CO.FIN, nombreArchivo, CO.ROJO, CO.FIN))
            bLeido = False
        if bLeido:  # Si no hubo error de lectura desde el servidor.
            try:
                f = open(DIR + nombreArchivo, "w")
                bAbierto = True  # No hubo error al abrir para escribir en archivo local.
            except:
                print("%sERROR AL TRATAR DE ABRIR%s %s%s %sPARA ESCRITURA.%s" % \
                          (CO.ROJO, CO.FIN, DIR, nombreArchivo, CO.ROJO, CO.FIN))
                bAbierto = False
            if bAbierto:  # Si no hubo error al abrir para escribir en archivo local.
                print("%sEscribiendo%s %s local..." %
                      (sColor, CO.FIN, nombreArchivo))
                try:
                    f.write(data)
                    bEscrito = True  # No hubo error escribiendo en el archivo local.
                except:
                    print("%sERROR AL TRATAR DE ESCRIBIR%s %s." %
                          (CO.ROJO, CO.FIN, nombreArchivo))
                    bEscrito = False
                finally:
                    f.close()
                if bEscrito:
                    print(
                        "%s %sactualizado con%s %d lineas!" %
                        (nombreArchivo,
                         (CO.CYAN if 'heute.txt' == nombreArchivo else sColor),
                         CO.FIN, ES.cLineas(nombreArchivo)))
                # Fin if bEscrito
            # Fin if bAbierto
        # Fin if bLeido
    # Fin for
    return ES.muestraFin()


# Funcion actualizar
Example #2
0
	lControl = [['0', nombArch] for nombArch in lDATA]
dControl = {linea[1].strip():[linea[0].strip(), linea[0].strip()]
					for linea in lControl if FG.esEntero(linea[0].strip())}
lBancosHoy = None		# La lista de bancos de hoy esta vacia al principio.
for DATA in lDATA:
	if 'control.txt' != DATA:
		(timeAnterior, timeNuevo) = dControl.get(DATA, ['0', '-1'])
	else: timeAnterior = timeNuevo = 0
	segsDiferencia = int(timeNuevo) - int(timeAnterior)
	sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE, CO.AZUL)
	print("%sLeyendo%s %s remoto. Local modificado hace: %d seg del remoto" %
						(sColor, CO.FIN, DATA, segsDiferencia))
	if 'control.txt' != DATA and 0 >= segsDiferencia:
		if 0 == segsDiferencia:
			print("%s, %slocal; ya esta actualizado con%s %d lineas! El %s" % \
								(DATA, sColor, CO.FIN, ES.cLineas(DATA),
													ctime(int(timeAnterior))))
			continue
		elif 'archsBanco.txt' != DATA:
			print("%s %sno está en el archivo de control!%s" % (DATA, CO.ROJO,
																	CO.FIN))
	try:
		data = urlopen(URL + DATA, None, 10).read().decode('ISO-8859-1')	# None, ningun parametro es enviado al servidor; 10, timeout.
		bLeido = True												# No hubo error de lectura desde el servidor.
	except:
		print("%sERROR LEYENDO%s %s %sREMOTO.%s" % (CO.ROJO, CO.FIN, DATA,
															CO.ROJO, CO.FIN))
		bLeido = False
	if bLeido:														# Si no hubo error de lectura desde el servidor.
		if 'control.txt' == DATA:
			lControl = [linea.strip().split(';')
Example #3
0
            print("%sERROR AL TRATAR DE ABRIR%s %s%s %sPARA ESCRITURA.%s" % \
                 (CO.ROJO, CO.FIN, DIR, DATA, CO.ROJO, CO.FIN))
            bAbierto = False
        if bAbierto:  # Si no hubo error al abrir para escribir en archivo local.
            print("%sEscribiendo%s %s local..." % (sColor, CO.FIN, DATA))
            try:
                f.write(data)
                bEscrito = True  # No hubo error escribiendo en el archivo local.
            except:
                print("%sERROR AL TRATAR DE ESCRIBIR%s %s." %
                      (CO.ROJO, CO.FIN, DATA))
                bEscrito = False
            finally:
                f.close()
            if bEscrito:
                print("%s %sactualizado con%s %d lineas!" %
                      (DATA, (CO.CYAN if 'heute.txt' == DATA else sColor),
                       CO.FIN, ES.cLineas(DATA)))
            # Fin if bEscrito
        # Fin if bAbierto
    # Fin if bLeido
    '''
	elif 'control.txt' == DATA:		# El primer archivo a leer, no se pudo descargar.
		print(("%sPARECIERA QUE EXISTE ALGUN PROBLEMA CON INTERNET O LOS "
				"ARCHIVOS NO EXISTEN.%s") % (CO.ROJO, CO.FIN))
		ES.muestraFin()
		sys.exit()'''
# Fin for
ES.muestraFin()
# Fin del programa