From e432b39ffc7d1d465d443db00be12fe16a34f073 Mon Sep 17 00:00:00 2001 From: Anon Ray Date: Sat, 8 Mar 2014 00:07:33 +0530 Subject: [PATCH] Changes to user class and config to pass db - This module being a module which will the use the host application's database directly, a config file deviced to pass in the SQLAlchemy db object from the host application. config.py is gitignored, a sample_config.py is provided. - Changes to user class --- .gitignore | 1 + __init__.py | 5 ----- group.py | 4 +++- membership.py | 6 ++++-- sample_config.py | 14 ++++++++++++++ user.py | 35 ++++++++++++++++++++++++++++++----- 6 files changed, 52 insertions(+), 13 deletions(-) create mode 100644 sample_config.py diff --git a/.gitignore b/.gitignore index 0d20b64..df81b2c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.pyc +config.py diff --git a/__init__.py b/__init__.py index c10b173..66ab302 100644 --- a/__init__.py +++ b/__init__.py @@ -2,8 +2,3 @@ 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 diff --git a/group.py b/group.py index 48c278b..f78a899 100644 --- 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 @@ class Group(db.Model): 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 diff --git a/membership.py b/membership.py index 1d07689..e62019a 100644 --- 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 @@ class Membership(db.Model): 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 diff --git a/sample_config.py b/sample_config.py new file mode 100644 index 0000000..c2b4e40 --- /dev/null +++ b/sample_config.py @@ -0,0 +1,14 @@ +# 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'] diff --git a/user.py b/user.py index 6b356bb..5b5ddcb 100644 --- a/user.py +++ b/user.py @@ -2,11 +2,10 @@ # User Management::User from datetime import datetime -from flask import current_app, g - - -db = g.db +from flask import session +from hashlib import md5 +from .config import db class User(db.Model): """ docstring """ @@ -23,6 +22,15 @@ class User(db.Model): 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 @@ class User(db.Model): 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) -- 1.7.10.4