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
  • Diff rendering mode:
  • inline
  • side by side

.gitignore

1*.pyc1*.pyc
2config.py

__init__.py

1from user import User1from user import User
2from group import Group2from group import Group
3from membership import Membership3from membership import Membership
4
5from flask import g
6
7def setup_app(app):
8 db = app.db
9 g.db = db

group.py

66
7from datetime import datetime7from datetime import datetime
88
9from .config import db
10
9class Group(db.Model):11class Group(db.Model):
10 """12 """
11 docstring13 docstring
19 created = db.Column(db.DateTime, default=datetime.utcnow)19 created = db.Column(db.DateTime, default=datetime.utcnow)
20 created_by = db.Column(db.Integer, db.ForeignKey('users.id'))20 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
24 def __init__(self, name, creator):24 def __init__(self, name, creator):
25 self.name = name25 self.name = name

membership.py

33
4from datetime import datetime4from datetime import datetime
55
6from .config import db
7
6class Membership(db.Model):8class Membership(db.Model):
7 """ docstring """9 """ docstring """
810
15 gid = db.Column(db.Integer, db.ForeignKey('groups.id'))15 gid = db.Column(db.Integer, db.ForeignKey('groups.id'))
16 created = db.Column(db.DateTime, default=datetime.utcnow)16 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
21 def __init__(self, user, group):21 def __init__(self, user, group):
22 self.user = user22 self.user = user

sample_config.py

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

2# User Management::User2# User Management::User
33
4from datetime import datetime4from 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
11class User(db.Model):10class User(db.Model):
12 """ docstring """11 """ docstring """
1312
22 self.username = username22 self.username = username
23 self.email = email23 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
25 # persist current object in the database34 # persist current object in the database
26 def persist(self):35 def persist(self):
27 db.session.add(self)36 db.session.add(self)
41 db.session.delete(self)41 db.session.delete(self)
42 db.session.commit()42 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
44 def __repr__(self):61 def __repr__(self):
45 return '<User %r %r>' % (self.username, self.email)
62 return '<User:: %r %r>' % (self.username, self.email)