Как использовать разрешения, добавленные с помощью библиотеки 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
. Итак, как мне использовать разрешения, может ли кто-нибудь подсказать мне?