Changeset - 7e536d1af60d
rhodecode/config/environment.py
Show inline comments
 
@@ -6,7 +6,7 @@ from rhodecode.config.routing import mak
 
from rhodecode.lib.auth import set_available_permissions, set_base_path
 
from rhodecode.lib.utils import repo2db_mapper, make_ui, set_rhodecode_config
 
from rhodecode.model import init_model
 
from rhodecode.model.hg_model import _get_repos_cached_initial
 
from rhodecode.model.hg import _get_repos_cached_initial
 
from sqlalchemy import engine_from_config
 
import logging
 
import os
rhodecode/controllers/admin/permissions.py
Show inline comments
 
@@ -30,10 +30,9 @@ from pylons.i18n.translation import _
 
from rhodecode.lib import helpers as h
 
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.model.db import User, UserLog
 
from rhodecode.model.forms import UserForm, DefaultPermissionsForm
 
from rhodecode.model.permission_model import PermissionModel
 
from rhodecode.model.user_model import UserModel
 
from rhodecode.model.user import UserModel
 
import formencode
 
import logging
 
import traceback
rhodecode/controllers/admin/repos.py
Show inline comments
 
@@ -35,8 +35,8 @@ from rhodecode.lib.base import BaseContr
 
from rhodecode.lib.utils import invalidate_cache, action_logger
 
from rhodecode.model.db import User
 
from rhodecode.model.forms import RepoForm
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.repo_model import RepoModel
 
from rhodecode.model.hg import HgModel
 
from rhodecode.model.repo import RepoModel
 
import formencode
 
import logging
 
import traceback
rhodecode/controllers/admin/settings.py
Show inline comments
 
@@ -32,12 +32,12 @@ from rhodecode.lib.auth import LoginRequ
 
    HasPermissionAnyDecorator
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.lib.utils import repo2db_mapper, invalidate_cache, \
 
    set_rhodecode_config, get_hg_settings, get_hg_ui_settings, make_ui
 
from rhodecode.model.db import User, UserLog, RhodeCodeSettings, RhodeCodeUi
 
    set_rhodecode_config, get_hg_settings, get_hg_ui_settings
 
from rhodecode.model.db import RhodeCodeSettings, RhodeCodeUi
 
from rhodecode.model.forms import UserForm, ApplicationSettingsForm, \
 
    ApplicationUiSettingsForm
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.user_model import UserModel
 
from rhodecode.model.hg import HgModel
 
from rhodecode.model.user import UserModel
 
from rhodecode.lib.celerylib import tasks, run_task
 
import formencode
 
import logging
 
@@ -231,7 +231,7 @@ class SettingsController(BaseController)
 
        GET /_admin/my_account Displays info about my account 
 
        """
 
        # url('admin_settings_my_account')
 
        c.user = self.sa.query(User).get(c.rhodecode_user.user_id)
 
        c.user = UserModel(self.sa).get(c.rhodecode_user.user_id, cache=False)
 
        c.user_repos = []
 
        for repo in c.cached_repo_list.values():
 
            if repo.dbrepo.user.username == c.user.username:
 
@@ -270,7 +270,7 @@ class SettingsController(BaseController)
 
                    category='success')
 
                           
 
        except formencode.Invalid, errors:
 
            c.user = self.sa.query(User).get(c.rhodecode_user.user_id)
 
            c.user = user_model.get(c.rhodecode_user.user_id, cache=False)
 
            c.user_repos = []
 
            for repo in c.cached_repo_list.values():
 
                if repo.dbrepo.user.username == c.user.username:
rhodecode/controllers/admin/users.py
Show inline comments
 
@@ -33,7 +33,7 @@ from rhodecode.lib.auth import LoginRequ
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.model.db import User, UserLog
 
from rhodecode.model.forms import UserForm
 
from rhodecode.model.user_model import UserModel, DefaultUserException
 
from rhodecode.model.user import UserModel, DefaultUserException
 
import formencode
 
import logging
 
import traceback
 
@@ -100,7 +100,7 @@ class UsersController(BaseController):
 
        #           method='put')
 
        # url('user', id=ID)
 
        user_model = UserModel()
 
        c.user = user_model.get_user(id)
 
        c.user = user_model.get(id)
 
        
 
        _form = UserForm(edit=True, old_data={'user_id':id,
 
                                              'email':c.user.email})()
rhodecode/controllers/branches.py
Show inline comments
 
@@ -26,7 +26,7 @@ from pylons import tmpl_context as c
 
from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.lib.utils import OrderedDict
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
import logging
 
log = logging.getLogger(__name__)
 

	
rhodecode/controllers/changelog.py
Show inline comments
 
@@ -32,7 +32,7 @@ from mercurial.graphmod import colored, 
 
from pylons import request, session, tmpl_context as c
 
from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
from webhelpers.paginate import Page
 
import logging
 
log = logging.getLogger(__name__)
rhodecode/controllers/changeset.py
Show inline comments
 
@@ -27,7 +27,7 @@ from pylons.i18n.translation import _
 
from pylons.controllers.util import redirect
 
from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
from vcs.exceptions import RepositoryError, ChangesetError
 
from vcs.nodes import FileNode
 
from vcs.utils import diffs as differ
rhodecode/controllers/feed.py
Show inline comments
 
@@ -24,7 +24,7 @@ feed controller for pylons
 
"""
 
