2012-04-08 10 views
7

La documentación de autorización/autenticación para Django 1.4 proporciona el siguiente fragmento de la creación de permisos personalizados mediante programación:¿Cuándo crear programáticamente permisos personalizados de Django?

Editar: (me gustaría emplear esto para permisos que se no necesariamente ligada a una clase específica del modelo, pero los permisos más generales que abarcan varios tipos.)

from django.contrib.auth.models import Group, Permission 
from django.contrib.contenttypes.models import ContentType 

content_type = ContentType.objects.get(app_label='myapp', model='BlogPost') 
permission = Permission.objects.create(codename='can_publish', 
             name='Can Publish Posts', 
             content_type=content_type) 

Source

Mi pregunta es donde este código debe colocarse. Obviamente, solo deberían crearse una vez, pero no quiero tener que hacerlo en el shell. Parece que esto debería almacenarse en un archivo en alguna parte. (Por razones de documentación.)

Respuesta

2

Por lo general, basta con agregar los permisos necesarios a la clase de modelo correspondiente con el atributo de meta permissions.

Esto es de la official documentation:

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"), 
     ) 
+0

Lo siento, debería haber aclarado - esto es para los permisos globales, o permisos que no están vinculados a una clase específica del modelo. –

+2

Ya veo. ¿Qué pasa si lo almacena en un accesorio? – aruseni

+0

Soy muy nuevo en Python y Django, pero una búsqueda rápida en Google indica que los accesorios podrían ser una buena solución. Voy a hurgar, gracias! –

Cuestiones relacionadas