django многопользовательский декоратор разрешений - PullRequest
0 голосов
/ 28 мая 2018

Я работаю над приложением счетов, где у меня есть 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...