diff rhodecode/lib/auth.py @ 609:c1c1cf772337

moved out sqlalchemy cache from meta to the config files. added caching query for permissions.
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 12 Oct 2010 16:39:53 +0200
parents ba7e24cd4786
children 79457e03ef68
line wrap: on
line diff
--- a/rhodecode/lib/auth.py	Tue Oct 12 13:03:14 2010 +0200
+++ b/rhodecode/lib/auth.py	Tue Oct 12 16:39:53 2010 +0200
@@ -27,6 +27,7 @@
 from pylons.controllers.util import abort, redirect
 from rhodecode.lib.utils import get_repo_slug
 from rhodecode.model import meta
+from rhodecode.model.caching_query import FromCache
 from rhodecode.model.db import User, RepoToPerm, Repository, Permission, \
     UserToPerm
 from sqlalchemy.exc import OperationalError
@@ -141,7 +142,9 @@
     @param user:
     """
     sa = meta.Session
-    dbuser = sa.query(User).get(user.user_id)
+    dbuser = sa.query(User).options(FromCache('sql_cache_short',
+                                              'getuser_%s' % user.user_id))\
+        .get(user.user_id)
     if dbuser:
         user.username = dbuser.username
         user.is_admin = dbuser.admin
@@ -166,11 +169,14 @@
     #===========================================================================
     # fetch default permissions
     #===========================================================================
+    default_user = sa.query(User)\
+        .options(FromCache('sql_cache_short','getuser_%s' % 'default'))\
+        .filter(User.username == 'default').scalar()
+                                            
     default_perms = sa.query(RepoToPerm, Repository, Permission)\
         .join((Repository, RepoToPerm.repository_id == Repository.repo_id))\
         .join((Permission, RepoToPerm.permission_id == Permission.permission_id))\
-        .filter(RepoToPerm.user == sa.query(User).filter(User.username == 
-                                            'default').scalar()).all()
+        .filter(RepoToPerm.user == default_user).all()
                                             
     if user.is_admin:
         #=======================================================================