Advertisement
Guest User

Untitled

a guest
Sep 15th, 2017
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. followers = db.Table(
  2. 'followers',
  3. db.Column('follower_id', db.Integer, db.ForeignKey('user.id')),
  4. db.Column('followed_id', db.Integer, db.ForeignKey('user.id')) )
  5.  
  6. class User(db.Model):
  7. __searchable__ = ["username"]
  8.  
  9. id = db.Column(db.Integer, primary_key=True)
  10. username = db.Column(db.String(64), index=True, unique=True)
  11. password = db.Column(db.String(64), index=True, unique=True)
  12. gender = db.Column(db.String(64), index=True, unique=True)
  13. date = db.Column(db.String(64), index=True, unique=True)
  14. posts2 = db.relationship('Message', backref='author', lazy='dynamic')
  15. posts = db.relationship('Post', backref='author', lazy='dynamic')
  16. about_me = db.Column(db.String(140))
  17. last_seen = db.Column(db.DateTime)
  18. followed = db.relationship('User',
  19. secondary=followers,
  20. primaryjoin=(followers.c.follower_id == id),
  21. secondaryjoin=(followers.c.followed_id == id),
  22. backref=db.backref('followers', lazy='dynamic'),
  23. lazy='dynamic')
  24.  
  25. @property
  26. def is_authenticated(self):
  27. return True
  28.  
  29. @property
  30. def is_active(self):
  31. return True
  32.  
  33. @property
  34. def is_anonymous(self):
  35. return False
  36.  
  37. def get_id(self):
  38. try:
  39. return unicode(self.id) # python 2
  40. except NameError:
  41. return str(self.id) # python 3
  42.  
  43. def avatar(self, size):
  44. return 'http://www.gravatar.com/avatar/%s?d=mm&s=%d' %
  45. (md5(self.username.encode('utf-8')).hexdigest(), size)
  46.  
  47. def follow(self, user):
  48. if not self.is_following(user):
  49. self.followed.append(user)
  50. return self
  51.  
  52. def unfollow(self, user):
  53. if self.is_following(user):
  54. self.followed.remove(user)
  55. return self
  56.  
  57. def is_following(self, user):
  58. return self.followed.filter(
  59. followers.c.followed_id == user.id).count() > 0
  60.  
  61. def followed_posts(self):
  62. return Post.query.join(
  63. followers, (followers.c.followed_id == Post.user_id)).filter(
  64. followers.c.follower_id == self.id).order_by(
  65. Post.timestamp.desc())
  66.  
  67. def __repr__(self):
  68. return '<User %r>' % (self.username)
  69.  
  70. wa.whoosh_index(app, User)
  71.  
  72. class Post(db.Model):
  73. __searchable__ = ["body"]
  74.  
  75. id = db.Column(db.Integer, primary_key=True)
  76. body = db.Column(db.String(140))
  77. timestamp = db.Column(db.DateTime)
  78. user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
  79.  
  80. def __repr__(self):
  81. return '<Post %r>' % (self.body)
  82.  
  83. @app.route("/friends/list/<username>", methods = ["GET", "POST"])
  84. def friends_list(username, page = 1):
  85. user = User.query.filter_by(username = username).first()
  86. return render_template("friends_list.html", user = user, username = username)
  87.  
  88. <html> <head> <title></title> </head> <body>
  89.  
  90. {% if g.user.is_following(user) %} {{ user.followed.count() }} {% endif %}
  91.  
  92. {% if g.user.is_following(user) %} {{ username }} {% endif %
  93.  
  94. </body> </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement