декоратор для установки атрибутов функции
Я хочу, чтобы разные функции выполнялись только в том случае, если вошедший в систему пользователь имеет требуемый уровень разрешений.
Чтобы сделать мою жизнь сложнее, я просто хочу использовать декораторы. Ниже я пытаюсь установить атрибутpermission
наукрашен' функции - как показано ниже.
def permission(permission_required):
def wrapper(func):
def inner(*args, **kwargs):
setattr(func, 'permission_required', permission_required)
return func(*args, **kwargs)
return inner
return wrapper
@permission('user')
def do_x(arg1, arg2):
...
@permission('admin')
def do_y(arg1, arg2):
...
Но, когда я делаю:
fn = do_x
if logged_in_user.access_level == fn.permission_required:
...
Я получаю ошибку'function' object has no attribute 'permission_required'
Что мне не хватает?