--- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.pyc +config.py --- a/__init__.py +++ b/__init__.py @@ -1,10 +1,4 @@ from user import User from group import Group from membership import Membership - -from flask import g - -def setup_app(app): - db = app.db - g.db = db --- a/group.py +++ b/group.py @@ -6,6 +6,8 @@ from datetime import datetime +from .config import db + class Group(db.Model): """ docstring @@ -17,7 +19,7 @@ created = db.Column(db.DateTime, default=datetime.utcnow) created_by = db.Column(db.Integer, db.ForeignKey('users.id')) - creator = db.relationship('User', backref='groups', lazy='dynamic') + creator = db.relationship('User', backref='groups') def __init__(self, name, creator): self.name = name --- a/membership.py +++ b/membership.py @@ -3,6 +3,8 @@ from datetime import datetime +from .config import db + class Membership(db.Model): """ docstring """ @@ -13,8 +15,8 @@ gid = db.Column(db.Integer, db.ForeignKey('groups.id')) created = db.Column(db.DateTime, default=datetime.utcnow) - user = db.relationship('User', backref='memberships', lazy='dynamic') - group = db.relationship('Group', backref='memberships', lazy='dynamic') + user = db.relationship('User', backref='memberships') + group = db.relationship('Group', backref='memberships') def __init__(self, user, group): self.user = user --- /dev/null +++ b/sample_config.py @@ -1 +1,15 @@ +# Copy the contents of this file to config.py + +# Import the SQLAlchemy database (db) object from your application +# the object which has he Model and Column classes +# Even if your application calls it something else, import it, and assign it to +# db: like: +# from yourapp import database +# db = database + +from yourapp import db + +# keep this line as it is..this passes the database object to the user +# management modules +__all__ = ['db'] --- a/user.py +++ b/user.py @@ -2,12 +2,11 @@ # User Management::User from datetime import datetime -from flask import current_app, g +from flask import session +from hashlib import md5 +from .config import db -db = g.db - - class User(db.Model): """ docstring """ @@ -23,6 +22,15 @@ self.username = username self.email = email + def update(self, **kwargs): + if kwargs.get('username'): + self.username = kwargs.get('username') + if kwargs.get('last_active'): + print 'Updated last_active timestamp for user %s' % self + self.last_active = kwargs.get('last_active') + + self.persist() + # persist current object in the database def persist(self): db.session.add(self) @@ -33,6 +41,23 @@ db.session.delete(self) db.session.commit() + @staticmethod + def getCurrentUser(): + if 'email' in session: + user = User.query.filter_by(email=session['email']).first() + user.update(last_active=datetime.utcnow()) + return user + return None + + def to_dict(self): + return { + 'id': self.id, + 'username': self.username, + 'email': self.email, + 'created': self.created.isoformat(), + 'last_active': self.last_active.isoformat() + } + def __repr__(self): - return '' % (self.username, self.email) + return '' % (self.username, self.email)