Django: meta permission en administración

Si alguna vez os toca jugar con ACL (listas de control de acceso) en Django, además de *todo* lo que trae por defecto, es muy sencillo definir nuevos permisos para utilizar en tu aplicación, basta con agregar al método Meta del modelo un par de sencillas lineas y podremos propagar los permisos por todo el software:

class Task(models.Model):
    ...
    class Meta:
        permissions = (
            ("view_task", "Can see available tasks"),
            ("change_task_status", "Can change the status of tasks"),
            ("close_task", "Can remove a task by setting its status as closed"),
        )

Lo que no pone tan claro en la documentación es que si estás trabajando con South, para que los nuevos permisos aparezcan en la administración de Django, no llega con hacer un simple syncdb, tendremos que pasarle el parámetro --all:

$ ./manage syncdb --all

Referencias:

django code

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.