- Não criar as permissões padrões automaticamente (add, delete, view, read).
- Criar roles com conjuntos de permissões através de grupos.
- Alterar o padrão de código de permissão que é add_model, delete_model, para app_label.model.add, app_label.view.access.
- Poder adicionar permissões default para todas as classes do app.
A app custom_permissions
faz o patch de duas funções no django.contrib.auth
.
Uma delas é responsável pelo formato e outra pela lista de permissões padrões.
- Copie a pasta
custom_permissions
para o seu projeto. - Instale a app
custom_permissions
noINSTALLED_APPS
antes dodjango.contrib.auth
.
git clone git@github.com:henriquebastos/django-custom-permissions.git
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python manage.py migrate -v 3
python -c 'import sqlite3; print(sqlite3.connect("db.sqlite3").cursor().execute("SELECT * from auth_permission").fetchall())'
O resultado deve ser:
[(1, 7, 'core.blog.rename', 'Can rename title.'), (2, 7, 'core.blog.publish', 'Can publish post.')]
Nota: Observe que no migrate apenas as permissões explícitas do modelo Blog
serão criadas.