changeset 1400:0d7b56b97953 beta

Simplified last_login call on user, and changed login to use User model directly
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 29 Jun 2011 01:49:53 +0200
parents 4134af931e91
children b7563ad4e7ee
files rhodecode/controllers/login.py rhodecode/model/db.py
diffstat 2 files changed, 19 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/login.py	Wed Jun 29 01:47:59 2011 +0200
+++ b/rhodecode/controllers/login.py	Wed Jun 29 01:49:53 2011 +0200
@@ -35,6 +35,7 @@
 import rhodecode.lib.helpers as h
 from rhodecode.lib.auth import AuthUser, HasPermissionAnyDecorator
 from rhodecode.lib.base import BaseController, render
+from rhodecode.model.db import User
 from rhodecode.model.forms import LoginForm, RegisterForm, PasswordResetForm
 from rhodecode.model.user import UserModel
 
@@ -63,7 +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 = UserModel().get_by_username(username,
+                user = User.by_username(username,
                                                    case_insensitive=True)
                 auth_user = AuthUser(user.user_id)
                 auth_user.set_authenticated()
--- a/rhodecode/model/db.py	Wed Jun 29 01:47:59 2011 +0200
+++ b/rhodecode/model/db.py	Wed Jun 29 01:49:53 2011 +0200
@@ -225,31 +225,31 @@
     def short_contact(self):
         return '%s %s' % (self.name, self.lastname)
 
-
     @property
     def is_admin(self):
         return self.admin
 
     def __repr__(self):
-        return "<%s('id:%s:%s')>" % (self.__class__.__name__,
-                                     self.user_id, self.username)
+        try:
+            return "<%s('id:%s:%s')>" % (self.__class__.__name__,
+                                             self.user_id, self.username)
+        except:
+            return self.__class__.__name__
 
     @classmethod
-    def by_username(cls, username):
-        return Session.query(cls).filter(cls.username == username).one()
-
+    def by_username(cls, username, case_insensitive=False):
+        if case_insensitive:
+            return Session.query(cls).filter(cls.username.like(username)).one()
+        else:
+            return Session.query(cls).filter(cls.username == username).one()
 
     def update_lastlogin(self):
         """Update user lastlogin"""
 
-        try:
-            session = Session.object_session(self)
-            self.last_login = datetime.datetime.now()
-            session.add(self)
-            session.commit()
-            log.debug('updated user %s lastlogin', self.username)
-        except (DatabaseError,):
-            session.rollback()
+        self.last_login = datetime.datetime.now()
+        Session.add(self)
+        Session.commit()
+        log.debug('updated user %s lastlogin', self.username)
 
 
 class UserLog(Base, BaseModel):
@@ -463,13 +463,13 @@
 
     @property
     def scm_instance(self):
-        return self.__get_instance(self.repo_name)
+        return self.__get_instance()
 
     @property
     def scm_instance_cached(self):
         @cache_region('long_term')
         def _c(repo_name):
-            return self.__get_instance(repo_name)
+            return self.__get_instance()
 
         inv = self.invalidate
         if inv:
@@ -481,7 +481,7 @@
 
         return _c(self.repo_name)
 
-    def __get_instance(self, repo_name):
+    def __get_instance(self):
 
         repo_full_path = self.repo_full_path