Coding, iPython

Django: Como añadir un grupo a usuarios nuevos mediante señal

@brberis
March 19, 2016

signals django

Para evitarnos la tarea de asignar permisos cada vez que un usuario es registrado y realizar este procedimiento automáticamente debemos trabajar con grupos y Django.signals.

Primero debemos crear un grupo donde asignaremos los permisos por defecto para usuarios recien registrados. Luego vamos a importar en models.py de nuestra app el método post_save. También debemos importar User y Group de contrib.auth.models.

	
	from django.db.models.signals import post_save
from django.contrib.auth.models import User, Group

El objetivo es enviar una señal mediante el método post_save cada vez que un usuario se registra; por formulario, por social.auth o por consola administrativa. el metodo que recibe esta señal es el siguiente snippet que debe estar en alguna parte de nuestro models.py.

 

	
	def add_to_default_group(sender, **kwargs):
    user = kwargs["instance"]
    if kwargs["created"]:
        group = Group.objects.get(name='new_user')
        user.groups.add(group)

post_save.connect(add_to_default_group, sender=User)
 

En este caso el grupo por defecto donde los usuarios seran asignados se llama new_user.

Mediante post_save.connect() llamamos al método.

 

Testeado en Django 1.8.8

 

 

 

 

 

blog comments powered by Disqus