# HG changeset patch # User Marcin Kuzminski # Date 2010-05-30 20:08:54 # Node ID 5da4ef115006915c74c48cfc38890876d3d8712f # Parent 48727add84c9ce4c2abacb3e7bc2b5d1861fe8d6 Added lastlogin to user after login, model db update diff --git a/pylons_app/model/db.py b/pylons_app/model/db.py --- a/pylons_app/model/db.py +++ b/pylons_app/model/db.py @@ -34,7 +34,13 @@ class UserLog(Base): class Repository(Base): __tablename__ = 'repositories' repo_id = Column("repo_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=1) - + repo_name = Column("repo_name", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) + user_id = Column("user_id", INTEGER(), ForeignKey(u'users.user_id'), nullable=True, unique=None, default=None) + private = Column("private", BOOLEAN(), nullable=True, unique=None, default=None) + + user = relation('User') + + class Permission(Base): __tablename__ = 'permissions' __table_args__ = {'useexisting':True} diff --git a/pylons_app/model/forms.py b/pylons_app/model/forms.py --- a/pylons_app/model/forms.py +++ b/pylons_app/model/forms.py @@ -19,9 +19,9 @@ list=[1,2,3,4,5] for SELECT use formencode.All(OneOf(list), Int()) """ +from formencode import All from formencode.validators import UnicodeString, OneOf, Int, Number, Regex, \ Email, Bool, StringBoolean -from formencode import All from pylons import session from pylons.i18n.translation import _ from pylons_app.lib.auth import get_crypt_password @@ -30,6 +30,7 @@ from pylons_app.model.db import User from sqlalchemy.exc import OperationalError from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound from webhelpers.pylonslib.secure_form import authentication_token +import datetime import formencode import logging log = logging.getLogger(__name__) @@ -95,6 +96,15 @@ class ValidAuth(formencode.validators.Fa session['hg_app_user'] = auth_user session.save() log.info('user %s is now authenticated', username) + + try: + user.last_login = datetime.datetime.now() + sa.add(user) + sa.commit() + except (OperationalError) as e: + log.error(e) + sa.rollback() + return value else: log.warning('user %s not authenticated', username)