# HG changeset patch # User Marcin Kuzminski # Date 1275250134 -7200 # Node ID 5da4ef115006915c74c48cfc38890876d3d8712f # Parent 48727add84c9ce4c2abacb3e7bc2b5d1861fe8d6 Added lastlogin to user after login, model db update diff -r 48727add84c9 -r 5da4ef115006 pylons_app/model/db.py --- a/pylons_app/model/db.py Sun May 30 22:08:21 2010 +0200 +++ b/pylons_app/model/db.py Sun May 30 22:08:54 2010 +0200 @@ -34,7 +34,13 @@ 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 -r 48727add84c9 -r 5da4ef115006 pylons_app/model/forms.py --- a/pylons_app/model/forms.py Sun May 30 22:08:21 2010 +0200 +++ b/pylons_app/model/forms.py Sun May 30 22:08:54 2010 +0200 @@ -19,9 +19,9 @@ 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 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 @@ 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)