ingenieros.py 1.77 KB
import json, datetime, time, apollo

class ingenieros():
    """Esta Clase abstrae la relacion de los usuarios de login y los datos
    de los usuarios, al dia de mañana se podria mover a laika si es necesario
    Pero por ahora los armo en un json y a la mierda no hay tantos ingenieros
    ni tanta rotacion"""

    def __init__(self) -> None:
        self.Archivo = "data/ingenieros.json"
        self.cache = {}
        self.delta =  datetime.timedelta(seconds=100)
        self._last_update = datetime.datetime.now() #- self.delta
        self.LeerArchivo(force=True)
    
    def CacheVencido(self):
        a = datetime.datetime.now()
        return a - self._last_update > self.delta 

    
    def LeerDatosUsuario(self,usuario):
        """Lee los datos de un usuario desde el cache si el tiempo
        no excede el delta"""
        try:
            rta = self.LeerArchivo()[usuario]
        except Exception as E:
            print(E)
            rta = {"nombreyapellido":"Usuario no cargado","matricula":""}

        return rta
    
    def LeerArchivo(self,force=False):
        if self.CacheVencido() or force:
            with open(self.Archivo) as file:
                data = json.load(file)
            self.cache = data
            self._last_update = datetime.datetime.now()
        else:
            data = self.cache
        return data
    
if __name__ == "__main__":
    ing = ingenieros()
    print(apollo.estaticos.FechaHora())
    for n in range(0,125):
        apollo.estaticos.FechaHora()
        print(ing.LeerDatosUsuario(usuario="mdfernandez054"))
        print(ing.LeerDatosUsuario(usuario="usfsder"))
        #print(ing.cache)
        #print(ing.LeerArchivo())
        if ing.CacheVencido():
            print(apollo.estaticos.FechaHora())
            quit()
        time.sleep(1)