Как использовать разрешения, добавленные с помощью библиотеки django-rules в Django App?

Я создаю Django App, в котором я использую библиотеку django-rules для определения и добавления разрешений.

Я следовал документации и создал предикаты в отдельном файле под названием permissions.py. Я также добавил разрешения в тот же файл. Мой permissions.py выглядит следующим образом:

from .models import WorkspaceMembership

import rules


@rules.predicate
def is_workspace_member(user, workspace):
    workspace_membership = WorkspaceMembership.objects.get_by_member_and_workspace(user, workspace)

    if workspace_membership is not None:
        return workspace_membership.is_workspace_member

    return False

@rules.predicate
def is_workspace_admin(user, workspace):
    workspace_membership = WorkspaceMembership.objects.get_by_member_and_workspace(user, workspace)

    if workspace_membership is not None:
        return workspace_membership.is_workspace_admin

    return False

@rules.predicate
def is_active_member(user, workspace):
    workspace_membership = WorkspaceMembership.objects.get_by_member_and_workspace(user, workspace)

    if workspace_membership is not None:
        return workspace_membership.is_active

    return False

rules.add_perm("accounts.view_workspace", is_workspace_member)
rules.add_perm("accounts.view_workspace", is_workspace_admin)
rules.add_perm("accounts.view_workspace", is_workspace_member | is_workspace_admin)

Теперь я хочу использовать эти разрешения в моих представлениях, основанных на классах, и программно, как показано ниже:

if user.has_permissions("any-permission")

Я не могу понять, как использовать разрешения. Потому что для работы предикатов требуется два объекта, один из которых - экземпляр User, а другой - экземпляр Workspace, которых нет в файле permissions.py. Итак, как мне использовать разрешения, может ли кто-нибудь подсказать мне?

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