I want different functions to be executable only if the logged in user has the required permission level.
To make my life more simple I want to use decorators. Below I attempt to set attribute permission
on 'decorated' functions - as shown below.
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):
...
But when I do:
fn = do_x
if logged_in_user.access_level == fn.permission_required:
...
I get an error 'function' object has no attribute 'permission_required'
What am I missing?