Re: [Python-es] archivo validar sesion
El sáb, 11-02-2012 a las 17:57 -0500, ANDRES GONZALEZ escribió: hola, muchas gracias por tu solucion sencilla a este inconveniente que es válida, pero creo que en el caso mío si despues de X tiempo se elimina la sesin, como el usuario puede demorarse X cantidad de tiempo en finalizar su utilizacion de la aplicacion, y como ya comenté lo que almaceno en el archivo lleva otra información que necesito en algun momento rescatar para relacionar y almacenar en una base de datos, entonces esa informacion no estaría disponible. de todas formas muchas gracias por tu atencion. Andrés González From: jose.sanche...@hotmail.es To: python-es@python.org Date: Sat, 11 Feb 2012 16:04:25 +0100 Subject: Re: [Python-es] archivo validar sesion El vie, 10-02-2012 a las 19:34 -0500, ANDRES GONZALEZ escribió: buenas tardes, solicito su valiosa colaboracion alguien me pueda orientar con lo siguiente: resulta que estoy diseñando una aplicacion que requiero pueda ser usada por diferentes usuarios simultaneamente, una de las formas que idee (no se si sea la mejor si me pueden orientar sobre una mejor forma les agradezco) para llevar el control del usuario que inicia sesion fue crear una archivo binario con un diccionario llamado temp_usuario_empresa y que posteriormente se iran agregando datos de la siguiente forma: {'nombre usuario1': (codigo empresa usuario1, codigo holding usuario1),'nombre usuario2': (codigo empresa usuario2, codigo holding usuario2),...} puesto que en alguna parte de los proceso de la aplicacion necesito obtener alguna informacion del usuario como el codigo de la empresa o holding para su posterior validacion o informacion que se almacenara en una base de datos. aca comienza mi inquietud: cuando el usuario termina de usar la aplicacion de forma correcta o cierra sesion, se hace necesario que el diccionario se actualice y elimine el usuario o clave del diccionario (con la forma diccionario.pop(nombre usuario activo)) para permitir un futuro inicio de sesion y la aplicacion sepa que ese usuario ya no esta activo y lo vuelva a validar. pero si la apliacion es forzada al cierre no por el proceso normal de terminar la aplicacion como por ejemplo matar el proceso, el diccionario no se actualiza es decir el diccionario no elimina la clave o usuario. mi pregunta es: hay alguna forma a nivel de codigo con la que yo pueda capturar una terminacion del proceso forzado para actualizar el diccionario para permitir una nueva sesion? gracias. Andrés González ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ Siempre puedes usar el recurso de que después de X tiempo sin realizar ninguna acción ese usuario sea eliminado como si hubiera cerrado sesión. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ ¿Y hacer algo como las cokies de los navegadores? Si pasado un tiempo X no hace nada lo pasas a inactivo. Si esta inactivo pero la cokie coincide con el usuario lo vuelves a activar. Si no coincide que inicie otra vez. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] decidir en real time de qué clase heredar
El patrón sería una Factory, tu clase Base debería ser una Factory que dependiendo de los parámetros de MyClass crearía una clase Base1 o Base2. Saludos, Raúl 2012/2/12 Jose Caballero jcaballero@gmail.com Hola, imaginemos unas clases como éstas class Base1(object): def __init__(self): blablabla class Base2(object): def __init__(self): blablabla class MyClass(Base): def __init__(self, x): self.x = x super(MyClass, self).__init__() donde dependiendo del valor de x, la clase de la que MyClass hereda sea Base1 o Base2. ¿Alguien sabe alguna forma de hacerlo? ¿Quizás un patrón de diseño? Si es así, con darme el nombre del patrón me basta, ya busco yo en google por mi cuenta. Muchas gracias por adelantado, Jose ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ -- Raúl Cumplido ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] decidir en real time de qué clase heredar
Efectivamente, como comenra Raúl, lo que nececitas implementas es el patrón factory method. Para implemetarlo en python yo suelo hacer uso de __new__: http://docs.python.org/reference/datamodel.html#object.__new__ 2012/2/12 Raúl Cumplido raulcumpl...@gmail.com: El patrón sería una Factory, tu clase Base debería ser una Factory que dependiendo de los parámetros de MyClass crearía una clase Base1 o Base2. Saludos, Raúl 2012/2/12 Jose Caballero jcaballero@gmail.com Hola, imaginemos unas clases como éstas class Base1(object): def __init__(self): blablabla class Base2(object): def __init__(self): blablabla class MyClass(Base): def __init__(self, x): self.x = x super(MyClass, self).__init__() donde dependiendo del valor de x, la clase de la que MyClass hereda sea Base1 o Base2. ¿Alguien sabe alguna forma de hacerlo? ¿Quizás un patrón de diseño? Si es así, con darme el nombre del patrón me basta, ya busco yo en google por mi cuenta. Muchas gracias por adelantado, Jose ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ -- Raúl Cumplido ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ -- Sergio Fernández ser...@wikier.org ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] decidir en real time de qué clase heredar
Efectivamente, como comenra Raúl, lo que nececitas implementas es el patrón factory method. Para implemetarlo en python yo suelo hacer uso de __new__: http://docs.python.org/reference/datamodel.html#object.__new__ Hmm. No conocia __new__() He tenido que googlear un poco para saber de que va... Casi lo he conseguido. Si hago esto, -- class fac(object): def __new__(cls, x): if x == 0: return A() else: return B() class A(object): def __init__(self): print '__init__ en A' def f(self): print 'f en A' class B(object): def __init__(self): print '__init__ en B' def f(self): print 'f en B' class MyClass(fac): pass o = MyClass(0) o.f() -- obtengo lo siguiente __init__ en A f en A Perfecto. Sin embargo, si intento esto: -- class fac(object): def __new__(cls, x): if x == 0: return A() else: return B() class A(object): def __init__(self): print '__init__ en A' def f(self): print 'f en A' class B(object): def __init__(self): print '__init__ en B' def f(self): print 'f en B' class MyClass(fac): def __init__(self): print '__init__ en MyClass' o = MyClass(0) o.f() -- No parece que __init__() en MyClass sea invocado. Alguien me puede dar una pista? Jose ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] decidir en real time de qué clase heredar
2012/2/12 Jose Caballero jcaballero@gmail.com: Efectivamente, como comenra Raúl, lo que nececitas implementas es el patrón factory method. Para implemetarlo en python yo suelo hacer uso de __new__: http://docs.python.org/reference/datamodel.html#object.__new__ Hmm. No conocia __new__() He tenido que googlear un poco para saber de que va... Casi lo he conseguido. Si hago esto, -- class fac(object): def __new__(cls, x): if x == 0: return A() else: return B() class A(object): def __init__(self): print '__init__ en A' def f(self): print 'f en A' class B(object): def __init__(self): print '__init__ en B' def f(self): print 'f en B' class MyClass(fac): pass o = MyClass(0) o.f() -- obtengo lo siguiente __init__ en A f en A Perfecto. Sin embargo, si intento esto: -- class fac(object): def __new__(cls, x): if x == 0: return A() else: return B() class A(object): def __init__(self): print '__init__ en A' def f(self): print 'f en A' class B(object): def __init__(self): print '__init__ en B' def f(self): print 'f en B' class MyClass(fac): def __init__(self): print '__init__ en MyClass' o = MyClass(0) o.f() -- No parece que __init__() en MyClass sea invocado. Alguien me puede dar una pista? Una pista? ;-) Prueba hacer esto: o = MyClass(0) print o.__class__.__name__ ¿Que te devuelve y por qué? De todas maneras, en tu caso no te sirve subclasear el factory, simplemente usa `o = fac(0)`. Tal vez si explicas mejor que es lo que intentas hacer? No entiendo el caso de uso para eso. Tal vez intentas hacer alguna especie de interfaz? No podrías usar un wrapper?: class MyClass(): def __init__(self, x): if x == 0: self.object = A() else: self.object = B() def f(self): self.object.f() Saludos -- Linux Registered User # 386081 A menudo unas pocas horas de Prueba y error podrán ahorrarte minutos de leer manuales. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/