[pyar] Multiples usuarios en Django 1.6.5 (Ariel Wolfmann)

Esteban Castro ecastroborsani en gmail.com
Mar Jul 22 16:22:32 ART 2014


Queres agregar un campo tipo al usuario... osea que el usuario no puede ser
comprador y vendedor al mismo tiempo, en ese caso olvidate de lo de la
sesion que te recomendamos antes.

> Para agregar el campo tipo al User de django, tendria que usar el
abstract user y redefinir todos los forms, etc?

Asi es.

Y si al registrarse queres que el usuario ingrese datos que van en el
modelo perfil (vendedor o comprador), seria mejor tener dos registros
separados, y el tipo de usuario lo setteas vos en la view antes de salvarlo.

Si queres agregar "tipo" a los fields de UserAdmin, en un form normal es
facil, en uno de admin se complica:
http://stackoverflow.com/questions/15012235/using-django-auth-useradmin-for-a-custom-user-model

Lo digo basandome en que aparentemente un usuario no puede ser vendedor y
comprador al mismo tiempo.


>class CompradorAdmin(UserAdmin):
>    inlines = (CompradorInline)
>
>class VendedorAdmin(UserAdmin):
>    inlines = (VendedorInline)
>
>En este caso el problema es el register del User..

Deberia funcionar, ¿cual es el error?
En el caso de que funcione, tene en cuenta que tendrias que settear el tipo
al crear. Y ademas filtrar la lista de usuarios por tipo, para que en
vendedor solo te aparezcan los vendedores y en comprador los compradores.


El 22 de julio de 2014, 12:39, Ariel Wolfmann <awolfmann en gmail.com>
escribió:

