Я работаю с библиотекой правил из Django и не могу определить правила для конкретного меню.
Библиотека правил доступна там: библиотека правил
Я зарегистрирован как admin
в моем веб-приложении.
У меня есть menus.py файл, подобный этому:
class AdminMenuItem(MenuItem):
def check(self, request):
return self.allow(request.user)
@staticmethod
def allow(user):
return user.has_perm('app.access_admin_menu')
Menu.add_item('admin', MenuItem('Admin', '#admin', children=settings_children,
check=lambda request: AdminMenuItem.allow(request.user)))
settings_children = (
...
AdminMenuItem("Manage Animals", reverse("animal-list-crud"), weight=10),
AdminMenuItem("Statistics", reverse("statistics"), weight=140)
)
Тогда я определил в своем rules.py file:
from rules.permissions import add_perm
from rules.predicates import predicate
@predicate
def is_admin(user):
if user.is_anonymous:
return False
return True if user.profile.type == 'ED' and user.profile.role == 'AD' else False
# Rules for admin_menu.
add_perm('app.access_admin_menu', is_admin)
# Rules for animal.
add_perm('app.view_animal', is_admin)
add_perm('app.add_animal', is_admin)
add_perm('app.change_animal', is_admin)
add_perm('app.delete_animal', is_admin)
Отлично работает для меню Animal (это часть CRUD).Но когда я пытаюсь получить доступ к части статистики (которая не является CRUD), у меня появляется ошибка 403 Access forbidden
.
Я что-то забыл в своем коде?
Спасибо