Пользовательский пользователь возвращает пустое get_all_permissions()

Я просто пытаюсь начать работать с Permissions, чтобы узнать, как это работает.

В shell у меня пустой результат set(). Я вижу этот вопрос, это то же самое, но я не могу найти, чего не хватает в моем коде:

Я создал Custom User из AbstractBaseUser, поэтому моя модель выглядит следующим образом:

settings.py

...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'users',
]

AUTH_USER_MODEL = 'users.User'

AUTHENTICATION_BACKENDS = [
    'users.backends.CustomModelBackend',
]

models.py

class UserManager(BaseUserManager):
    def create_user(self, email, username, phone, password = None):
    ...
    def create_superuser(self, email, username, phone, password = None):
    ...

class User(AbstractBaseUser, PermissionsMixin):
    ...
    objects = UserManager()
    ...
    
    def __str__(self):
        return self.email
    def has_perm(self, perm, obj=None):
        return True
    def has_module_perms(self, app_label):
        return True  

backends.py

class CustomModelBackend(backends.ModelBackend):
    def user_can_authenticate(self, user):
        return True

В shell я пытаюсь сделать что-то вроде:

>>> from users.models import User
>>> user_test = User.objects.get(email="user@example.com")
>>> user_test.get_all_permissions()
set()

Это user является superuser. И я тестирую его на обычном пользователе, чтобы

EDIT

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

backends.py edit

from django.contrib.auth import backends

def _user_get_permissions(user, obj, from_name):
    permissions = set()
    name = 'get_%s_permissions' % from_name
    for backend in backends.get_backends():
        if hasattr(backend, name):
            permissions.update(getattr(backend, name)(user, obj))
    return permissions

class CustomModelBackend(backends.ModelBackend):
    
    def user_can_authenticate(self, user):
        return True
    
    def _get_user_permissions(self, user_obj):
        return user_obj.user_permissions.all()
    
    def get_all_permissions(self, obj=None):
        return _user_get_permissions(self, obj, 'all')

Ошибка:

...
line 198, in _user_get_permissions
    permissions.update(getattr(backend, name)(user, obj))
TypeError: get_all_permissions() takes from 1 to 2 positional arguments but 3 were given

Что необходимо для проверки этих разрешений?

Для суперпользователя этот список будет пустым. В методе has_perm есть IF для суперпользователя, и он всегда возвращает True для суперпользователя

В моем случае у меня был пользовательский класс User, и я пытался использовать djago-jazzmin для панели администратора. Я получал ошибку, потому что у меня не было метода get_all_permissions в моей пользовательской модели User. Реализация указанного ниже метода решила мою проблему, и я смог успешно загрузить админку jazzmin:

def get_all_permissions(user=None):
    if user.is_superadmin:
        
        return set()
Вернуться на верх