> Hola, primero que nada gracias por las respuestas.
>
> Luego de leer sus comentarios y seguir investigando, lo que estoy haciendo
> es usar la idea de  User Profiles para guardar los datos relevantes para
> cada tipo de usuario.
> Para agregar el campo tipo al User de django, tendria que usar el abstract
> user y redefinir todos los forms, etc?
>
> Y tendria que tambien redefinir todo para el admin?
> Probe de adaptar este ejemplo, para que el profile sea Inline de User:
>
> https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-the-existing-user-model
>
> Pero no se como hacer para que me aparezcan las 2 opciones(comprador y
> vendedor) desde el admin, solo me aparece user, y cuando creo un nuevo
> user, tengo que completar los datos de ambos perfiles..
>
> basandome en el ejemplo, probé con:
> class UserAdmin(UserAdmin):
>     inlines = (CompradorInline, VendedorInline)
>
> o con
> class CompradorAdmin(UserAdmin):
>     inlines = (CompradorInline)
>
> class VendedorAdmin(UserAdmin):
>     inlines = (VendedorInline)
>
> En este caso el problema es el register del User..
>
>
> Desde ya muchas gracias nuevamente
>
>
> Saludos
>
>
>
>>
>>
>>    2. Re: Multiples usuarios en Django 1.6.5 (Luis Masuelli)
>>    3. Re: Multiples usuarios en Django 1.6.5 (Andres Riancho)
>>    4. Re: Multiples usuarios en Django 1.6.5 (Luis Masuelli)
>>    5. Re: Multiples usuarios en Django 1.6.5 (Esteban Castro)
>>
>>
>> ----------------------------------------------------------------------
>>
>>
>>
>> ------------------------------
>>
>> Message: 2
>> Date: Tue, 22 Jul 2014 16:22:25 +0200
>> From: Luis Masuelli <luismasuelli en hotmail.com>
>> To: Python Argentina <pyar en python.org.ar>
>> Subject: Re: [pyar] Multiples usuarios en Django 1.6.5
>> Message-ID: <BAY174-W28380EE7F71E498610C8A5CAF10 en phx.gbl>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> No banca definir multiples AUTH_USER_MODEL. La onda es que
>> get_user_model() devuelve un modelo (el que esté puesto en
>> AUTH_USER_MODEL). Vas a tener que valerte, al mejor estilo POO, de roles
>> (no me estoy refiriendo, con esto, al esquema de permisos/grupos de Django;
>> me refiero a esta idea de tener multiples perfiles - uno para cada
>> necesidad; obvio el esquema de permisos TAMBIEN es algo de lo que te vas a
>> tener que valer, pero en otro aspecto).
>> El modelo de usuario va a ser el mismo, o uno parecido. El mismo puede
>> ser referenciado por N tablas diferentes - cada una será un perfil
>> diferente (en este caso N=2: perfil de comprador, perfil de vendedor - no
>> sé en qué medida un perfil de staff puede ser necesario, ya que la
>> administración django te la da con el admin).
>> Podrías redefinir has_perm y has_perms en tu modelo de usuario (que
>> debería bajar de AbstractUser o AbstractBaseUser para tener la jodita del
>> mixin de permisos) que hagan lo siguiente:    * si el usuario tiene el
>> perfil de comprador, el metodo responda TRUE para determinado conjunto de
>> permisos.    * si el usuario tiene el perfil de vendedor, el metodo
>> responda TRUE para otro determinado conjunto de permisos.    * si no tiene
>> ningun perfil, o el permiso que se pregunta es otro, que funcione de la
>> forma heredada (super()).
>> Esta sugerencia podría ayudarte a que no te cagues en el DRY.
>> Es tan solo un ejemplo de cómo se me presentaron situaciones similares.
>> No se si es tanto que te puede ayudar para tu caso en particular, sino más
>> bien solamente un guideline.
>> Pero lo que querés, básicamente, se tiene q resolver a manopla.
>>
>> From: awolfmann en gmail.com
>> Date: Mon, 21 Jul 2014 20:07:30 -0300
>> To: pyar en python.org.ar
>> Subject: [pyar] Multiples usuarios en Django 1.6.5
>>
>> Hola,
>> Estoy haciendo un proyecto en Django, para el cual necesito que los
>> usuarios se puedan loguear de 3 formas distintas (Comprador, vendedor y
>> staff), los cuales tienen distintos atributos, por lo que estuve leyendo
>> antes de la version 1.5 se usaba un user profile, pero ahora se permite
>> customizar el usuario.
>>
>>
>> Hay un ejemplo completo en la documentacion de Django, pero solo de
>> AbstractBaseUser, para AbstractUser segui este ejemplo:
>> http://michalcodes4life.wordpress.com/2014/02/08/multiple-user-types-in-django-1-6/
>> el cual me tira de error :
>>
>>
>> OperationalError at /admin/multi/facebookuser/add/
>>
>> no such table: auth_user
>> ya probé haciendo syncdb, y borrando la db y creandola de nuevo y sigue
>> con el mismo error.
>>
>>
>>
>> pero mi pregunta principal seria ¿como definir varios AUTH_USER_MODEL? en
>> el ejemplo de la documentación solo se define uno...
>>
>> Desde ya muchas gracias.
>>
>>
>> Saludos
>>
>> --
>> Ariel Wolfmann
>>
>>
>> _______________________________________________
>> 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/20140722/63813e82/attachment-0001.html
>> >
>>
>> ------------------------------
>>
>> Message: 3
>> Date: Tue, 22 Jul 2014 11:23:56 -0300
>> From: Andres Riancho <andres.riancho en gmail.com>
>> To: Python Argentina <pyar en python.org.ar>
>> Subject: Re: [pyar] Multiples usuarios en Django 1.6.5
>> Message-ID:
>>         <
>> CA+1Rt676TSnmos46kbBzGSypct0_hdiBdW062UW9Y20w550KHQ en mail.gmail.com>
>> Content-Type: text/plain; charset=UTF-8
>>
>> No estoy seguro de que lo estes encarando bien. Lo que yo haría sería
>> tener un unico usuario con su model, y despues hacer que ese usuario
>> pertenezca a tres grupos. Cuando el usuario se logea le aparece un
>> drop-down donde selecciona que perfil quiere para esta ejecucion, eso
>> se guarda en la session y "listo".
>>
>> 2014-07-21 20:07 GMT-03:00 Ariel Wolfmann <awolfmann en gmail.com>:
>> > Hola,
>> >
>> > Estoy haciendo un proyecto en Django, para el cual necesito que los
>> usuarios
>> > se puedan loguear de 3 formas distintas (Comprador, vendedor y staff),
>> los
>> > cuales tienen distintos atributos, por lo que estuve leyendo antes de la
>> > version 1.5 se usaba un user profile, pero ahora se permite customizar
>> el
>> > usuario.
>> >
>> > Hay un ejemplo completo en la documentacion de Django, pero solo de
>> > AbstractBaseUser, para AbstractUser segui este ejemplo:
>> >
>> http://michalcodes4life.wordpress.com/2014/02/08/multiple-user-types-in-django-1-6/
>> > el cual me tira de error :
>> >
>> > OperationalError at /admin/multi/facebookuser/add/
>> >
>> > no such table: auth_user
>> >
>> > ya probé haciendo syncdb, y borrando la db y creandola de nuevo y sigue
>> con
>> > el mismo error.
>> >
>> > pero mi pregunta principal seria ¿como definir varios AUTH_USER_MODEL?
>> en el
>> > ejemplo de la documentación solo se define uno...
>> >
>> >
>> > Desde ya muchas gracias.
>> >
>> > Saludos
>> >
>> >
>> > --
>> > Ariel Wolfmann
>> >
>> > _______________________________________________
>> > 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
>>
>>
>> ------------------------------
>>
>> Message: 4
>> Date: Tue, 22 Jul 2014 16:25:54 +0200
>> From: Luis Masuelli <luismasuelli en hotmail.com>
>> To: Python Argentina <pyar en python.org.ar>
>> Subject: Re: [pyar] Multiples usuarios en Django 1.6.5
>> Message-ID: <BAY174-W19C71DB49B67DBA18CCAAACAF10 en phx.gbl>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> El unico tema con esto que decis es que también parece que deba tener sus
>> propios datos cada "tipo" de usuario. Por eso el pensaba no tanto en los
>> permisos sino tambien incluir modelos de datos.
>>
>> > From: andres.riancho en gmail.com
>> > Date: Tue, 22 Jul 2014 11:23:56 -0300
>> > To: pyar en python.org.ar
>> > Subject: Re: [pyar] Multiples usuarios en Django 1.6.5
>> >
>> > No estoy seguro de que lo estes encarando bien. Lo que yo haría sería
>> > tener un unico usuario con su model, y despues hacer que ese usuario
>> > pertenezca a tres grupos. Cuando el usuario se logea le aparece un
>> > drop-down donde selecciona que perfil quiere para esta ejecucion, eso
>> > se guarda en la session y "listo".
>> >
>> > 2014-07-21 20:07 GMT-03:00 Ariel Wolfmann <awolfmann en gmail.com>:
>> > > Hola,
>> > >
>> > > Estoy haciendo un proyecto en Django, para el cual necesito que los
>> usuarios
>> > > se puedan loguear de 3 formas distintas (Comprador, vendedor y
>> staff), los
>> > > cuales tienen distintos atributos, por lo que estuve leyendo antes de
>> la
>> > > version 1.5 se usaba un user profile, pero ahora se permite
>> customizar el
>> > > usuario.
>> > >
>> > > Hay un ejemplo completo en la documentacion de Django, pero solo de
>> > > AbstractBaseUser, para AbstractUser segui este ejemplo:
>> > >
>> http://michalcodes4life.wordpress.com/2014/02/08/multiple-user-types-in-django-1-6/
>> > > el cual me tira de error :
>> > >
>> > > OperationalError at /admin/multi/facebookuser/add/
>> > >
>> > > no such table: auth_user
>> > >
>> > > ya probé haciendo syncdb, y borrando la db y creandola de nuevo y
>> sigue con
>> > > el mismo error.
>> > >
>> > > pero mi pregunta principal seria ¿como definir varios
>> AUTH_USER_MODEL? en el
>> > > ejemplo de la documentación solo se define uno...
>> > >
>> > >
>> > > Desde ya muchas gracias.
>> > >
>> > > Saludos
>> > >
>> > >
>> > > --
>> > > Ariel Wolfmann
>> > >
>> > > _______________________________________________
>> > > 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/20140722/4e18648a/attachment-0001.html
>> >
>>
>> ------------------------------
>>
>> Message: 5
>> Date: Tue, 22 Jul 2014 11:37:44 -0300
>> From: Esteban Castro <ecastroborsani en gmail.com>
>> To: Python Argentina <pyar en python.org.ar>
>> Subject: Re: [pyar] Multiples usuarios en Django 1.6.5
>> Message-ID:
>>         <CAF=BxX1TYR3CikJ522TbGk8TsCg=
>> YLErG7rNME4rn74bSu6+QQ en mail.gmail.com>
>> Content-Type: text/plain; charset="utf-8"
>>
>> Lo de guardar el tipo de perfil en la sesion es lo que deberias hacer. Y
>> si
>> queres incluir atributos en el modelo para cada tipo de perfil te
>> quedaria:
>> un modelo para usuario (el que viene con django), un modelo nuevo para
>> comprador, otro modelo nuevo para vendedor, los dos con sus respectivos
>> OneToOne al modelo usuario.
>>
>> Lo de extender el abstract solo sirve cuando tenes un unico perfil, ya que
>> te queda todo en una sola tabla.
>>
>>
>> El 22 de julio de 2014, 11:25, Luis Masuelli <luismasuelli en hotmail.com>
>> escribió:
>>
>> > El unico tema con esto que decis es que también parece que deba tener
>> sus
>> > propios datos cada "tipo" de usuario. Por eso el pensaba no tanto en los
>> > permisos sino tambien incluir modelos de datos.
>> >
>> > > From: andres.riancho en gmail.com
>> > > Date: Tue, 22 Jul 2014 11:23:56 -0300
>> > > To: pyar en python.org.ar
>> > > Subject: Re: [pyar] Multiples usuarios en Django 1.6.5
>> >
>> > >
>> > > No estoy seguro de que lo estes encarando bien. Lo que yo haría sería
>> > > tener un unico usuario con su model, y despues hacer que ese usuario
>> > > pertenezca a tres grupos. Cuando el usuario se logea le aparece un
>> > > drop-down donde selecciona que perfil quiere para esta ejecucion, eso
>> > > se guarda en la session y "listo".
>> > >
>> > > 2014-07-21 20:07 GMT-03:00 Ariel Wolfmann <awolfmann en gmail.com>:
>> > > > Hola,
>> > > >
>> > > > Estoy haciendo un proyecto en Django, para el cual necesito que los
>> > usuarios
>> > > > se puedan loguear de 3 formas distintas (Comprador, vendedor y
>> staff),
>> > los
>> > > > cuales tienen distintos atributos, por lo que estuve leyendo antes
>> de
>> > la
>> > > > version 1.5 se usaba un user profile, pero ahora se permite
>> customizar
>> > el
>> > > > usuario.
>> > > >
>> > > > Hay un ejemplo completo en la documentacion de Django, pero solo de
>> > > > AbstractBaseUser, para AbstractUser segui este ejemplo:
>> > > >
>> >
>> http://michalcodes4life.wordpress.com/2014/02/08/multiple-user-types-in-django-1-6/
>> > > > el cual me tira de error :
>> > > >
>> > > > OperationalError at /admin/multi/facebookuser/add/
>> > > >
>> > > > no such table: auth_user
>> > > >
>> > > > ya probé haciendo syncdb, y borrando la db y creandola de nuevo y
>> > sigue con
>> > > > el mismo error.
>> > > >
>> > > > pero mi pregunta principal seria ¿como definir varios
>> AUTH_USER_MODEL?
>> > en el
>> > > > ejemplo de la documentación solo se define uno...
>> > > >
>> > > >
>> > > > Desde ya muchas gracias.
>> > > >
>> > > > Saludos
>> > > >
>> > > >
>> > > > --
>> > > > Ariel Wolfmann
>> > > >
>> > > > _______________________________________________
>> > > > 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
>> >
>> ------------ próxima parte ------------
>> Se ha borrado un adjunto en formato HTML...
>> URL: <
>> http://listas.python.org.ar/pipermail/pyar/attachments/20140722/80f2e507/attachment.html
>> >
>>
>> ------------------------------
>>
>> Subject: Pié de página del digest
>>
>> _______________________________________________
>> 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/
>>
>>
>> ------------------------------
>>
>> Fin de Resumen de pyar, Vol 53, Envío 33
>> ****************************************
>>
>
>
>
> --
> Ariel Wolfmann
>
> _______________________________________________
> 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/20140722/81251394/attachment-0001.html>


More information about the pyar mailing list