Я работаю над приложением счетов, где у меня есть 3 разные роли.У меня есть административный сотрудник, финансовый сотрудник и клиент.
Все представления финансовой части защищены пользовательским декоратором разрешений финансового сотрудника, и то же самое относится и к представлениям администратора и клиента.
Однако я хочу, чтобы у пользователя super сборки django были права доступа ко всем представлениям, но почему-то это не работает.См. Мой пример представления ниже:
@method_decorator(admin_required, name='dispatch')
@method_decorator(financial_employee_required, name='dispatch')
@method_decorator(login_required, name='dispatch')
class InvoiceListView(generic.ListView):
queryset = Invoice.objects.filter(complete=False)
А это декораторы:
def admin_required(function=None,redirect_field_name=REDIRECT_FIELD_NAME,login_url='home'):
actual_decorator = user_passes_test(
lambda u: u.is_active and u.is_superuser,
login_url=login_url,
redirect_field_name=redirect_field_name,
)
if function:
return actual_decorator
def financial_employee_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url='home'):
actual_decorator = user_passes_test(
lambda u: u.is_active and u.is_financial_employee,
login_url=login_url,
redirect_field_name=redirect_field_name,
)
if function:
return actual_decorator(function)
return actual_decorator
Это не работает вообще.Я только смог позволить суперпользователю войти или финансовый сотрудник.Что я делаю неправильно?Как я могу получить доступ к двум разным ролям?Потому что я пытаюсь запретить суперпользователю работать с админкой django.