Mercurial > kallithea
diff rhodecode/lib/auth.py @ 629:7e536d1af60d beta
Code refactoring,models renames
cleaned up sqlalchemy sessions,
added cache support to most queries in models
fixed test.ini file
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Thu, 21 Oct 2010 01:38:14 +0200 |
parents | 79457e03ef68 |
children | dd532af216d9 |
line wrap: on
line diff
--- a/rhodecode/lib/auth.py Wed Oct 20 18:11:11 2010 +0200 +++ b/rhodecode/lib/auth.py Thu Oct 21 01:38:14 2010 +0200 @@ -22,16 +22,13 @@ @author: marcink """ -from beaker.cache import cache_region from pylons import config, session, url, request 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 -from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound + UserToPerm import bcrypt from decorator import decorator import logging @@ -74,22 +71,10 @@ def check_password(password, hashed): return bcrypt.hashpw(password, hashed) == hashed -@cache_region('super_short_term', 'cached_user') -def get_user_cached(username): - sa = meta.Session - try: - user = sa.query(User).filter(User.username == username).one() - finally: - meta.Session.remove() - return user - def authfunc(environ, username, password): - try: - user = get_user_cached(username) - except (NoResultFound, MultipleResultsFound, OperationalError), e: - log.error(e) - user = None - + from rhodecode.model.user import UserModel + user = UserModel().get_by_username(username, cache=False) + if user: if user.active: if user.username == username and check_password(password, user.password): @@ -125,8 +110,10 @@ """ log.info('getting information about all available permissions') try: - sa = meta.Session + sa = meta.Session() all_perms = sa.query(Permission).all() + except: + pass finally: meta.Session.remove() @@ -141,10 +128,16 @@ in database :param user: """ - sa = meta.Session - dbuser = sa.query(User).options(FromCache('sql_cache_short', - 'getuser_%s' % user.user_id))\ + sa = meta.Session() + try: + dbuser = sa.query(User)\ + .options(FromCache('sql_cache_short', 'getuser_%s' % user.user_id))\ .get(user.user_id) + except: + pass + finally: + meta.Session.remove() + if dbuser: user.username = dbuser.username user.is_admin = dbuser.admin @@ -153,7 +146,8 @@ user.email = dbuser.email else: user.is_authenticated = False - meta.Session.remove() + + return user def fill_perms(user): @@ -162,7 +156,7 @@ :param user: """ - sa = meta.Session + sa = meta.Session() user.permissions['repositories'] = {} user.permissions['global'] = set() @@ -170,7 +164,7 @@ # fetch default permissions #=========================================================================== default_user = sa.query(User)\ - .options(FromCache('sql_cache_short','getuser_%s' % 'default'))\ + .options(FromCache('sql_cache_short', 'getuser_%s' % 'default'))\ .filter(User.username == 'default').scalar() default_perms = sa.query(RepoToPerm, Repository, Permission)\