diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -44,6 +44,7 @@ from rhodecode.lib.compat import json from rhodecode.lib.caching_query import FromCache from rhodecode.model.meta import Base, Session +import hashlib log = logging.getLogger(__name__) @@ -52,6 +53,8 @@ log = logging.getLogger(__name__) # BASE CLASSES #============================================================================== +_hash_key = lambda k: hashlib.md5(safe_str(k)).hexdigest() + class ModelSerializer(json.JSONEncoder): """ @@ -337,8 +340,11 @@ class User(Base, BaseModel): q = cls.query().filter(cls.username == username) if cache: - q = q.options(FromCache("sql_cache_short", - "get_user_%s" % username)) + q = q.options(FromCache( + "sql_cache_short", + "get_user_%s" % _hash_key(username) + ) + ) return q.scalar() @classmethod @@ -394,7 +400,7 @@ class UserLog(Base, BaseModel): return datetime.date(*self.action_date.timetuple()[:3]) user = relationship('User') - repository = relationship('Repository',cascade='') + repository = relationship('Repository', cascade='') class UsersGroup(Base, BaseModel): @@ -406,6 +412,7 @@ class UsersGroup(Base, BaseModel): users_group_active = Column("users_group_active", Boolean(), nullable=True, unique=None, default=None) members = relationship('UsersGroupMember', cascade="all, delete, delete-orphan", lazy="joined") + users_group_to_perm = relationship('UsersGroupToPerm', cascade='all') def __repr__(self): return '' % (self.users_group_name) @@ -418,8 +425,11 @@ class UsersGroup(Base, BaseModel): else: q = cls.query().filter(cls.users_group_name == group_name) if cache: - q = q.options(FromCache("sql_cache_short", - "get_user_%s" % group_name)) + q = q.options(FromCache( + "sql_cache_short", + "get_user_%s" % _hash_key(group_name) + ) + ) return q.scalar() @classmethod @@ -748,8 +758,11 @@ class RepoGroup(Base, BaseModel): gr = cls.query()\ .filter(cls.group_name == group_name) if cache: - gr = gr.options(FromCache("sql_cache_short", - "get_group_%s" % group_name)) + gr = gr.options(FromCache( + "sql_cache_short", + "get_group_%s" % _hash_key(group_name) + ) + ) return gr.scalar() @property @@ -1038,7 +1051,7 @@ class CacheInvalidation(Base, BaseModel) prefix = '' iid = rhodecode.CONFIG.get('instance_id') if iid: - prefix = iid + prefix = iid return "%s%s" % (prefix, key) @classmethod