[pyar] [django] Extender modelo de una reusable app con metodos nuevos

Luis Masuelli luismasuelli en hotmail.com
Mie Sep 18 13:57:11 ART 2013


Se, bueno de la misma forma q lo haces con los campos hacelo con los metodos. Si querés dejalo sujeto a un nombre configurable (en mi caso el metodo es seteado a un atributo cuyo nombre puede ser elegido en el settings, y luego internamente se accede a ese atributo de acuerdo a la configuración) si te da cuiqui de que alguien más pueda colisionar con otro monkeypatching.

> From: andres.riancho en gmail.com
> Date: Wed, 18 Sep 2013 13:42:51 -0300
> To: pyar en python.org.ar
> Subject: Re: [pyar] [django] Extender modelo de una reusable app con metodos	nuevos
> 
> Luis,
> 
> 2013/9/18 Luis Masuelli <luismasuelli en hotmail.com>:
> > Va a ser croto MUY CROTO lo que te voy a decir, pero yo estoy haciendo eso
> > en una aplicacion para que a propósito "extienda" el modelo que sea que se
> > use como usuario (es decir: extienda el modelo que se obtiene mediante
> > get_user_model()).
> >
> > Lo que hiciste de los campos es algo mas o menos nuevo para mi :p.
> >
> > En cuanto a los metodos la cosa es mas sencilla, por lejos, aunque
> > desprolija:
> >
> > from django.contrib.auth import get_user_model
> > UserClass = get_user_model()
> > def mi_metodo(self, parametros...):
> >     pass #cambia esto por el código que le quieras poner
> > UserClass.metodo = mi_metodo
> >
> > No es algo para nada de django, es python puro,
> 
> Claro, eso es monkey-patching, algo que pense que no iba a tener que
> hacer pero con cada respuesta que voy recibiendo me parece que me
> acerco mas a eso... En general cuando pregunto cosas como esto, espero
> que alguien responda: "No seas bruto, la manera documentada para hacer
> esto es XYZ!". Por lo que veo, o nadie la sabe o no existe.
> 
> > y una vez atroden UserClass
> > va a tener un atributo de tipo UnboundMethod que va a ... bueno el resto es
> > la magia interna de python para cualquier clase new-style.
> >
> > ________________________________
> > Date: Wed, 18 Sep 2013 12:40:24 -0300
> > From: rafael.ferrero en gmail.com
> > To: pyar en python.org.ar
> > Subject: Re: [pyar] [django] Extender modelo de una reusable app con metodos
> > nuevos
> >
> >
> > El 18 de septiembre de 2013 12:33, Daniel Moisset <dmoisset en machinalis.com>
> > escribió:
> >
> > si realmente le queres meter mano a la otra clase y lo haces por
> > monkeypatching, me parece que puede ser mas manejable escribir un mixin, y
> > agregarlo al bases de la clase que monkeypatcheas, asi podes tener todo mas
> > o menos junto.
> >
> > Si solo queres tener unos metodos extra, por ahi usar proxy models es la
> > forma mas estandar en django de hacerlo
> >
> > Saludos,
> >     D.
> >
> >
> >
> > 2013/9/18 Andres Riancho <andres.riancho en gmail.com>
> >
> > Rafael,
> >
> >     No lo probe realmente, pero asumo que no va a andar porque despues
> > la reusable app no va a usar "bar" para hacer todas las cosas de
> > manera interna, va a seguir usando su "foo" (porque va importar ese
> > objeto desde la reusable app, no el "bar" que yo modifique). Ademas
> > asumo que va a haber problemas con los modelos a nivel de BD
> >
> > 2013/9/18 Rafael E. Ferrero <rafael.ferrero en gmail.com>:
> >> no se yo me imagino:
> >>
> >>
> >> from reusable_app.models impor foo
> >>
> >> class bar(foo):
> >>     my_new_field = models....
> >>
> >>    def mi_methodo()
> >>
> >>
> >>
> >> El 18 de septiembre de 2013 12:09, Andres Riancho
> >> <andres.riancho en gmail.com>
> >> escribió:
> >>>
> >>> Lista,
> >>>
> >>>     Estoy intentando extender un modelo de una reusable app de la mejor
> >>> manera posible. Hasta ahora, y como habia solo extendido el modelo con
> >>> nuevos fields use `contribute_to_class`:
> >>>
> >>> from reusable_app import Foo
> >>> models.CharField(max_length=255).contribute_to_class(Foo,
> >>> 'short_description')
> >>>
> >>>     Eso me funciono bien, pero ahora estoy queriendo extender el modelo
> >>> con metodos nuevos. No encontre una manera documentada/soportada/correcta
> >>> de
> >>> hacer esto, existe? Estoy queriendo evitar  mantener mi propio fork de la
> >>> reusable app, entiendo que podria copiar toda la app a mi repositorio,
> >>> modificarla, agregarla a INSTALLED_APPS, etc. pero no lo veo como una
> >>> buena
> >>> practica.
> >>>
> >>>     Lo que si encontre fue django-extend-model [0], una reusable
> >>> application que te permite monkey-patchear la clase del modelo original
> >>> para
> >>> extenderla con nuevos fields y metodos. Alguien la usa?
> >>>
> >>> [0] https://github.com/mikexstudios/django-extend-model
> >>>
> >>> Saludos,
> >>> --
> >>> Andrés Riancho
> >>> Project Leader at w3af - http://w3af.org/
> >>> Web Application Attack and Audit Framework
> >>> Twitter: @w3af
> >>> GPG: 0x93C344F3
> >>>
> >>> _______________________________________________
> >>> pyar mailing list pyar en python.org.ar
> >>> http://listas.python.org.ar/listinfo/pyar
> >>>
> >>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>>
> >>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> >>> Argentina - http://www.usla.org.ar
> >>
> >>
> >>
> >>
> >> --
> >> Rafael E. Ferrero
> >>
> >> _______________________________________________
> >> pyar mailing list pyar en python.org.ar
> >> http://listas.python.org.ar/listinfo/pyar
> >>
> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>
> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> >> Argentina - http://www.usla.org.ar
> >
> >
> >
> > --
> > Andrés Riancho
> > Project Leader at w3af - http://w3af.org/
> > Web Application Attack and Audit Framework
> > Twitter: @w3af
> > GPG: 0x93C344F3
> > _______________________________________________
> > pyar mailing list pyar en python.org.ar
> > http://listas.python.org.ar/listinfo/pyar
> >
> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >
> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> > Argentina - http://www.usla.org.ar
> >
> >
> >
> > _______________________________________________
> > pyar mailing list pyar en python.org.ar
> > http://listas.python.org.ar/listinfo/pyar
> >
> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >
> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> > Argentina - http://www.usla.org.ar
> >
> >
> > Yo los seguí hasta lo de monkeypatching, ahí tiré la chancleta jaja... yo
> > pensaba más en extender la reusable_app en una aplicación propia y usar la
> > aplicación propia. Más o menos como lo que se suele usar cuando se extiende
> > de auth (extendes auth para darle más datos a User, para sobreescribir
> > métodos o lo que sea) pero despues usas tu clase extendida.
> >
> > Desconozco cuáles son tus requerimientos, pero la pensé por ese lado.
> >
> > Saludos,
> >
> > --
> > Rafael E. Ferrero
> >
> > _______________________________________________ pyar mailing list
> > pyar en python.org.ar http://listas.python.org.ar/listinfo/pyar PyAr - Python
> > Argentina - Sitio web: http://www.python.org.ar/ La lista de PyAr esta
> > Hosteada en USLA - Usuarios de Software Libre de Argentina -
> > http://www.usla.org.ar
> >
> > _______________________________________________
> > pyar mailing list pyar en python.org.ar
> > http://listas.python.org.ar/listinfo/pyar
> >
> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >
> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> > Argentina - http://www.usla.org.ar
> 
> 
> 
> -- 
> Andrés Riancho
> Project Leader at w3af - http://w3af.org/
> Web Application Attack and Audit Framework
> Twitter: @w3af
> GPG: 0x93C344F3
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
> 
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> 
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130918/f55449c8/attachment.html>


More information about the pyar mailing list