from pylons import tmpl_context as c, url, response
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed
 
import logging
 
log = logging.getLogger(__name__)
rhodecode/controllers/files.py
Show inline comments
 
@@ -29,7 +29,7 @@ from pylons.controllers.util import redi
 
from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.lib.utils import EmptyChangeset
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
from vcs.exceptions import RepositoryError, ChangesetError
 
from vcs.nodes import FileNode
 
from vcs.utils import diffs as differ
rhodecode/controllers/hg.py
Show inline comments
 
@@ -26,7 +26,7 @@ from operator import itemgetter
 
from pylons import tmpl_context as c, request
 
from rhodecode.lib.auth import LoginRequired
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
import logging
 
log = logging.getLogger(__name__)
 

	
rhodecode/controllers/login.py
Show inline comments
 
@@ -31,7 +31,7 @@ from rhodecode.lib.base import BaseContr
 
import rhodecode.lib.helpers as h 
 
from pylons.i18n.translation import _
 
from rhodecode.model.forms import LoginForm, RegisterForm, PasswordResetForm
 
from rhodecode.model.user_model import UserModel
 
from rhodecode.model.user import UserModel
 
import formencode
 
import logging
 

	
 
@@ -55,7 +55,7 @@ class LoginController(BaseController):
 
            try:
 
                c.form_result = login_form.to_python(dict(request.POST))
 
                username = c.form_result['username']
 
                user = UserModel().get_user_by_name(username)
 
                user = UserModel().get_by_username(username)
 
                auth_user = AuthUser()
 
                auth_user.username = user.username
 
                auth_user.is_authenticated = True
 
@@ -89,7 +89,7 @@ class LoginController(BaseController):
 
    def register(self):
 
        user_model = UserModel()
 
        c.auto_active = False
 
        for perm in user_model.get_default().user_perms:
 
        for perm in user_model.get_by_username('default', cache=False).user_perms:
 
            if perm.permission.permission_name == 'hg.register.auto_activate':
 
                c.auto_active = True
 
                break
rhodecode/controllers/settings.py
Show inline comments
 
@@ -30,7 +30,7 @@ from rhodecode.lib.auth import LoginRequ
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.lib.utils import invalidate_cache, action_logger
 
from rhodecode.model.forms import RepoSettingsForm, RepoForkForm
 
from rhodecode.model.repo_model import RepoModel
 
from rhodecode.model.repo import RepoModel
 
import formencode
 
import logging
 
import rhodecode.lib.helpers as h
rhodecode/controllers/shortlog.py
Show inline comments
 
@@ -25,7 +25,7 @@ shortlog controller for pylons
 
from pylons import tmpl_context as c, request
 
from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
from webhelpers.paginate import Page
 
import logging
 
log = logging.getLogger(__name__)
rhodecode/controllers/summary.py
Show inline comments
 
@@ -26,7 +26,7 @@ from pylons import tmpl_context as c, re
 
from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.lib.utils import OrderedDict
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
from rhodecode.model.db import Statistics
 
from webhelpers.paginate import Page
 
from rhodecode.lib.celerylib import run_task
rhodecode/controllers/tags.py
Show inline comments
 
@@ -26,7 +26,7 @@ from pylons import tmpl_context as c
 
from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.lib.utils import OrderedDict
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
import logging
 
log = logging.getLogger(__name__)
 

	
rhodecode/lib/auth.py
Show inline comments
 
@@ -22,7 +22,6 @@ Created on April 4, 2010
 

	
 
@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
 
