Как разрешить конфликты с тем же именем content_type app_label и кодовым именем разрешения в django? - PullRequest
0 голосов
/ 17 октября 2019

ModelBackend Django в _get_permissions собирает список строк с content_type__app_label и разрешением codename, но в модели разрешений по умолчанию эта строка может быть не уникальной (в модели разрешений unique_together = (('content_type', 'codename'),)). Как разрешать конфликты, когда в модуле две модели имеют одинаковое имя разрешения.

Django 2.1

def check_user_perms_by_ct(user, perm_name, ct):
    """
    Verifies user permissions based on permission code name and content type.
    :param user: User object.
    :param perm_name: str.
    :param ct: ContentType object.
    :return: Boolean.
    """
    return user.has_perm(f'{ct.app_label}.{perm_name}')
...