Я пытаюсь настроить декоратор login_required из пакета Flask-Login. Я прочитал исходный код и имитировал синтаксис.Функции обертки в Python 3.4 отсутствует требуемый позиционный аргумент
Mine:
def login_role_required(f, req_roles=['any']):
@wraps(f)
def decorated_view(*args, **kwargs):
if current_app.login_manager._login_disabled:
return f(*args, **kwargs)
if not current_user.is_authenticated():
return current_app.login_manager.unauthorized()
if req_roles == ['any']:
return f(*args, **kwargs)
user_roles = current_user.get_roles
# Check to make sure all required roles are had by user
for r in req_roles:
if r not in user_roles:
current_app.login_manager.unauthorized()
return f(*args, **kwargs)
return decorated_view
Источник:
def login_required(func):
@wraps(func)
def decorated_view(*args, **kwargs):
if current_app.login_manager._login_disabled:
return func(*args, **kwargs)
elif not current_user.is_authenticated():
return current_app.login_manager.unauthorized()
return func(*args, **kwargs)
return decorated_view
Пожалуйста, простите плохой отступ от копирования/вставки.
Задача: Когда я использую свою функцию для обертывания, она не может получить первый аргумент, f (функция).
@app.route('/shutdown', methods=['POST'])
@login_role_required(req_roles=['admin'])
def shutdown_server():
pass
TypeError: login_role_required() missing 1 required positional argument: 'f'
Должно быть что-то маленькое, я делаю не так-ловко. Спасибо за ваше время.
Благодарим вас за то, что вы так поняли, тыкайте! –