Как отменить разрешение на список с помощью правил django-rules
Я установил django-rules в свой проект, чтобы определить правила для моих действий. Функция list по умолчанию не имеет настроек разрешения, поэтому приходится добавлять их в permission_type_map, как написано здесь, но без эффекта. Для других действий я могу изменить поведение, если я установлю его на is_superuser или что-то еще.
from django.db import models
import rules
from rules.contrib.models import RulesModel
from rules.contrib.rest_framework import AutoPermissionViewSetMixin
from base.models import BaseModel
class Company(RulesModel, BaseModel):
name = models.CharField(max_length=100)
active = models.BooleanField(default=True)
permission_type_map = {
**AutoPermissionViewSetMixin.permission_type_map,
"list": "all",
}
class Meta:
rules_permissions = {
# TODO: rules need to be defined
"add": rules.always_allow,
"view": rules.always_allow,
"delete": rules.always_allow,
"change": rules.always_allow,
"all": rules.is_superuser
}
Что мне здесь не хватает?
Я новичок в django-rules, но из того, что я вижу в docs, вы можете расширять/изменять permission_type_map только при использовании или подклассификации AutoPermissionViewSetMixin. Попробуйте вместо этого определить дикту permission_type_map в классе ViewSet:
from rest_framework import viewsets
from rules.contrib.rest_framework import AutoPermissionViewSetMixin
class MyViewSet(AutoPermissionViewSetMixin, viewsets.ModelViewSet):
permission_type_map = {
**AutoPermissionViewSetMixin.permission_type_map,
"list": "all",
}