]>
Commit | Line | Data |
---|---|---|
db4f0ba9 MR |
1 | from app import db |
2 | from hashlib import md5 | |
3 | ||
4 | class 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 | ||
48 | class 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 |