@@ -30,8 +29,6 @@ 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
 
import bcrypt
 
from decorator import decorator
 
import logging
 
@@ -74,21 +71,9 @@ def get_crypt_password(password):
 
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:
 
@@ -125,8 +110,10 @@ def set_available_permissions(config):
 
    """
 
    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 @@ def fill_data(user):
 
    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 @@ def fill_data(user):
 
        user.email = dbuser.email
 
    else:
 
        user.is_authenticated = False
 
    meta.Session.remove()
 
        
 
    
 
    return user
 
            
 
def fill_perms(user):
 
@@ -162,7 +156,7 @@ def fill_perms(user):
 
    :param user:
 
    """
 
    
 
    sa = meta.Session
 
    sa = meta.Session()
 
    user.permissions['repositories'] = {}
 
    user.permissions['global'] = set()
 
    
rhodecode/lib/base.py
Show inline comments
 
@@ -9,7 +9,7 @@ from rhodecode import __version__
 
from rhodecode.lib import auth
 
from rhodecode.lib.utils import get_repo_slug
 
from rhodecode.model import meta
 
from rhodecode.model.hg_model import _get_repos_cached, \
 
from rhodecode.model.hg import _get_repos_cached, \
 
    _get_repos_switcher_cached
 

	
 
class BaseController(WSGIController):
 
@@ -31,7 +31,7 @@ class BaseController(WSGIController):
 
                c.repository_tags = {}
 
                c.repository_branches = {}
 
                    
 
        self.sa = meta.Session
 
        self.sa = meta.Session()
 
    
 
    def __call__(self, environ, start_response):
 
        """Invoke the Controller"""
rhodecode/lib/celerylib/tasks.py
Show inline comments
 
@@ -38,7 +38,7 @@ def get_session():
 
    else:
 
        #If we don't use celery reuse our current application Session
 
        from rhodecode.model.meta import Session
 
        sa = Session
 
        sa = Session()
 
        
 
    return sa
 

	
 
