@@ -23,6 +23,8 @@ fixes
- fixes #368 improved git-protocol detection to handle other clients
- fixes #366 When Setting Repository Group To Blank Repo Group Wont Be
Moved To Root
- fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
1.3.1 (**2012-02-27**)
----------------------
@@ -24,6 +24,7 @@ from beaker.exceptions import BeakerExce
from sqlalchemy.orm.interfaces import MapperOption
from sqlalchemy.orm.query import Query
from sqlalchemy.sql import visitors
from rhodecode.lib import safe_str
class CachingQuery(Query):
@@ -137,9 +138,10 @@ def _get_cache_parameters(query):
if cache_key is None:
# cache key - the value arguments from this query's parameters.
args = [str(x) for x in _params_from_query(query)]
args.extend(filter(lambda k:k not in ['None', None, u'None'],
args = [safe_str(x) for x in _params_from_query(query)]
args.extend(filter(lambda k: k not in ['None', None, u'None'],
[str(query._limit), str(query._offset)]))
cache_key = " ".join(args)
@@ -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
@@ -418,8 +424,11 @@ class UsersGroup(Base, BaseModel):
else:
q = cls.query().filter(cls.users_group_name == group_name)
"get_user_%s" % group_name))
"get_user_%s" % _hash_key(group_name)
@@ -748,8 +757,11 @@ class RepoGroup(Base, BaseModel):
gr = cls.query()\
.filter(cls.group_name == group_name)
gr = gr.options(FromCache("sql_cache_short",
"get_group_%s" % group_name))
gr = gr.options(FromCache(
"get_group_%s" % _hash_key(group_name)
return gr.scalar()
@property
Status change: