Commit e432b39ffc7d1d465d443db00be12fe16a34f073

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 / 0)
  
11*.pyc
2config.py
  
11from user import User
22from group import Group
33from membership import Membership
4
5from flask import g
6
7def setup_app(app):
8 db = app.db
9 g.db = db
group.py
(3 / 1)
  
66
77from datetime import datetime
88
9from .config import db
10
911class Group(db.Model):
1012 """
1113 docstring
1919 created = db.Column(db.DateTime, default=datetime.utcnow)
2020 created_by = db.Column(db.Integer, db.ForeignKey('users.id'))
2121
22 creator = db.relationship('User', backref='groups', lazy='dynamic')
22 creator = db.relationship('User', backref='groups')
2323
2424 def __init__(self, name, creator):
2525 self.name = name
  
33
44from datetime import datetime
55
6from .config import db
7
68class Membership(db.Model):
79 """ docstring """
810
1515 gid = db.Column(db.Integer, db.ForeignKey('groups.id'))
1616 created = db.Column(db.DateTime, default=datetime.utcnow)
1717
18 user = db.relationship('User', backref='memberships', lazy='dynamic')
19 group = db.relationship('Group', backref='memberships', lazy='dynamic')
18 user = db.relationship('User', backref='memberships')
19 group = db.relationship('Group', backref='memberships')
2020
2121 def __init__(self, user, group):
2222 self.user = user
  
1# Copy the contents of this file to config.py
2
3# Import the SQLAlchemy database (db) object from your application
4# the object which has he Model and Column classes
5# Even if your application calls it something else, import it, and assign it to
6# db: like:
7# from yourapp import database
8# db = database
9
10from yourapp import db
11
12# keep this line as it is..this passes the database object to the user
13# management modules
14__all__ = ['db']
user.py
(30 / 5)
  
22# User Management::User
33
44from datetime import datetime
5from flask import current_app, g
5from flask import session
6from hashlib import md5
67
8from .config import db
79
8db = g.db
9
10
1110class User(db.Model):
1211 """ docstring """
1312
2222 self.username = username
2323 self.email = email
2424
25 def update(self, **kwargs):
26 if kwargs.get('username'):
27 self.username = kwargs.get('username')
28 if kwargs.get('last_active'):
29 print 'Updated last_active timestamp for user %s' % self
30 self.last_active = kwargs.get('last_active')
31
32 self.persist()
33
2534 # persist current object in the database
2635 def persist(self):
2736 db.session.add(self)
4141 db.session.delete(self)
4242 db.session.commit()
4343
44 @staticmethod
45 def getCurrentUser():
46 if 'email' in session:
47 user = User.query.filter_by(email=session['email']).first()
48 user.update(last_active=datetime.utcnow())
49 return user
50 return None
51
52 def to_dict(self):
53 return {
54 'id': self.id,
55 'username': self.username,
56 'email': self.email,
57 'created': self.created.isoformat(),
58 'last_active': self.last_active.isoformat()
59 }
60
4461 def __repr__(self):
45 return '<User %r %r>' % (self.username, self.email)
62 return '<User:: %r %r>' % (self.username, self.email)