Source code for restae.decorators

"""
Decorators
"""


[docs]def action(methods=None, detail=None, url_path=None, param_name=None): """ Mark a Handler method as a routable action. Set the `detail` boolean to determine if this action should apply to instance/detail requests or collection/list requests. """ methods = ['get'] if (methods is None) else methods methods = [method.lower() for method in methods] assert detail is not None, ( "@action() missing required argument: 'detail'" ) if param_name is not None: assert detail is not True, ( "@action() cannot have a 'param_name' when 'detail' is set to False" ) def decorator(func): func.is_dynamic_action = True func.methods = methods func.detail = detail func.url_path = url_path if url_path else func.__name__ func.mapping = { _method: func.url_path for _method in func.methods } return func return decorator