]>
git.datanom.net - flask-test.git/blob - app/models.py
2 from hashlib
import md5
5 followers
= db
.Table('followers',
6 db
.Column('follower_id', db
.Integer
, db
.ForeignKey('user.id')),
7 db
.Column('followed_id', db
.Integer
, db
.ForeignKey('user.id'))
11 id = db
.Column(db
.Integer
, primary_key
=True)
12 nickname
= db
.Column(db
.String(64), index
=True, unique
=True)
13 email
= db
.Column(db
.String(120), index
=True, unique
=True)
14 posts
= db
.relationship('Post', backref
='author', lazy
='dynamic')
15 about_me
= db
.Column(db
.String(140))
16 last_seen
= db
.Column(db
.DateTime
)
17 followed
= db
.relationship('User',
19 primaryjoin
=(followers
.c
.follower_id
== id),
20 secondaryjoin
=(followers
.c
.followed_id
== id),
21 backref
=db
.backref('followers', lazy
='dynamic'),
25 def is_authenticated(self
):
33 def is_anonymous(self
):
38 return unicode(self
.id) # python 2
40 return str(self
.id) # python 3
42 def avatar(self
, size
):
43 return 'http://www.gravatar.com/avatar/%s?d=mm&s=%d' % (md5(self
.email
.encode('utf-8')).hexdigest(), size
)
46 def make_valid_nickname(nickname
):
47 return re
.sub('[^a-zA-Z0-9_\.]', '', nickname
)
50 def make_unique_nickname(nickname
):
51 if User
.query
.filter_by(nickname
=nickname
).first() is None:
55 new_nickname
= nickname
+ str(version
)
56 if User
.query
.filter_by(nickname
=new_nickname
).first() is None:
61 def follow(self
, user
):
62 if not self
.is_following(user
):
63 self
.followed
.append(user
)
66 def unfollow(self
, user
):
67 if self
.is_following(user
):
68 self
.followed
.remove(user
)
71 def is_following(self
, user
):
72 return self
.followed
.filter(followers
.c
.followed_id
== user
.id).count() > 0
74 def followed_posts(self
):
75 return Post
.query
.join(followers
, (followers
.c
.followed_id
== Post
.user_id
)).filter(followers
.c
.follower_id
== self
.id).order_by(Post
.timestamp
.desc())
77 def sorted_posts(self
):
78 return self
.posts
.order_by(Post
.timestamp
.desc())
81 return '<User %r>' % (self
.nickname
)
84 id = db
.Column(db
.Integer
, primary_key
= True)
85 body
= db
.Column(db
.String(140))
86 timestamp
= db
.Column(db
.DateTime
)
87 user_id
= db
.Column(db
.Integer
, db
.ForeignKey('user.id'))
90 return '<Post %r>' % (self
.body
)
This page took 0.064446 seconds and 6 git commands to generate.