changeset 1530:04027bdb876c beta

Refactoring of model get functions
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 08 Oct 2011 02:02:25 +0200
parents 0b268dd369ec
children 7d64456775ad
files rhodecode/controllers/admin/permissions.py rhodecode/controllers/admin/repos.py rhodecode/controllers/login.py rhodecode/lib/auth.py rhodecode/lib/base.py rhodecode/lib/middleware/simplegit.py rhodecode/lib/middleware/simplehg.py rhodecode/lib/utils.py rhodecode/model/db.py rhodecode/model/forms.py rhodecode/model/repo.py rhodecode/model/scm.py rhodecode/tests/functional/test_login.py rhodecode/tests/functional/test_summary.py rhodecode/tests/test_hg_operations.py test.ini
diffstat 16 files changed, 49 insertions(+), 56 deletions(-) [+]
line wrap: on
line diff
--- 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}
 
--- 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')
--- 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
--- 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)
--- 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:
--- 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.
--- 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):
         """
--- 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')
 
--- 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))\
--- 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
--- 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)
 
--- 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 <http://www.gnu.org/licenses/>.
-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)
--- 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',
--- 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()
--- 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:
--- 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 ##