Разрешения django не добавляются в группы

Я создал проект с x приложениями.

Моя цель - создать группы с прикрепленными к ним разрешениями, которые заполняют таблицы auth - 'auth_groups' 'auth_permissions' и 'auth_group_permissions' при первоначальной миграции & migrate

Установленные приложения обновлены, пробовал с именем приложения, т.е. "morgue" и "morgue.apps.MorgueConfig" - использовал терминал для проверки приложений в классе apps.

база данных: пробовал и в mysql, и в sqlite3

Проблема: Я просто пытаюсь прикрепить стандартные пермы django к группам.

Проблема в том, что некоторые группы & permissions combo работают, а другие не добавляют разрешения группе.

У меня есть 10 групп 6 будут делать то, что требуется, 4 не будут.

~ смотрите мой код ниже, как я пытался сделать это.

мой код:

from django.contrib.auth.management import create_permissions
from django.contrib.auth.models import Group, Permission
from django.db import migrations 

class Populator(object):
    def populate_groups(apps, schema_editor):

        # Create user groups
        user_roles = [
            "Admin only",
            "Morgue only",
        ]

    for name in user_roles:
        Group.objects.create(name=name)

        for app_config in apps.get_app_configs():
            app_config.models_module = True
            create_permissions(app_config, verbosity=0)
            app_config.models_module = None

        all_perms = Permission.objects.all()  - does return all permissions

        # morgue - 'i substituted for permission.content_type.app_label, does exist in database'
        morgue_perms = [i for i in all_perms if i.content_type.app_label == "morgue"]
        # group  is created 
        Group.objects.get(name="Morgue only").permissions.add(*morgue_perms)         


class Migration(migrations.Migration):

    # dependencies = [("management", "0001_initial")]

    operations = [migrations.RunPython(Populator.populate_groups)]

Обнаружено:

  • при миграции создаются все необходимые разрешения
  • при миграции создаются все необходимые группы

я пробовал использовать только операторы for и if вместо понимания списка [выше] безрезультатно

  • Я воссоздал приложение, т.е. 'morgue', используя команду startapp, на всякий случай, если файл в существующем приложении был поврежден, скопировав только форму, модель, представления, url и шаблон из существующего приложения.

  • Я могу использовать оболочку для заполнения групп с разрешениями

  • проверьте все разрешения и т.д. и group.permissions

    .
  • проверьте, что возвращает apps.get_app_configs()()

Я проверил базу данных, чтобы увидеть, что изменения вступают в силу 'mysql' и 'sqlite3'

На каждой итерации проверки или тестирования я удалял существующие миграции, базу данных и таблицы, а после внесения изменений в код применял миграцию и миграцию.

Я мог бы, вероятно, просто создать вид & шаблон приборной панели и обрабатывать все там, поскольку группы находятся в базе данных, как и разрешения, и, вероятно, просто установить начальную группу и разрешение только для сопровождающего и техподдержки.

Требуется помощь или просто другой взгляд на проблему

Вернуться на верх