views.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: views.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-12-22 21:49:05 (CST)
  9. # Last Update:星期三 2017-3-29 12:40:41 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from flask import render_template, request
  14. from forums.api.tag.models import Tags
  15. from forums.api.topic.models import Topic
  16. from forums.api.collect.models import Collect
  17. from forums.api.user.models import User
  18. from forums.common.response import HTTPResponse
  19. from forums.common.views import IsAuthMethodView as MethodView
  20. class FollowingTagsView(MethodView):
  21. def get(self):
  22. user = request.user
  23. page, number = self.page_info
  24. filter_dict = {'followers__username': user.username}
  25. tags = Tags.query.filter_by(**filter_dict).paginate(page, number, True)
  26. data = {'tags': tags}
  27. return render_template('follow/following_tags.html', **data)
  28. def post(self):
  29. user = request.user
  30. post_data = request.data
  31. tag_id = post_data.pop('tagId', None)
  32. if tag_id is not None and not User.query.filter_by(
  33. following_tags__id=tag_id).exists():
  34. tag = Tags.query.filter_by(id=tag_id).first_or_404()
  35. user.following_tags.append(tag)
  36. user.save()
  37. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  38. def delete(self):
  39. user = request.user
  40. post_data = request.data
  41. tag_id = post_data.pop('tagId', None)
  42. if tag_id is not None and User.query.filter_by(
  43. following_tags__id=tag_id).exists():
  44. tag = Tags.query.filter_by(id=tag_id).first_or_404()
  45. user.following_tags.remove(tag)
  46. user.save()
  47. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  48. class FollowingTopicsView(MethodView):
  49. def get(self):
  50. user = request.user
  51. page, number = self.page_info
  52. filter_dict = {'followers__username': user.username}
  53. topics = Topic.query.filter_by(**filter_dict).paginate(page, number,
  54. True)
  55. data = {'topics': topics}
  56. return render_template('follow/following_topics.html', **data)
  57. def post(self):
  58. user = request.user
  59. post_data = request.data
  60. topic_id = post_data.pop('topicId', None)
  61. if topic_id is not None and not User.query.filter_by(
  62. following_topics__id=topic_id).exists():
  63. topic = Topic.query.filter_by(id=topic_id).first_or_404()
  64. user.following_topics.append(topic)
  65. user.save()
  66. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  67. def delete(self):
  68. user = request.user
  69. post_data = request.data
  70. topic_id = post_data.pop('topicId', None)
  71. if topic_id is not None and User.query.filter_by(
  72. following_topics__id=topic_id).exists():
  73. topic = Topic.query.filter_by(id=topic_id).first_or_404()
  74. user.following_topics.remove(topic)
  75. user.save()
  76. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  77. class FollowingUsersView(MethodView):
  78. def get(self):
  79. user = request.user
  80. page, number = self.page_info
  81. users = user.following_users.paginate(page, number, True)
  82. data = {'users': users}
  83. return render_template('follow/following_users.html', **data)
  84. def post(self):
  85. user = request.user
  86. post_data = request.data
  87. user_id = post_data.pop('userId', None)
  88. if user_id is not None:
  89. f_user = User.query.filter_by(id=user_id).first_or_404()
  90. if not f_user.is_followed(user):
  91. user.following_users.append(f_user)
  92. user.save()
  93. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  94. def delete(self):
  95. user = request.user
  96. post_data = request.data
  97. user_id = post_data.pop('userId', None)
  98. if user_id is not None:
  99. f_user = User.query.filter_by(id=user_id).first_or_404()
  100. if f_user.is_followed(user):
  101. user.following_users.remove(f_user)
  102. user.save()
  103. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  104. class FollowingCollectsView(MethodView):
  105. def get(self):
  106. user = request.user
  107. page, number = self.page_info
  108. filter_dict = {'followers__username': user.username}
  109. collects = Collect.query.filter_by(**filter_dict).paginate(
  110. page, number, True)
  111. data = {'collects': collects}
  112. return render_template('follow/following_collects.html', **data)
  113. def post(self):
  114. user = request.user
  115. post_data = request.data
  116. collect_id = post_data.pop('collectId', None)
  117. if collect_id is not None and not User.query.filter_by(
  118. following_collects__id=collect_id).exists():
  119. collect = Collect.query.filter_by(id=collect_id).first_or_404()
  120. user.following_collects.append(collect)
  121. user.save()
  122. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  123. def delete(self):
  124. user = request.user
  125. post_data = request.data
  126. collect_id = post_data.pop('collectId', None)
  127. if collect_id is not None and User.query.filter_by(
  128. following_collects__id=collect_id).exists():
  129. collect = Collect.query.filter_by(id=collect_id).first_or_404()
  130. user.following_collects.remove(collect)
  131. user.save()
  132. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()