-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodels.py
71 lines (56 loc) · 2.11 KB
/
models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import hashlib
import datetime
from init import app, db
class User(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
login = db.Column(db.String(20))
email = db.Column(db.String(100), unique=True)
pw_hash = db.Column(db.String(64))
location = db.Column(db.String(40))
short_bio = db.Column(db.String(200))
def follow_state(self, other):
if self.id == other:
return 'self'
forward = Follow.query.filter_by(init_id=self.id, respond_id=other).first()
if forward:
return 'following'
else:
return 'none'
@property
def grav_hash(self):
hash = hashlib.md5()
hash.update(self.email.strip().lower().encode('utf8'))
return hash.hexdigest()
@property
def jsonable(self):
return {
'id': self.id,
'grav_hash': self.grav_hash,
'name': self.name
}
class Follow(db.Model):
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
init_id = db.Column(db.Integer, db.ForeignKey('user.id'))
respond_id = db.Column(db.Integer, db.ForeignKey('user.id'))
init = db.relationship('User', foreign_keys=[init_id])
respond = db.relationship('User', foreign_keys=[respond_id])
class Posts(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
content = db.Column(db.String(256))
creator_id = db.Column(db.Integer, db.ForeignKey('user.id'))
creator_login = db.Column(db.String(50))
creator = db.relationship('User', backref='posts')
login = db.Column(db.String(256))
timestamp = db.Column(db.DateTime, default=datetime.datetime.now)
photo = db.Column(db.BLOB)
photo_type = db.Column(db.String(50))
@property
def jsonable(self):
return {
'post_id': self.id,
'timestamp': str(self.timestamp),
'has_photo': self.photo is not None
}
User.follow = db.relationship('User', secondary='follow', primaryjoin=User.id==Follow.init_id,
secondaryjoin=User.id==Follow.respond_id)
db.create_all(app=app)