Re: [Python-es] archivo validar sesion

2012-02-12 Por tema jose sanchez
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

2012-02-12 Por tema Raúl Cumplido
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

2012-02-12 Por tema Sergio Fernández
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

2012-02-12 Por tema Jose Caballero
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-02-12 Por tema Carlos Zuniga
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/