[pyar] multiples organizaciones en django

Ariel Montenegro montenegroariel en gmail.com
Mie Abr 1 11:27:16 ART 2015


Que tal gente, les comento como lo terminamos resolviendo, seguro rompi
varios standares en el camino pero es como quedo.


# Heredo Permissions
from django.contrib.auth.models import Permission

class Permiso(Permission):

# En el view agrego un create para crear los permisos personalizados

class PermisoCreateView(CreateView):
    model = Permiso

# Creo los permisos personalizados

Nombre: Can add Clientes Sucursal1
Content type: clientes # app a asignar el permiso
Nombre en código: add_cliente_suc1 (suc1 es un campo 'abreviatura' de la
organizacion para poder identificarlo mas facil al asignar los permisos )

# Creo un filtro para poder enviar la abreviatura de la organizacion como
parametro
#  en templatetags/perms_cliente.py

from django import template
register = template.Library()

@register.filter
def add_cliente(abrev, perms):
    return 'clientes.add_cliente_%s' % abrev in perms

# Envio por context la abreviatura de la sucursal en el views.py de clientes

class ClienteCreateView(CreateView):
    model = Cliente

    def get_context_data(self, *args, **kwargs):
        context = super(ClienteCreateView, self).get_context_data(*args,
**kwargs)
        context['abreviatura_organizacion'] =
Organziacion.objects.get(pk=id)  #id de la organizacion en la cual esta
logeado
        return context

# En el clientes_form.html pregunto si el usuario tiene el permiso para
agregar clientes

{% load perms_cliente %} # cargo el filtro

{% if abreviatura_organizacion|add_cliente:perms %}
{{ form.as_p }}
<input type="submit">
{% endif %}

El tema es que se va a tener por cada sucursal un permiso especifico,
add_cliente_suc1, add_cliente_suc2, add_cliente_suc3, pero de esa forma se
puede asignar permisos especificos a cada usuario.

Es medio rebuscado pero funciona :)

gracias a todos!!














El 30 de marzo de 2015, 7:38 p. m., Ariel Montenegro<
montenegroariel en gmail.com> escribió:

> Gracias a todos por las respuestas, desde el template al hacer {{
> perms.add_clientes }} por ejemplo, no hay forma de que sepa en que
> organizacion tiene ese permiso, si lo hago por grupos los permisos
> particulares que tenga el usuario serian los mismos en la organizacion X
> como en la organizacion Y, lo que se me ocurre es heredar Permissions de
> django.comtrib.auth y lo relaciono con un FK a organizaciones. Al crear el
> permiso le pongo de nombre algo como add_clienes_X, add_clientes_Y de esta
> forma diferncio estos permisos, el asunto es como los llamo desde el
> template con algo como {{ perms.add_clientes_? }}.
>
> Voy a seguir viendo como resolverlo, gracias a todos :)
>
> Saludos!!!
>
> El 30 de marzo de 2015, 4:50 p. m., Ariel Gerardo Ríos<
> arielgerardorios en gmail.com> escribió:
>
>> Hola Ariel. Pensando en voz alta, podrías crear un grupo para cada
>> organización y crear permisos customizados cada vez que agregas un usuario
>> a una organización (deberías tener una lista de permisos por organización
>> que pudieras clonar en algún lado). Creo que lo podrías hacer con una señal
>> post_save en el modelo Group. Ahora, la validación de permisos la vas a
>> tener que hacer medio a mano me parece.
>>
>> Saludos.
>> El mar 27, 2015 10:58 a.m., "Ariel Montenegro" <montenegroariel en gmail.com>
>> escribió:
>>
>>> Que tal, los molesto porque surgió la idea de crear una aplicación en
>>> django que sirva para varias organizaciones, el problema que no logro
>>> resolver es el de permisos, ya que un usuario puede estar en varias
>>> organizaciones pero tendría permisos diferentes.
>>> Por defecto el panel de administración provee grupos y usuarios los
>>> cuales pueden tener permisos específicos por cada app, pero no existe un
>>> nivel superior el cual agrupe groups and users :)
>>> La idea es capturar la organización a la que pertenece el usuario y
>>> cargar los permisos específicos de la misma.
>>>
>>> Alguien que se haya planteado lo mismo?
>>>
>>> Desde ya muchas gracias
>>>
>>>
>>>
>>> --
>>>
>>> *Ariel Montenegro*
>>>
>>> _______________________________________________
>>> 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
>>
>
>
>
> --
>
> *Ariel Montenegro*
>



-- 

*Ariel Montenegro*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150401/a8e83dce/attachment.html>


More information about the pyar mailing list