Exemple #1
0
nOp = len(lMenu) - 1
while True:
    sOpcion = selFuncionInicial(nOp)

    if 'cuota' == sOpcion: CU.cuota(droid)
    elif 'comisiones' == sOpcion: CMS.comisiones(droid)
    elif 'salir' == sOpcion or None == sOpcion: break
    elif isinstance(sOpcion, int) and 0 > int(sOpcion): break
    else:
        func = eval(
            sOpcion
        )  # Evaluar contenido de sOpcion; el cual, debe ser una funcion conocida.
        if isinstance(func, types.FunctionType):
            if bMovil:
                FG.limpiarPantalla(
                )  # Solo limpia pantalla, si se ejecuta desde un movil.
            tecla = func()  # Si la cadena evaluada es una funcion, ejecutela.
            if (0 <= sOpcion.find('actualizar')): cargar()
            try:
                if type(tecla) in (list, tuple): tecla = tecla[0]
            except IndexError:
                print(type(tecla), tecla)
                break
            if ('s' == tecla): break
        else: break
# Fin while True

escValXDefecto(sUXD, sCXD, cog)
ES.muestraFin()
# Fin del programa
Exemple #2
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