Mercurial > kallithea
changeset 8345:f6be760c786c
auth: simplify AuthUser.permissions and how it actually never use cache
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Sun, 12 Apr 2020 02:43:56 +0200 |
parents | aec1b9c9ffe6 |
children | f787c028ffc0 |
files | kallithea/lib/auth.py kallithea/lib/utils.py |
diffstat | 2 files changed, 12 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/auth.py Sun Oct 20 04:57:04 2019 +0200 +++ b/kallithea/lib/auth.py Sun Apr 12 02:43:56 2020 +0200 @@ -40,7 +40,7 @@ from webob.exc import HTTPForbidden, HTTPFound from kallithea.config.routing import url -from kallithea.lib.utils import conditional_cache, get_repo_group_slug, get_repo_slug, get_user_group_slug +from kallithea.lib.utils import get_repo_group_slug, get_repo_slug, get_user_group_slug from kallithea.lib.utils2 import ascii_bytes, ascii_str, safe_bytes from kallithea.lib.vcs.utils.lazy import LazyProperty from kallithea.model.db import (Permission, User, UserApiKeys, UserGroup, UserGroupMember, UserGroupRepoGroupToPerm, UserGroupRepoToPerm, UserGroupToPerm, @@ -433,7 +433,15 @@ @LazyProperty def permissions(self): - return self.__get_perms(user=self, cache=False) + """ + Fills user permission attribute with permissions taken from database + works for permissions given for repositories, and for permissions that + are granted to groups + + :param user: `AuthUser` instance + """ + log.debug('Getting PERMISSION tree for %s', self) + return _cached_perms_data(self.user_id, self.is_admin) def has_repository_permission_level(self, repo_name, level, purpose=None): required_perms = { @@ -475,22 +483,6 @@ def api_keys(self): return self._get_api_keys() - def __get_perms(self, user, cache=False): - """ - Fills user permission attribute with permissions taken from database - works for permissions given for repositories, and for permissions that - are granted to groups - - :param user: `AuthUser` instance - """ - user_id = user.user_id - user_is_admin = user.is_admin - - log.debug('Getting PERMISSION tree') - compute = conditional_cache('short_term', 'cache_desc', - condition=cache, func=_cached_perms_data) - return compute(user_id, user_is_admin) - def _get_api_keys(self): api_keys = [self.api_key] for api_key in UserApiKeys.query() \
--- a/kallithea/lib/utils.py Sun Oct 20 04:57:04 2019 +0200 +++ b/kallithea/lib/utils.py Sun Apr 12 02:43:56 2020 +0200 @@ -610,9 +610,8 @@ def conditional_cache(region, prefix, condition, func): """ - Conditional caching function use like:: - def _c(arg): + def func(arg): #heavy computation function return data @@ -623,8 +622,7 @@ :param region: name of cache region :param prefix: cache region prefix :param condition: condition for cache to be triggered, and return data cached - :param func: wrapped heavy function to compute - + :param func: heavy function to compute """ wrapped = func if condition: