Ich mag die folgende Migration auszuführen:Wie kann einem Benutzer/einer Gruppe während einer Django-Migration eine Berechtigung hinzugefügt werden?
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib.auth.models import Permission
from django.db import migrations
from django.conf import settings
from django.contrib.auth.models import Group, User
def add_api_group(apps, schema_editor):
Group.objects.create(name=settings.API_USER_GROUP)
# get_or_create returns a tuple, not a Group
group = Group.objects.get(name=settings.API_USER_GROUP)
permissions = Permission.objects.filter(codename__in = [
'add_topic',
])
group.permissions.add(*permissions)
def add_api_user(apps, schema_editor):
user = User.objects.create_user(username=settings.API_USER, password=settings.API_USER_PASSWORD)
group = Group.objects.get(name=settings.API_USER_GROUP)
user.groups.add(group)
class Migration(migrations.Migration):
dependencies = [
('nd_content', '0001_initial'),
]
operations = [
migrations.RunPython(add_api_group),
migrations.RunPython(add_api_user)
]
In der letzten Zeile der Migration gab ich einen Fehler Ausführung zu stoppen und den Datenbank-Status zu sehen. Das Problem ist, die Tabelle auth_permission
hat immer noch nicht die Berechtigungen eines Modells eines anderen Moduls, obwohl dieses andere Modul als eine Abhängigkeit dieser Migration registriert ist.
Ich kann bestätigen, fehlende Berechtigungen scheinen nur hinzugefügt werden, nachdem alle Migrationen ausgeführt wurden.