@@ -285,7 +285,7 @@ def send_email(recipients, subject, body
 
@task
 
def create_repo_fork(form_data, cur_user):
 
    import os
 
    from rhodecode.model.repo_model import RepoModel
 
    from rhodecode.model.repo import RepoModel
 
    sa = get_session()
 
    rm = RepoModel(sa)
 
    
rhodecode/lib/db_manage.py
Show inline comments
 
@@ -48,7 +48,7 @@ class DbManage(object):
 
        dburi = 'sqlite:////%s' % jn(self.root, self.dbname)
 
        engine = create_engine(dburi, echo=log_sql) 
 
        init_model(engine)
 
        self.sa = meta.Session
 
        self.sa = meta.Session()
 
        self.db_exists = False
 
    
 
    def check_for_db(self, override):
rhodecode/lib/hooks.py
Show inline comments
 
@@ -59,7 +59,7 @@ def user_action_mapper(ui, repo, hooktyp
 
    """
 
    
 
    try:
 
        sa = meta.Session
 
        sa = meta.Session()
 
        username = kwargs['url'].split(':')[-1]
 
        user_log = sa.query(UserLog)\
 
            .filter(UserLog.user == sa.query(User)\
rhodecode/lib/indexers/__init__.py
Show inline comments
 
from os.path import dirname as dn, join as jn
 
from rhodecode.config.environment import load_environment
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
from shutil import rmtree
 
from webhelpers.html.builder import escape
 
from vcs.utils.lazy import LazyProperty
rhodecode/lib/indexers/daemon.py
Show inline comments
 
@@ -33,7 +33,7 @@ project_path = dn(dn(dn(dn(os.path.realp
 
sys.path.append(project_path)
 

	
 
from rhodecode.lib.pidlock import LockHeld, DaemonLock
 
from rhodecode.model.hg_model import HgModel
 
from rhodecode.model.hg import HgModel
 
from rhodecode.lib.helpers import safe_unicode
 
from whoosh.index import create_in, open_dir
 
from shutil import rmtree
rhodecode/lib/middleware/simplehg.py
Show inline comments
 
@@ -30,10 +30,10 @@ from mercurial.hgweb import hgweb
 
from mercurial.hgweb.request import wsgiapplication
 
from paste.auth.basic import AuthBasicAuthenticator
 
from paste.httpheaders import REMOTE_USER, AUTH_TYPE
 
from rhodecode.lib.auth import authfunc, HasPermissionAnyMiddleware, \
 
    get_user_cached
 
from rhodecode.lib.auth import authfunc, HasPermissionAnyMiddleware
 
from rhodecode.lib.utils import is_mercurial, make_ui, invalidate_cache, \
 
    check_repo_fast, ui_sections
 
from rhodecode.model.user import UserModel
 
from webob.exc import HTTPNotFound, HTTPForbidden, HTTPInternalServerError
 
from rhodecode.lib.utils import action_logger
 
import logging
 
@@ -163,7 +163,7 @@ class SimpleHg(object):
 
        return environ.get('REMOTE_USER')
 

	
 
    def __get_user(self, username):
 
        return get_user_cached(username)
 
        return UserModel().get_by_username(username, cache=True)
 

	
 
    def __get_action(self, environ):
 
        """
rhodecode/lib/utils.py
Show inline comments
 
@@ -22,10 +22,12 @@ Created on April 18, 2010
 
Utilities for RhodeCode
 
@author: marcink
 
"""
 
from beaker.cache import cache_region
 
from rhodecode.model.caching_query import FromCache
 
from mercurial import ui, config, hg
 
from mercurial.error import RepoError
 
from rhodecode.model import meta
 
from rhodecode.model.user import UserModel
 
from rhodecode.model.repo import RepoModel
 
from rhodecode.model.db import Repository, User, RhodeCodeUi, RhodeCodeSettings, UserLog
 
from vcs.backends.base import BaseChangeset
 
from vcs.utils.lazy import LazyProperty
 
@@ -67,13 +69,13 @@ def action_logger(user, action, repo, ip
 
    """
 

	
 
    if not sa:
 
        sa = meta.Session
 
        sa = meta.Session()
 

	
 
    try:
 
        if hasattr(user, 'user_id'):
 
            user_id = user.user_id
 
        elif isinstance(user, basestring):
 
            user_id = sa.query(User).filter(User.username == user).one()
 
            user_id = UserModel(sa).get_by_username(user, cache=False).user_id
 
        else:
 
            raise Exception('You have to provide user object or username')
 

	
 
@@ -82,8 +84,7 @@ def action_logger(user, action, repo, ip
 
        user_log.user_id = user_id
 
        user_log.action = action
 
        user_log.repository_name = repo_name
 
        user_log.repository = sa.query(Repository)\
 
            .filter(Repository.repo_name == repo_name).one()
 
        user_log.repository = RepoModel(sa).get(repo_name, cache=False)
 
        user_log.action_date = datetime.datetime.now()
 
        user_log.user_ip = ipaddr
 
        sa.add(user_log)
 
@@ -135,11 +136,14 @@ def ask_ok(prompt, retries=4, complaint=
 
        if retries < 0: raise IOError
 
        print complaint
 

	
 
@cache_region('super_short_term', 'cached_hg_ui')
 
def get_hg_ui_cached():
 
    try:
 
        sa = meta.Session
 
        ret = sa.query(RhodeCodeUi).all()
 
        ret = sa.query(RhodeCodeUi)\
 
        .options(FromCache("sql_cache_short", "get_hg_ui_settings"))\
 
        .all()
 
    except:
 
        pass
 
    finally:
 
        meta.Session.remove()
 
    return ret
 
@@ -147,8 +151,12 @@ def get_hg_ui_cached():
 

	
 
def get_hg_settings():
 
    try:
 
        sa = meta.Session
 
        ret = sa.query(RhodeCodeSettings).all()
 
        sa = meta.Session()
 
        ret = sa.query(RhodeCodeSettings)\
 
        .options(FromCache("sql_cache_short", "get_hg_settings"))\
 
        .all()
 
    except:
 
        pass
 
    finally:
 
        meta.Session.remove()
 

	
 
@@ -162,8 +170,10 @@ def get_hg_settings():
 

	
 
def get_hg_ui_settings():
 
    try:
 
        sa = meta.Session
 
        sa = meta.Session()
 
        ret = sa.query(RhodeCodeUi).all()
 
    except:
 
        pass
 
    finally:
 
        meta.Session.remove()
 

	
 
@@ -255,11 +265,11 @@ def invalidate_cache(name, *args):
 
    args = tuple(tmp)
 

	
 
    if name == 'cached_repo_list':
 
        from rhodecode.model.hg_model import _get_repos_cached
 
        from rhodecode.model.hg import _get_repos_cached
 
        region_invalidate(_get_repos_cached, None, *args)
 

	
 
    if name == 'full_changelog':
 
        from rhodecode.model.hg_model import _full_changelog_cached
 
        from rhodecode.model.hg import _full_changelog_cached
 
        region_invalidate(_full_changelog_cached, None, *args)
 

	
 
class EmptyChangeset(BaseChangeset):
 
@@ -296,15 +306,14 @@ def repo2db_mapper(initial_repo_list, re
 
    """
 
    maps all found repositories into db
 
    """
 
    from rhodecode.model.repo_model import RepoModel
 

	
 
    sa = meta.Session
 
    sa = meta.Session()
 
    user = sa.query(User).filter(User.admin == True).first()
 

	
 
    rm = RepoModel()
 

	
 
    for name, repo in initial_repo_list.items():
 
        if not sa.query(Repository).filter(Repository.repo_name == name).scalar():
 
        if not RepoModel(sa).get(name, cache=False):
 
            log.info('repository %s not found creating default', name)
 

	
 
            form_data = {
 
@@ -429,7 +438,7 @@ class OrderedDict(dict, DictMixin):
 

	
 

	
 
#===============================================================================
 
# TEST FUNCTIONS
 
# TEST FUNCTIONS AND CREATORS
 
#===============================================================================
 
def create_test_index(repo_location, full_index):
 
    """Makes default test index
rhodecode/model/forms.py
Show inline comments
 
@@ -26,18 +26,17 @@ from pylons import session
 
from pylons.i18n.translation import _
 
from rhodecode.lib.auth import check_password, get_crypt_password
 
from rhodecode.model import meta
 
from rhodecode.model.user_model import UserModel
 
from rhodecode.model.db import User, Repository
 
from sqlalchemy.exc import OperationalError
 
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
 
from rhodecode.model.user import UserModel
 
from rhodecode.model.repo import RepoModel
 
from rhodecode.model.db import User
 
from webhelpers.pylonslib.secure_form import authentication_token
 
import formencode
 
import logging
 
import os
 
import rhodecode.lib.helpers as h
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
#this is needed to translate the messages using _() in validators
 
class State_obj(object):
 
    _ = staticmethod(_)
 
@@ -60,17 +59,15 @@ def ValidUsername(edit, old_data):
 
        def validate_python(self, value, state):
 
            if value in ['default', 'new_user']:
 
                raise formencode.Invalid(_('Invalid username'), value, state)
 
            #check if user is uniq
 
            sa = meta.Session
 
            #check if user is unique
 
            old_un = None
 
            if edit:
 
                old_un = sa.query(User).get(old_data.get('user_id')).username
 
                old_un = UserModel().get(old_data.get('user_id')).username
 
                
 
            if old_un != value or not edit:    
 
                if sa.query(User).filter(User.username == value).scalar():
 
                if UserModel().get_by_username(value, cache=False):
 
                    raise formencode.Invalid(_('This username already exists') ,
 
                                             value, state)
 
            meta.Session.remove()
 
                            
 
    return _ValidUsername   
 
    
 
@@ -95,7 +92,7 @@ class ValidAuth(formencode.validators.Fa
 
    def validate_python(self, value, state):
 
        password = value['password']
 
        username = value['username']
 
        user = UserModel().get_user_by_name(username)
 
        user = UserModel().get_by_username(username)
 
        if user is None:
 
            raise formencode.Invalid(self.message('invalid_password',
 
                                     state=State_obj), value, state,
 
@@ -120,8 +117,9 @@ class ValidAuth(formencode.validators.Fa
 
class ValidRepoUser(formencode.validators.FancyValidator):
 
            
 
    def to_python(self, value, state):
 
        sa = meta.Session()
 
        try:
 
            self.user_db = meta.Session.query(User)\
 
            self.user_db = sa.query(User)\
 
                .filter(User.active == True)\
 
                .filter(User.username == value).one()
 
        except Exception:
 
@@ -141,11 +139,9 @@ def ValidRepoName(edit, old_data):
 
                raise formencode.Invalid(_('This repository name is disallowed'),
 
                                         value, state)
 
            if old_data.get('repo_name') != value or not edit:    
 
                sa = meta.Session
 
                if sa.query(Repository).filter(Repository.repo_name == slug).scalar():
 
                if RepoModel().get(slug, cache=False):
 
                    raise formencode.Invalid(_('This repository already exists') ,
 
                                             value, state)
 
                meta.Session.remove()
 
            return slug 
 
        
 
        
 
@@ -213,7 +209,7 @@ def UniqSystemEmail(old_data):
 
    class _UniqSystemEmail(formencode.validators.FancyValidator):
 
        def to_python(self, value, state):
 
            if old_data.get('email') != value:
 
                sa = meta.Session
 
                sa = meta.Session()
 
                try:
 
                    user = sa.query(User).filter(User.email == value).scalar()
 
                    if user:
rhodecode/model/hg.py
Show inline comments
 
file renamed from rhodecode/model/hg_model.py to rhodecode/model/hg.py
 
@@ -25,7 +25,6 @@ Model for RhodeCode
 
from beaker.cache import cache_region
 
from mercurial import ui
 
from mercurial.hgweb.hgwebdir_mod import findrepos
 
from pylons.i18n.translation import _
 
from rhodecode.lib import helpers as h
 
from rhodecode.lib.utils import invalidate_cache
 
from rhodecode.lib.auth import HasRepoPermissionAny
rhodecode/model/permission_model.py
Show inline comments
 
@@ -23,8 +23,8 @@ Model for permissions
 
@author: marcink
 
"""
 

	
 
from pylons.i18n.translation import _
 
from rhodecode.model.db import User, Permission, UserToPerm, RepoToPerm
 
from rhodecode.model.caching_query import FromCache
 
from rhodecode.model.meta import Session
 
import logging
 
import traceback
 
@@ -33,28 +33,35 @@ log = logging.getLogger(__name__)
 

	
 
class PermissionModel(object):
 

	
 
    def __init__(self):
 
    def __init__(self, sa=None):
 
        if not sa:
 
        self.sa = Session() 
 
    
 
    def get_default(self):
 
        return self.sa.query(User).filter(User.username == 'default').scalar()
 
        else:
 
            self.sa = sa
 
    
 
    def get_permission(self, id):
 
        return self.sa.query(Permission).get(id)
 
    def get_permission(self, permission_id, cache=False):
 
        perm = self.sa.query(Permission)
 
        if cache:
 
            perm = perm.options(FromCache("sql_cache_short",
 
                                          "get_permission_%s" % permission_id))
 
        return perm.get(permission_id)
 
    
 
    def get_permission_by_name(self, name):
 
        return self.sa.query(Permission)\
 
        .filter(Permission.permission_name == name).scalar()
 
    
 
    def get_permission_by_name(self, name, cache=False):
 
        perm = self.sa.query(Permission)\
 
            .filter(Permission.permission_name == name)
 
        if cache:
 
            perm = perm.options(FromCache("sql_cache_short",
 
                                          "get_permission_%s" % name))
 
        return perm.scalar()
 
    
 
    def update(self, form_result):
 
        perm_user = self.sa.query(User)\
 
                .filter(User.username == form_result['perm_user_name']).scalar()
 
        u2p = self.sa.query(UserToPerm).filter(UserToPerm.user == perm_user).all()
 
        if len(u2p) != 3:
 
            raise Exception('There is more than 3 defined \
 
            permissions for defualt user. This should not happen please verify\
 
            your database')
 
            raise Exception('There is more than 3 defined'
 
            ' permissions for default user. This should not happen please verify'
 
            ' your database')
 
        
 
        try:
 
            #stage 1 change defaults    
rhodecode/model/repo.py
Show inline comments
 
file renamed from rhodecode/model/repo_model.py to rhodecode/model/repo.py
 
@@ -19,15 +19,15 @@
 
"""
 
Created on Jun 5, 2010
 
model for handling repositories actions
 
@author: marcink
 
:author: marcink
 
"""
 

	
 
from datetime import datetime
 
from pylons import app_globals as g
 
from rhodecode.lib.utils import check_repo
 
from rhodecode.model.db import Repository, RepoToPerm, User, Permission
 
from rhodecode.model.meta import Session
 
from rhodecode.model.user_model import UserModel
 
from rhodecode.lib.celerylib.tasks import create_repo_fork, run_task
 
from rhodecode.model.user import UserModel
 
from rhodecode.model.caching_query import FromCache
 
import logging
 
import os
 
import shutil
 
@@ -42,9 +42,14 @@ class RepoModel(object):
 
        else:
 
            self.sa = sa
 
    
 
    def get(self, id):
 
        return self.sa.query(Repository)\
 
            .filter(Repository.repo_name == id).scalar()
 
    def get(self, repo_id, cache=False):
 
        repo = self.sa.query(Repository)\
 
            .filter(Repository.repo_name == repo_id)
 

	
 
        if cache:
 
            repo = repo.options(FromCache("sql_cache_short",
 
                                          "get_repo_%s" % repo))
 
        return repo.scalar()
 
        
 
    def get_users_js(self):
 
        
 
@@ -62,8 +67,7 @@ class RepoModel(object):
 
            #update permissions
 
            for username, perm in form_data['perms_updates']:
 
                r2p = self.sa.query(RepoToPerm)\
 
                        .filter(RepoToPerm.user == self.sa.query(User)\
 
                                .filter(User.username == username).one())\
 
                        .filter(RepoToPerm.user == UserModel(self.sa).get_by_username(username, cache=False))\
 
                        .filter(RepoToPerm.repository == self.get(repo_name))\
 
                        .one()
 
                
 
@@ -76,8 +80,7 @@ class RepoModel(object):
 
            for username, perm in form_data['perms_new']:
 
                r2p = RepoToPerm()
 
                r2p.repository = self.get(repo_name)
 
                r2p.user = self.sa.query(User)\
 
                                .filter(User.username == username).one()
 
                r2p.user = UserModel(self.sa).get_by_username(username, cache=False)
 
                
 
                r2p.permission_id = self.sa.query(Permission).filter(
 
                                        Permission.permission_name == perm)\
 
@@ -85,7 +88,7 @@ class RepoModel(object):
 
                self.sa.add(r2p)
 
            
 
            #update current repo
 
            cur_repo = self.get(repo_name)
 
            cur_repo = self.get(repo_name, cache=False)
 
             
 
            for k, v in form_data.items():
 
                if k == 'user':
 
@@ -130,7 +133,7 @@ class RepoModel(object):
 
            #create default permission
 
            repo_to_perm = RepoToPerm()
 
            default = 'repository.read'
 
            for p in UserModel(self.sa).get_default().user_perms:
 
            for p in UserModel(self.sa).get_by_username('default', cache=False).user_perms:
 
                if p.permission.permission_name.startswith('repository.'):
 
                    default = p.permission.permission_name
 
                    break
 
@@ -142,8 +145,7 @@ class RepoModel(object):
 
                    .one().permission_id
 
                        
 
            repo_to_perm.repository_id = new_repo.repo_id
 
            repo_to_perm.user_id = self.sa.query(User)\
 
                    .filter(User.username == 'default').one().user_id 
 
            repo_to_perm.user_id = UserModel(self.sa).get_by_username('default', cache=False).user_id
 
            
 
            self.sa.add(repo_to_perm)
 
            self.sa.commit()
 
@@ -155,7 +157,8 @@ class RepoModel(object):
 
            raise    
 
    
 
    def create_fork(self, form_data, cur_user):
 
        run_task(create_repo_fork, form_data, cur_user)
 
        from rhodecode.lib.celerylib import tasks, run_task
 
        run_task(tasks.create_repo_fork, form_data, cur_user)
 
                         
 
    def delete(self, repo):
 
        try:
 
@@ -179,6 +182,7 @@ class RepoModel(object):
 
            raise
 
           
 
    def __create_repo(self, repo_name):        
 
        from rhodecode.lib.utils import check_repo
 
        repo_path = os.path.join(g.base_path, repo_name)
 
        if check_repo(repo_name, g.base_path):
 
            log.info('creating repo %s in %s', repo_name, repo_path)
rhodecode/model/user.py
Show inline comments
 
file renamed from rhodecode/model/user_model.py to rhodecode/model/user.py
 
@@ -17,19 +17,19 @@
 
# along with this program; if not, write to the Free Software
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 
# MA  02110-1301, USA.
 

	
 
"""
 
Created on April 9, 2010
 
Model for users
 
@author: marcink
 
:author: marcink
 
"""
 
from rhodecode.lib import auth
 

	
 
from pylons.i18n.translation import _
 
from rhodecode.lib.celerylib import tasks, run_task
 
from rhodecode.model.caching_query import FromCache
 
from rhodecode.model.db import User
 
from rhodecode.model.meta import Session
 
import logging
 
import traceback
 
import logging
 

	
 
log = logging.getLogger(__name__)
 

	
 
class DefaultUserException(Exception):pass
 
@@ -42,14 +42,21 @@ class UserModel(object):
 
        else:
 
            self.sa = sa
 
    
 
    def get_default(self):
 
        return self.sa.query(User).filter(User.username == 'default').scalar()
 
    def get(self, user_id, cache=False):
 
        user = self.sa.query(User)
 
        if cache:
 
            user = user.options(FromCache("sql_cache_short",
 
                                          "get_user_%s" % user_id))
 
        return user.get(user_id)
 

	
 
    
 
    def get_user(self, id):
 
        return self.sa.query(User).get(id)
 
    
 
    def get_user_by_name(self, name):
 
        return self.sa.query(User).filter(User.username == name).scalar()
 
    def get_by_username(self, username, cache=False):
 
        user = self.sa.query(User)\
 
            .filter(User.username == username)
 
        if cache:
 
            user = user.options(FromCache("sql_cache_short",
 
                                          "get_user_%s" % username))
 
        return user.scalar()
 
    
 
    def create(self, form_data):
 
        try:
 
@@ -78,9 +85,9 @@ class UserModel(object):
 
            self.sa.rollback()
 
            raise      
 
    
 
    def update(self, uid, form_data):
 
    def update(self, user_id, form_data):
 
        try:
 
            new_user = self.sa.query(User).get(uid)
 
            new_user = self.get(user_id, cache=False)
 
            if new_user.username == 'default':
 
                raise DefaultUserException(
 
                                _("You can't Edit this user since it's" 
 
@@ -98,9 +105,9 @@ class UserModel(object):
 
            self.sa.rollback()
 
            raise      
 
        
 
    def update_my_account(self, uid, form_data):
 
    def update_my_account(self, user_id, form_data):
 
        try:
 
            new_user = self.sa.query(User).get(uid)
 
            new_user = self.get(user_id, cache=False)
 
            if new_user.username == 'default':
 
                raise DefaultUserException(
 
                                _("You can't Edit this user since it's" 
 
@@ -119,10 +126,9 @@ class UserModel(object):
 
            self.sa.rollback()
 
            raise 
 
                
 
    def delete(self, id):
 
    def delete(self, user_id):
 
        try:
 
            
 
            user = self.sa.query(User).get(id)
 
            user = self.get(user_id, cache=False)
 
            if user.username == 'default':
 
                raise DefaultUserException(
 
                                _("You can't remove this user since it's" 
 
@@ -135,4 +141,5 @@ class UserModel(object):
 
            raise        
 

	
 
    def reset_password(self, data):
 
        from rhodecode.lib.celerylib import tasks, run_task
 
        run_task(tasks.reset_user_password, data['email'])
rhodecode/public/css/style.css
Show inline comments
 
@@ -2301,6 +2301,8 @@ padding-left:5px;
 
 
#changeset_content .container .left .date,.ac .match {
 
font-weight:700;
 
padding-top: 5px;
 
padding-bottom:5px;
 
}
 
 
div#legend_container table td,div#legend_choices table td {
test.ini
Show inline comments
 
@@ -49,19 +49,32 @@ cache_dir = %(here)s/data
 
####################################
 
beaker.cache.data_dir=/%(here)s/data/cache/data
 
beaker.cache.lock_dir=/%(here)s/data/cache/lock
 
beaker.cache.regions=super_short_term,short_term,long_term
 
beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
 

	
 
beaker.cache.super_short_term.type=memory
 
beaker.cache.super_short_term.expire=10
 

	
 
beaker.cache.short_term.type=memory
 
beaker.cache.short_term.expire=60
 

	
 
beaker.cache.long_term.type=memory
 
beaker.cache.long_term.expire=36000
 
beaker.cache.short_term.type=memory
 
beaker.cache.short_term.expire=60
 
beaker.cache.super_short_term.type=memory
 
beaker.cache.super_short_term.expire=10
 

	
 

	
 
beaker.cache.sql_cache_short.type=memory
 
beaker.cache.sql_cache_short.expire=5
 

	
 
beaker.cache.sql_cache_med.type=memory
 
beaker.cache.sql_cache_med.expire=360
 

	
 
beaker.cache.sql_cache_long.type=file
 
beaker.cache.sql_cache_long.expire=3600
 

	
 
####################################
 
###       BEAKER SESSION        ####
 
####################################
 
## Type of storage used for the session, current types are 
 
## "dbm", "file", "memcached", "database", and "memory". 
 
## dbm, file, memcached, database, and memory. 
 
## The storage uses the Container API 
 
##that is also used by the cache system.
 
beaker.session.type = file
0 comments (0 inline, 0 general)