]> git.datanom.net - flask-test.git/blame - app/models.py
First half
[flask-test.git] / app / models.py
CommitLineData
db4f0ba9
MR
1from app import db
2from hashlib import md5
3
4class User(db.Model):
5 id = db.Column(db.Integer, primary_key=True)
6 nickname = db.Column(db.String(64), index=True, unique=True)
7 email = db.Column(db.String(120), index=True, unique=True)
8 posts = db.relationship('Post', backref='author', lazy='dynamic')
9 about_me = db.Column(db.String(140))
10 last_seen = db.Column(db.DateTime)
11
12 @property
13 def is_authenticated(self):
14 return True
15
16 @property
17 def is_active(self):
18 return True
19
20 @property
21 def is_anonymous(self):
22 return False
23
24 def get_id(self):
25 try:
26 return unicode(self.id) # python 2
27 except NameError:
28 return str(self.id) # python 3
29
30 def avatar(self, size):
31 return 'http://www.gravatar.com/avatar/%s?d=mm&s=%d' % (md5(self.email.encode('utf-8')).hexdigest(), size)
32
33 @staticmethod
34 def make_unique_nickname(nickname):
35 if User.query.filter_by(nickname=nickname).first() is None:
36 return nickname
37 version = 2
38 while True:
39 new_nickname = nickname + str(version)
40 if User.query.filter_by(nickname=new_nickname).first() is None:
41 break
42 version += 1
43 return new_nickname
44
45 def __repr__(self):
46 return '<User %r>' % (self.nickname)
47
48class Post(db.Model):
49 id = db.Column(db.Integer, primary_key = True)
50 body = db.Column(db.String(140))
51 timestamp = db.Column(db.DateTime)
52 user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
53
54 def __repr__(self):
55 return '<Post %r>' % (self.body)
56
This page took 0.035001 seconds and 5 git commands to generate.