# HG changeset patch # User RhodeCode Admin # Date 2023-03-28 08:33:16 # Node ID 4102d6ca14c4ead9dbe989cb96fdbfb54ac15cb4 # Parent cd837e83b51cdb53584ceb7ff920a015d44d8b62 caches: cleanup code - emails from cache should skip default user as that user does not have extra emails diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -693,13 +693,15 @@ class User(Base, BaseModel): return [self.email] + [x.email for x in other] def emails_cached(self): - emails = UserEmailMap.query()\ - .filter(UserEmailMap.user == self) \ - .order_by(UserEmailMap.email_id.asc()) - - emails = emails.options( - FromCache("sql_cache_short", "get_user_{}_emails".format(self.user_id)) - ) + emails = [] + if self.user_id != self.get_default_user_id(): + emails = UserEmailMap.query()\ + .filter(UserEmailMap.user == self) \ + .order_by(UserEmailMap.email_id.asc()) + + emails = emails.options( + FromCache("sql_cache_short", f"get_user_{self.user_id}_emails") + ) return [self.email] + [x.email for x in emails] @@ -724,7 +726,7 @@ class User(Base, BaseModel): .filter(UserApiKeys.role == UserApiKeys.ROLE_FEED) if cache: feed_tokens = feed_tokens.options( - FromCache("sql_cache_short", "get_user_feed_token_%s" % self.user_id)) + FromCache("sql_cache_short", f"get_user_feed_token_{self.user_id}")) feed_tokens = feed_tokens.all() if feed_tokens: @@ -744,7 +746,7 @@ class User(Base, BaseModel): if cache: artifacts_tokens = artifacts_tokens.options( - FromCache("sql_cache_short", "get_user_artifact_token_%s" % self.user_id)) + FromCache("sql_cache_short", f"get_user_artifact_token_{self.user_id}")) artifacts_tokens = artifacts_tokens.all() if artifacts_tokens: @@ -777,7 +779,7 @@ class User(Base, BaseModel): user = cls.query() if cache: user = user.options( - FromCache("sql_cache_short", "get_users_%s" % user_id)) + FromCache("sql_cache_short", f"get_users_{user_id}")) return user.get(user_id) @classmethod @@ -858,7 +860,7 @@ class User(Base, BaseModel): @property def username_or_name_or_email(self): - full_name = self.full_name if self.full_name is not ' ' else None + full_name = self.full_name if self.full_name != ' ' else None return self.username or full_name or self.email @property @@ -943,7 +945,7 @@ class User(Base, BaseModel): UserApiKeys.expires >= time.time())) if cache: q = q.options( - FromCache("sql_cache_short", "get_auth_token_%s" % auth_token)) + FromCache("sql_cache_short", f"get_auth_token_{auth_token}")) match = q.first() if match: @@ -961,7 +963,7 @@ class User(Base, BaseModel): email_key = _hash_key(email) if cache: q = q.options( - FromCache("sql_cache_short", "get_email_key_%s" % email_key)) + FromCache("sql_cache_short", f"get_email_key_{email_key}")) ret = q.scalar() if ret is None: @@ -974,7 +976,7 @@ class User(Base, BaseModel): q = q.options(joinedload(UserEmailMap.user)) if cache: q = q.options( - FromCache("sql_cache_short", "get_email_map_key_%s" % email_key)) + FromCache("sql_cache_short", f"get_email_map_key_{email_key}")) ret = getattr(q.scalar(), 'user', None) return ret @@ -1486,8 +1488,9 @@ class UserGroup(Base, BaseModel): else: q = cls.query().filter(cls.users_group_name == group_name) if cache: + name_key = _hash_key(group_name) q = q.options( - FromCache("sql_cache_short", "get_group_%s" % _hash_key(group_name))) + FromCache("sql_cache_short", f"get_group_{name_key}")) return q.scalar() @classmethod diff --git a/rhodecode/model/repo.py b/rhodecode/model/repo.py --- a/rhodecode/model/repo.py +++ b/rhodecode/model/repo.py @@ -107,7 +107,7 @@ class RepoModel(BaseModel): if cache: name_key = _hash_key(repo_name) repo = repo.options( - FromCache("sql_cache_short", "get_repo_%s" % name_key)) + FromCache("sql_cache_short", f"get_repo_{name_key}")) return repo.scalar() def _extract_id_from_repo_name(self, repo_name): diff --git a/rhodecode/model/repo_group.py b/rhodecode/model/repo_group.py --- a/rhodecode/model/repo_group.py +++ b/rhodecode/model/repo_group.py @@ -80,7 +80,7 @@ class RepoGroupModel(BaseModel): if cache: name_key = _hash_key(repo_group_name) repo = repo.options( - FromCache("sql_cache_short", "get_repo_group_%s" % name_key)) + FromCache("sql_cache_short", f"get_repo_group_{name_key}")) return repo.scalar() def get_default_create_personal_repo_group(self): diff --git a/rhodecode/model/user.py b/rhodecode/model/user.py --- a/rhodecode/model/user.py +++ b/rhodecode/model/user.py @@ -58,7 +58,7 @@ class UserModel(BaseModel): user = self.sa.query(User) if cache: user = user.options( - FromCache("sql_cache_short", "get_user_%s" % user_id)) + FromCache("sql_cache_short", f"get_user_{user_id}")) return user.get(user_id) def get_user(self, user): @@ -118,7 +118,7 @@ class UserModel(BaseModel): if cache: name_key = _hash_key(username) user = user.options( - FromCache("sql_cache_short", "get_user_%s" % name_key)) + FromCache("sql_cache_short", f"get_user_{name_key}")) return user.scalar() def get_by_email(self, email, cache=False, case_insensitive=False):