Mercurial > kallithea
diff pylons_app/lib/auth.py @ 343:6484963056cd
implemented cache for repeated queries in simplehg mercurial requests
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 14 Jul 2010 12:31:11 +0200 |
parents | 5d517bbf0a0d |
children | 664a5b8c551a |
line wrap: on
line diff
--- a/pylons_app/lib/auth.py Wed Jul 14 02:28:51 2010 +0200 +++ b/pylons_app/lib/auth.py Wed Jul 14 12:31:11 2010 +0200 @@ -22,18 +22,18 @@ @author: marcink """ - +from beaker.cache import cache_region from functools import wraps -from pylons import session, url, request +from pylons import config, session, url, request from pylons.controllers.util import abort, redirect +from pylons_app.lib.utils import get_repo_slug from pylons_app.model import meta from pylons_app.model.db import User, Repo2Perm, Repository, Permission -from pylons_app.lib.utils import get_repo_slug from sqlalchemy.exc import OperationalError from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound import crypt import logging -from pylons import config + log = logging.getLogger(__name__) def get_crypt_password(password): @@ -43,11 +43,17 @@ """ return crypt.crypt(password, '6a') + +@cache_region('super_short_term', 'cached_user') +def get_user_cached(username): + sa = meta.Session + user = sa.query(User).filter(User.username == username).one() + return user + def authfunc(environ, username, password): - sa = meta.Session password_crypt = get_crypt_password(password) try: - user = sa.query(User).filter(User.username == username).one() + user = get_user_cached(username) except (NoResultFound, MultipleResultsFound, OperationalError) as e: log.error(e) user = None