[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Papo-hackers] Dudas insertando un nuevo objeto
From: |
John Lenton |
Subject: |
Re: [Papo-hackers] Dudas insertando un nuevo objeto |
Date: |
Wed, 23 Jun 2004 17:48:35 -0300 |
User-agent: |
Mutt/1.3.28i |
Sender: John Lenton <address@hidden>
On Wed, Jun 23, 2004 at 04:16:37PM -0400, Visualnex wrote:
> Hola:
> Tengo las siguientes dudas...
>
> **** En general
> Cual es el uso de __obligs
> Cual es el uso de _processArgs
Eso es parte de Cimarrón, así que lo puedo explicar yo! :)
todas las clases tenían constructores que hacían esencilmente lo
mismo, algo parecido a
def __init__(self, arg1=None, arg2=None, **kw):
if arg1 is not None:
self.setArg1(arg1)
if arg2 is not None:
self.setArg2(arg2)
super(Foo, self).__init__(**kw)
if not hasattr(self, 'attr1'):
self.attr1 = constructor1()
entonces las clases que heredan de MagicArgs (esencialmente, todas las
clases concrtas y algunas de las abastractas) tienen atributos de
clase __kwargs (una lista de argumentos a quitar del inicializador y a
usar para la inicialización) y __obligs (un diccionario de nombre de
atributo, constructor a ser llamado si ese atributo no existe después
de que la inicialización ha terminado).
Esto está documentado, de alguna manera, en la documentación de
MagicArgs; el tema es que son todos metodos protegidos o privados, con
lo cual no aparecen en la salida de 'pydoc'...
> Por ejemplo en el modulo Country.py y otros:
>
> __obligs= {'model': lambda: Country ()}
en realidad eso tendría que ser {'model': Country} a secas, pero
funcionalmente es lo mismo.
> def __init__ (self, *args, **kwargs):
> kwargs.update ({'windowTitle': u'ABM de pais','model': Country (),
> 'modelClass': Country,})
> self._processArgs(Main, kwargs)
> self.buildUI ()
hmm ... no era mi intención que se usara así, pero funciona.
> **** Para agregar un objeto nuevo a la base:
> La funcion lambda: Country() devuelve un objeto instanciado de la clase
> Country, segun la definio Modeling en Model/PAPOv2/country.py ?
>
> Suponiendo que es asi, cuando pulso el boton "Nuevo", solamente genera un
> objeto Country() vacio.
> Lo modifico en la pantalla "datos" y pulso "Guardar"
> Se llama al metodo "save" de la class "ConsistentController" y esta al "save"
> de la class "DIAEditingContext". Pero, no es necesario insertar
> ANTES el nuevo objeto Country() en el EditingContext ? donde se haria (o se
> hace, si no lo vi...) ,en que metodo.
ahí ya entramos en las cosas que hizo Marcos; si efectivamente al
hacer 'save' no se hace el insert y el saveChanges contra el ec, no va
a pasar nada en la base de datos; esto explicaría lo que observabas de
que los inserts no llegaban a ningún lado.
--
John Lenton (address@hidden) -- Random fortune:
Ver un buey volar, a muchos necios oí afirmar.