Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- followers = db.Table(
- 'followers',
- db.Column('follower_id', db.Integer, db.ForeignKey('user.id')),
- db.Column('followed_id', db.Integer, db.ForeignKey('user.id')) )
- class User(db.Model):
- __searchable__ = ["username"]
- id = db.Column(db.Integer, primary_key=True)
- username = db.Column(db.String(64), index=True, unique=True)
- password = db.Column(db.String(64), index=True, unique=True)
- gender = db.Column(db.String(64), index=True, unique=True)
- date = db.Column(db.String(64), index=True, unique=True)
- posts2 = db.relationship('Message', backref='author', lazy='dynamic')
- posts = db.relationship('Post', backref='author', lazy='dynamic')
- about_me = db.Column(db.String(140))
- last_seen = db.Column(db.DateTime)
- followed = db.relationship('User',
- secondary=followers,
- primaryjoin=(followers.c.follower_id == id),
- secondaryjoin=(followers.c.followed_id == id),
- backref=db.backref('followers', lazy='dynamic'),
- lazy='dynamic')
- @property
- def is_authenticated(self):
- return True
- @property
- def is_active(self):
- return True
- @property
- def is_anonymous(self):
- return False
- def get_id(self):
- try:
- return unicode(self.id) # python 2
- except NameError:
- return str(self.id) # python 3
- def avatar(self, size):
- return 'http://www.gravatar.com/avatar/%s?d=mm&s=%d' %
- (md5(self.username.encode('utf-8')).hexdigest(), size)
- def follow(self, user):
- if not self.is_following(user):
- self.followed.append(user)
- return self
- def unfollow(self, user):
- if self.is_following(user):
- self.followed.remove(user)
- return self
- def is_following(self, user):
- return self.followed.filter(
- followers.c.followed_id == user.id).count() > 0
- def followed_posts(self):
- return Post.query.join(
- followers, (followers.c.followed_id == Post.user_id)).filter(
- followers.c.follower_id == self.id).order_by(
- Post.timestamp.desc())
- def __repr__(self):
- return '<User %r>' % (self.username)
- wa.whoosh_index(app, User)
- class Post(db.Model):
- __searchable__ = ["body"]
- id = db.Column(db.Integer, primary_key=True)
- body = db.Column(db.String(140))
- timestamp = db.Column(db.DateTime)
- user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
- def __repr__(self):
- return '<Post %r>' % (self.body)
- @app.route("/friends/list/<username>", methods = ["GET", "POST"])
- def friends_list(username, page = 1):
- user = User.query.filter_by(username = username).first()
- return render_template("friends_list.html", user = user, username = username)
- <html> <head> <title></title> </head> <body>
- {% if g.user.is_following(user) %} {{ user.followed.count() }} {% endif %}
- {% if g.user.is_following(user) %} {{ username }} {% endif %
- </body> </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement