# HG changeset patch # User Marcin Kuzminski # Date 1318032145 -7200 # Node ID 04027bdb876c32c6b6f3f2a9b95efc673e6393bd # Parent 0b268dd369ecbe88eb4a2cfefbd1aa4b6d5b59a5 Refactoring of model get functions diff -r 0b268dd369ec -r 04027bdb876c rhodecode/controllers/admin/permissions.py --- a/rhodecode/controllers/admin/permissions.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/controllers/admin/permissions.py Sat Oct 08 02:02:25 2011 +0200 @@ -144,7 +144,7 @@ c.create_choices = self.create_choices if id == 'default': - default_user = User.by_username('default') + default_user = User.get_by_username('default') defaults = {'_method': 'put', 'anonymous': default_user.active} diff -r 0b268dd369ec -r 04027bdb876c rhodecode/controllers/admin/repos.py --- a/rhodecode/controllers/admin/repos.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/controllers/admin/repos.py Sat Oct 08 02:02:25 2011 +0200 @@ -89,7 +89,7 @@ """ self.__load_defaults() - c.repo_info = db_repo = Repository.by_repo_name(repo_name) + c.repo_info = db_repo = Repository.get_by_repo_name(repo_name) repo = scm_repo = db_repo.scm_instance if c.repo_info is None: @@ -101,7 +101,7 @@ return redirect(url('repos')) - c.default_user_id = User.by_username('default').user_id + c.default_user_id = User.get_by_username('default').user_id c.in_public_journal = self.sa.query(UserFollowing)\ .filter(UserFollowing.user_id == c.default_user_id)\ .filter(UserFollowing.follows_repository == c.repo_info).scalar() @@ -381,8 +381,8 @@ token = get_token() if cur_token == token: try: - repo_id = Repository.by_repo_name(repo_name).repo_id - user_id = User.by_username('default').user_id + repo_id = Repository.get_by_repo_name(repo_name).repo_id + user_id = User.get_by_username('default').user_id self.scm_model.toggle_following_repo(repo_id, user_id) h.flash(_('Updated repository visibility in public journal'), category='success') diff -r 0b268dd369ec -r 04027bdb876c rhodecode/controllers/login.py --- a/rhodecode/controllers/login.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/controllers/login.py Sat Oct 08 02:02:25 2011 +0200 @@ -64,8 +64,7 @@ c.form_result = login_form.to_python(dict(request.POST)) #form checks for username/password, now we're authenticated username = c.form_result['username'] - user = User.by_username(username, - case_insensitive=True) + user = User.get_by_username(username, case_insensitive=True) auth_user = AuthUser(user.user_id) auth_user.set_authenticated() session['rhodecode_user'] = auth_user @@ -95,8 +94,7 @@ def register(self): user_model = UserModel() c.auto_active = False - for perm in user_model.get_by_username('default', - cache=False).user_perms: + for perm in User.get_by_username('default').user_perms: if perm.permission.permission_name == 'hg.register.auto_activate': c.auto_active = True break diff -r 0b268dd369ec -r 04027bdb876c rhodecode/lib/auth.py --- a/rhodecode/lib/auth.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/lib/auth.py Sat Oct 08 02:02:25 2011 +0200 @@ -48,7 +48,7 @@ from rhodecode.model import meta from rhodecode.model.user import UserModel -from rhodecode.model.db import Permission, RhodeCodeSettings +from rhodecode.model.db import Permission, RhodeCodeSettings, User log = logging.getLogger(__name__) @@ -151,7 +151,7 @@ """ user_model = UserModel() - user = user_model.get_by_username(username, cache=False) + user = User.get_by_username(username) log.debug('Authenticating user using RhodeCode account') if user is not None and not user.ldap_dn: @@ -170,8 +170,7 @@ else: log.debug('Regular authentication failed') - user_obj = user_model.get_by_username(username, cache=False, - case_insensitive=True) + user_obj = User.get_by_username(username, case_insensitive=True) if user_obj is not None and not user_obj.ldap_dn: log.debug('this user already exists as non ldap') @@ -252,7 +251,7 @@ def propagate_data(self): user_model = UserModel() - self.anonymous_user = user_model.get_by_username('default', cache=True) + self.anonymous_user = User.get_by_username('default') if self._api_key and self._api_key != self.anonymous_user.api_key: #try go get user by api key log.debug('Auth User lookup by API KEY %s', self._api_key) diff -r 0b268dd369ec -r 04027bdb876c rhodecode/lib/base.py --- a/rhodecode/lib/base.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/lib/base.py Sat Oct 08 02:02:25 2011 +0200 @@ -67,7 +67,7 @@ super(BaseRepoController, self).__before__() if c.repo_name: - c.rhodecode_db_repo = Repository.by_repo_name(c.repo_name) + c.rhodecode_db_repo = Repository.get_by_repo_name(c.repo_name) c.rhodecode_repo = c.rhodecode_db_repo.scm_instance if c.rhodecode_repo is None: diff -r 0b268dd369ec -r 04027bdb876c rhodecode/lib/middleware/simplegit.py --- a/rhodecode/lib/middleware/simplegit.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/lib/middleware/simplegit.py Sat Oct 08 02:02:25 2011 +0200 @@ -262,7 +262,7 @@ return repo_name def __get_user(self, username): - return User.by_username(username) + return User.get_by_username(username) def __get_action(self, environ): """Maps git request commands into a pull or push command. diff -r 0b268dd369ec -r 04027bdb876c rhodecode/lib/middleware/simplehg.py --- a/rhodecode/lib/middleware/simplehg.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/lib/middleware/simplehg.py Sat Oct 08 02:02:25 2011 +0200 @@ -229,7 +229,7 @@ return repo_name def __get_user(self, username): - return User.by_username(username) + return User.get_by_username(username) def __get_action(self, environ): """ diff -r 0b268dd369ec -r 04027bdb876c rhodecode/lib/utils.py --- a/rhodecode/lib/utils.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/lib/utils.py Sat Oct 08 02:02:25 2011 +0200 @@ -112,7 +112,7 @@ if hasattr(user, 'user_id'): user_obj = user elif isinstance(user, basestring): - user_obj = User.by_username(user) + user_obj = User.get_by_username(user) else: raise Exception('You have to provide user object or username') diff -r 0b268dd369ec -r 04027bdb876c rhodecode/model/db.py --- a/rhodecode/model/db.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/model/db.py Sat Oct 08 02:02:25 2011 +0200 @@ -281,17 +281,16 @@ return self.__class__.__name__ @classmethod - def by_username(cls, username, case_insensitive=False): + def get_by_username(cls, username, case_insensitive=False): if case_insensitive: - return Session.query(cls).filter(cls.username.like(username)).one() + return Session.query(cls).filter(cls.username.like(username)).scalar() else: - return Session.query(cls).filter(cls.username == username).one() + return Session.query(cls).filter(cls.username == username).scalar() @classmethod def get_by_api_key(cls, api_key): return Session.query(cls).filter(cls.api_key == api_key).one() - def update_lastlogin(self): """Update user lastlogin""" @@ -487,7 +486,7 @@ self.repo_id, self.repo_name) @classmethod - def by_repo_name(cls, repo_name): + def get_by_repo_name(cls, repo_name): q = Session.query(cls).filter(cls.repo_name == repo_name) q = q.options(joinedload(Repository.fork))\ diff -r 0b268dd369ec -r 04027bdb876c rhodecode/model/forms.py --- a/rhodecode/model/forms.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/model/forms.py Sat Oct 08 02:02:25 2011 +0200 @@ -70,8 +70,7 @@ old_un = UserModel().get(old_data.get('user_id')).username if old_un != value or not edit: - if UserModel().get_by_username(value, cache=False, - case_insensitive=True): + if User.get_by_username(value, case_insensitive=True): raise formencode.Invalid(_('This username already ' 'exists') , value, state) @@ -206,7 +205,7 @@ def validate_python(self, value, state): password = value['password'] username = value['username'] - user = UserModel().get_by_username(username) + user = User.get_by_username(username) if authenticate(username, password): return value diff -r 0b268dd369ec -r 04027bdb876c rhodecode/model/repo.py --- a/rhodecode/model/repo.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/model/repo.py Sat Oct 08 02:02:25 2011 +0200 @@ -102,7 +102,7 @@ for member, perm, member_type in form_data['perms_updates']: if member_type == 'user': r2p = self.sa.query(RepoToPerm)\ - .filter(RepoToPerm.user == User.by_username(member))\ + .filter(RepoToPerm.user == User.get_by_username(member))\ .filter(RepoToPerm.repository == cur_repo)\ .one() @@ -127,7 +127,7 @@ if member_type == 'user': r2p = RepoToPerm() r2p.repository = cur_repo - r2p.user = User.by_username(member) + r2p.user = User.get_by_username(member) r2p.permission = self.sa.query(Permission)\ .filter(Permission. @@ -147,7 +147,7 @@ #update current repo for k, v in form_data.items(): if k == 'user': - cur_repo.user = User.by_username(v) + cur_repo.user = User.get_by_username(v) elif k == 'repo_name': cur_repo.repo_name = form_data['repo_name_full'] elif k == 'repo_group': @@ -208,8 +208,7 @@ #create default permission repo_to_perm = RepoToPerm() default = 'repository.read' - for p in UserModel(self.sa).get_by_username('default', - cache=False).user_perms: + for p in User.get_by_username('default').user_perms: if p.permission.permission_name.startswith('repository.'): default = p.permission.permission_name break @@ -221,8 +220,7 @@ .one().permission_id repo_to_perm.repository = new_repo - repo_to_perm.user_id = UserModel(self.sa)\ - .get_by_username('default', cache=False).user_id + repo_to_perm.user_id = User.get_by_username('default').user_id self.sa.add(repo_to_perm) diff -r 0b268dd369ec -r 04027bdb876c rhodecode/model/scm.py --- a/rhodecode/model/scm.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/model/scm.py Sat Oct 08 02:02:25 2011 +0200 @@ -22,7 +22,6 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . -import os import time import traceback import logging @@ -41,9 +40,8 @@ from rhodecode.lib.utils import get_repos as get_filesystem_repos, make_ui, \ action_logger, EmptyChangeset from rhodecode.model import BaseModel -from rhodecode.model.user import UserModel from rhodecode.model.db import Repository, RhodeCodeUi, CacheInvalidation, \ - UserFollowing, UserLog + UserFollowing, UserLog, User log = logging.getLogger(__name__) @@ -283,7 +281,7 @@ return f is not None def is_following_user(self, username, user_id, cache=False): - u = UserModel(self.sa).get_by_username(username) + u = User.get_by_username(username) f = self.sa.query(UserFollowing)\ .filter(UserFollowing.follows_user == u)\ @@ -293,24 +291,24 @@ def get_followers(self, repo_id): if not isinstance(repo_id, int): - repo_id = getattr(Repository.by_repo_name(repo_id), 'repo_id') + repo_id = getattr(Repository.get_by_repo_name(repo_id), 'repo_id') return self.sa.query(UserFollowing)\ .filter(UserFollowing.follows_repo_id == repo_id).count() def get_forks(self, repo_id): if not isinstance(repo_id, int): - repo_id = getattr(Repository.by_repo_name(repo_id), 'repo_id') + repo_id = getattr(Repository.get_by_repo_name(repo_id), 'repo_id') return self.sa.query(Repository)\ .filter(Repository.fork_id == repo_id).count() def pull_changes(self, repo_name, username): - dbrepo = Repository.by_repo_name(repo_name) + dbrepo = Repository.get_by_repo_name(repo_name) clone_uri = dbrepo.clone_uri if not clone_uri: raise Exception("This repository doesn't have a clone uri") - + repo = dbrepo.scm_instance try: extras = {'ip': '', @@ -363,12 +361,12 @@ from vcs.backends.git import GitInMemoryChangeset as IMC # decoding here will force that we have proper encoded values # in any other case this will throw exceptions and deny commit - - if isinstance(content,(basestring,)): + + if isinstance(content, (basestring,)): content = safe_str(content) - elif isinstance(content,file): + elif isinstance(content, file): content = content.read() - + message = safe_str(message) path = safe_str(f_path) author = safe_str(author) diff -r 0b268dd369ec -r 04027bdb876c rhodecode/tests/functional/test_login.py --- a/rhodecode/tests/functional/test_login.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/tests/functional/test_login.py Sat Oct 08 02:02:25 2011 +0200 @@ -246,7 +246,7 @@ # GOOD KEY - key = User.by_username(username).api_key + key = User.get_by_username(username).api_key response = self.app.get(url(controller='login', action='password_reset_confirmation', diff -r 0b268dd369ec -r 04027bdb876c rhodecode/tests/functional/test_summary.py --- a/rhodecode/tests/functional/test_summary.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/tests/functional/test_summary.py Sat Oct 08 02:02:25 2011 +0200 @@ -41,7 +41,7 @@ def _enable_stats(self): - r = Repository.by_repo_name(HG_REPO) + r = Repository.get_by_repo_name(HG_REPO) r.enable_statistics = True self.sa.add(r) self.sa.commit() diff -r 0b268dd369ec -r 04027bdb876c rhodecode/tests/test_hg_operations.py --- a/rhodecode/tests/test_hg_operations.py Fri Oct 07 23:17:45 2011 +0200 +++ b/rhodecode/tests/test_hg_operations.py Sat Oct 08 02:02:25 2011 +0200 @@ -44,7 +44,7 @@ USER = 'test_admin' PASS = 'test12' HOST = '127.0.0.1:5000' -DEBUG = bool(int(sys.argv[1])) +DEBUG = True if sys.argv[1:] else False print 'DEBUG:', DEBUG log = logging.getLogger(__name__) @@ -72,7 +72,7 @@ def test_wrapp(func): def __wrapp(*args, **kwargs): - print '###%s###' % func.__name__ + print '>>>%s' % func.__name__ try: res = func(*args, **kwargs) except Exception, e: diff -r 0b268dd369ec -r 04027bdb876c test.ini --- a/test.ini Fri Oct 07 23:17:45 2011 +0200 +++ b/test.ini Sat Oct 08 02:02:25 2011 +0200 @@ -23,6 +23,7 @@ #smtp_password = #smtp_port = #smtp_use_tls = false +#smtp_use_ssl = true [server:main] ##nr of threads to spawn @@ -49,6 +50,7 @@ cut_off_limit = 256000 force_https = false commit_parse_limit = 25 +use_gravatar = true #################################### ### CELERY CONFIG #### @@ -93,7 +95,6 @@ beaker.cache.long_term.type=memory beaker.cache.long_term.expire=36000 - beaker.cache.sql_cache_short.type=memory beaker.cache.sql_cache_short.expire=10 @@ -150,13 +151,13 @@ ### LOGGING CONFIGURATION #### ################################ [loggers] -keys = root, routes, rhodecode, sqlalchemy,beaker,templates +keys = root, routes, rhodecode, sqlalchemy, beaker, templates [handlers] keys = console [formatters] -keys = generic,color_formatter +keys = generic, color_formatter ############# ## LOGGERS ## @@ -167,9 +168,10 @@ [logger_routes] level = ERROR -handlers = console +handlers = qualname = routes.middleware # "level = DEBUG" logs the route matched and routing variables. +propagate = 1 [logger_beaker] level = DEBUG @@ -185,9 +187,9 @@ [logger_rhodecode] level = ERROR -handlers = console +handlers = qualname = rhodecode -propagate = 0 +propagate = 1 [logger_sqlalchemy] level = ERROR @@ -203,7 +205,7 @@ class = StreamHandler args = (sys.stderr,) level = NOTSET -formatter = color_formatter +formatter = generic ################ ## FORMATTERS ##