def change_permission_required(func): @wraps(func, assigned=available_attrs(func)) def wrapper(user, page, site=None): if not user_can_change_page(user, page, site=site): return False return func(user, page, site=site) return wrapper
def skip_if_permissions_disabled(func): @wraps(func, assigned=available_attrs(func)) def wrapper(user, page, site=None): if not get_cms_setting('PERMISSION'): return True return func(user, page, site=site) return wrapper
def cached_func(func): @wraps(func, assigned=available_attrs(func)) def cached_func(user, *args, **kwargs): func_cache_name = '_djangocms_cached_func_%s' % func.__name__ if not hasattr(user, func_cache_name): cached_func = lru_cache(maxsize=None)(func) setattr(user, func_cache_name, cached_func) return getattr(user, func_cache_name)(user, *args, **kwargs) # Allows us to access the un-cached function cached_func.without_cache = func return cached_func
def decorator(func): @wraps(func, assigned=available_attrs(func)) def wrapper(user, *args, **kwargs): if not user.is_authenticated: return False permissions = _django_permissions_by_action[action] if not user.has_perms(permissions): # Fail fast if the user does not have permissions # in Django to perform the action. return False permissions_enabled = get_cms_setting('PERMISSION') if not user.is_superuser and permissions_enabled: return func(user, *args, **kwargs) return True return wrapper