Commit 0b96a0752f247e7f3ba336886f07d5c973b05203
- Diff rendering mode:
- inline
- side by side
.gitmodules
(0 / 3)
  | |||
1 | [submodule "swtstore/classes/models/um"] | ||
2 | path = swtstore/classes/models/um | ||
3 | url = git@git.pantoto.org:user-management/user-management.git |
swtstore/classes/models/group.py
(39 / 0)
  | |||
1 | # -*- coding utf-8 -*- | ||
2 | |||
3 | |||
4 | # -*- coding: utf-8 -*- | ||
5 | # User Management::Group | ||
6 | |||
7 | from datetime import datetime | ||
8 | |||
9 | from .config import db | ||
10 | |||
11 | class Group(db.Model): | ||
12 | """ | ||
13 | docstring | ||
14 | """ | ||
15 | __tablename__ = 'groups' | ||
16 | |||
17 | id = db.Column(db.Integer, primary_key=True) | ||
18 | name = db.Column(db.String(80), unique=True) | ||
19 | created = db.Column(db.DateTime, default=datetime.utcnow) | ||
20 | created_by = db.Column(db.Integer, db.ForeignKey('users.id')) | ||
21 | |||
22 | creator = db.relationship('User', backref='groups') | ||
23 | |||
24 | def __init__(self, name, creator): | ||
25 | self.name = name | ||
26 | self.creator = creator | ||
27 | |||
28 | # persist object to database | ||
29 | def persist(self): | ||
30 | db.session.add(self) | ||
31 | db.session.commit() | ||
32 | |||
33 | # delete from database | ||
34 | def remove(self): | ||
35 | db.session.delete(self) | ||
36 | db.session.commit() | ||
37 | |||
38 | def __repr__(self): | ||
39 | return '<Group %r>' % self.name |
  | |||
1 | # -*- coding utf-8 -*- | ||
2 | # User Management::Membership | ||
3 | |||
4 | from datetime import datetime | ||
5 | |||
6 | from .config import db | ||
7 | |||
8 | class Membership(db.Model): | ||
9 | """ docstring """ | ||
10 | |||
11 | __tablename__ = 'memberships' | ||
12 | |||
13 | id = db.Column(db.Integer, primary_key=True) | ||
14 | uid = db.Column(db.Integer, db.ForeignKey('users.id')) | ||
15 | gid = db.Column(db.Integer, db.ForeignKey('groups.id')) | ||
16 | created = db.Column(db.DateTime, default=datetime.utcnow) | ||
17 | |||
18 | user = db.relationship('User', backref='memberships') | ||
19 | group = db.relationship('Group', backref='memberships') | ||
20 | |||
21 | def __init__(self, user, group): | ||
22 | self.user = user | ||
23 | self.group = group | ||
24 | |||
25 | # persist in the database | ||
26 | def persist(self): | ||
27 | db.session.add(self) | ||
28 | db.session.commit() | ||
29 | |||
30 | # delete from a database | ||
31 | def remove(self): | ||
32 | db.session.delete(self) | ||
33 | db.session.commit() | ||
34 | |||
35 | def __repr__(self): | ||
36 | return'<Membership %d>' % self.uid |
swtstore/classes/models/user.py
(70 / 0)
  | |||
1 | # -*- coding utf-8 -*- | ||
2 | # User Management::User | ||
3 | |||
4 | from datetime import datetime | ||
5 | from flask import session | ||
6 | |||
7 | #from .config import db | ||
8 | from flask import current_app | ||
9 | # TODO: remove dependency from config file | ||
10 | db = current_app.db | ||
11 | |||
12 | |||
13 | class User(db.Model): | ||
14 | """ docstring """ | ||
15 | |||
16 | __tablename__ = 'users' | ||
17 | |||
18 | id = db.Column(db.Integer, primary_key=True) | ||
19 | username = db.Column(db.String(80)) | ||
20 | email = db.Column(db.String(120), unique=True) | ||
21 | created = db.Column(db.DateTime, default=datetime.utcnow) | ||
22 | last_active = db.Column(db.DateTime, default=datetime.utcnow) | ||
23 | |||
24 | def __init__(self, username, email): | ||
25 | self.username = username | ||
26 | self.email = email | ||
27 | |||
28 | def update(self, **kwargs): | ||
29 | if kwargs.get('username'): | ||
30 | self.username = kwargs.get('username') | ||
31 | if kwargs.get('last_active'): | ||
32 | current_app.logger.debug('Updated last_active timestamp %s for %s', | ||
33 | self, kwargs.get('last_active')) | ||
34 | self.last_active = kwargs.get('last_active') | ||
35 | |||
36 | self.persist() | ||
37 | |||
38 | # persist current object in the database | ||
39 | def persist(self): | ||
40 | db.session.add(self) | ||
41 | db.session.commit() | ||
42 | |||
43 | # delete from database | ||
44 | def remove(self): | ||
45 | db.session.delete(self) | ||
46 | db.session.commit() | ||
47 | |||
48 | @staticmethod | ||
49 | def getCurrentUser(): | ||
50 | if 'email' in session: | ||
51 | user = User.query.filter_by(email=session['email']).first() | ||
52 | user.update(last_active=datetime.utcnow()) | ||
53 | return user | ||
54 | return None | ||
55 | |||
56 | @staticmethod | ||
57 | def getByName(username): | ||
58 | return User.query.filter_by(username=username).first() | ||
59 | |||
60 | def to_dict(self): | ||
61 | return { | ||
62 | 'id': self.id, | ||
63 | 'username': self.username, | ||
64 | 'email': self.email, | ||
65 | 'created': self.created.isoformat(), | ||
66 | 'last_active': self.last_active.isoformat() | ||
67 | } | ||
68 | |||
69 | def __repr__(self): | ||
70 | return '<User:: %r %r>' % (self.username, self.email) |