views.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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-27 22:0:17 (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 Collect, Topic
  16. from forums.api.user.models import User
  17. from forums.common.response import HTTPResponse
  18. from forums.common.views import IsAuthMethodView as MethodView
  19. class FollowingTagsView(MethodView):
  20. def get(self):
  21. user = request.user
  22. page, number = self.page_info
  23. filter_dict = {'followers__username': user.username}
  24. tags = Tags.query.filter_by(**filter_dict).paginate(page, number, True)
  25. data = {'tags': tags}
  26. return render_template('follow/following_tags.html', **data)
  27. def post(self):
  28. user = request.user
  29. post_data = request.data
  30. tag_id = post_data.pop('tagId', None)
  31. if tag_id is not None and not User.query.filter_by(
  32. following_tags__id=tag_id).exists():
  33. tag = Tags.query.filter_by(id=tag_id).first_or_404()
  34. user.following_tags.append(tag)
  35. user.save()
  36. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  37. def delete(self):
  38. user = request.user
  39. post_data = request.data
  40. tag_id = post_data.pop('tagId', None)
  41. if tag_id is not None and User.query.filter_by(
  42. following_tags__id=tag_id).exists():
  43. tag = Tags.query.filter_by(id=tag_id).first_or_404()
  44. user.following_tags.remove(tag)
  45. user.save()
  46. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  47. class FollowingTopicsView(MethodView):
  48. def get(self):
  49. user = request.user
  50. page, number = self.page_info
  51. filter_dict = {'followers__username': user.username}
  52. topics = Topic.query.filter_by(**filter_dict).paginate(page, number,
  53. True)
  54. data = {'topics': topics}
  55. return render_template('follow/following_topics.html', **data)
  56. def post(self):
  57. user = request.user
  58. post_data = request.data
  59. topic_id = post_data.pop('topicId', None)
  60. if topic_id is not None and not User.query.filter_by(
  61. following_topics__id=topic_id).exists():
  62. topic = Topic.query.filter_by(id=topic_id).first_or_404()
  63. user.following_topics.append(topic)
  64. user.save()
  65. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  66. def delete(self):
  67. user = request.user
  68. post_data = request.data
  69. topic_id = post_data.pop('topicId', None)
  70. if topic_id is not None and User.query.filter_by(
  71. following_topics__id=topic_id).exists():
  72. topic = Topic.query.filter_by(id=topic_id).first_or_404()
  73. user.following_topics.remove(topic)
  74. user.save()
  75. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  76. class FollowingUsersView(MethodView):
  77. def get(self):
  78. user = request.user
  79. page, number = self.page_info
  80. users = user.following_users.paginate(page, number, True)
  81. data = {'users': users}
  82. return render_template('follow/following_users.html', **data)
  83. def post(self):
  84. user = request.user
  85. post_data = request.data
  86. user_id = post_data.pop('userId', None)
  87. if user_id is not None and not User.query.filter_by(
  88. following_users__id=user_id).exists():
  89. f_user = User.query.filter_by(id=user_id).first_or_404()
  90. user.following_users.append(f_user)
  91. user.save()
  92. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  93. def delete(self):
  94. user = request.user
  95. post_data = request.data
  96. user_id = post_data.pop('userId', None)
  97. if user_id is not None and User.query.filter_by(
  98. following_users__id=user_id).exists():
  99. f_user = User.query.filter_by(id=user_id).first_or_404()
  100. user.following_users.remove(f_user)
  101. user.save()
  102. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  103. class FollowingCollectsView(MethodView):
  104. def get(self):
  105. user = request.user
  106. page, number = self.page_info
  107. filter_dict = {'followers__username': user.username}
  108. collects = Collect.query.filter_by(**filter_dict).paginate(
  109. page, number, True)
  110. data = {'collects': collects}
  111. return render_template('follow/following_collects.html', **data)
  112. def post(self):
  113. user = request.user
  114. post_data = request.data
  115. collect_id = post_data.pop('collectId', None)
  116. if collect_id is not None and not User.query.filter_by(
  117. following_collects__id=collect_id).exists():
  118. collect = Collect.query.filter_by(id=collect_id).first_or_404()
  119. user.following_collects.append(collect)
  120. user.save()
  121. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()
  122. def delete(self):
  123. user = request.user
  124. post_data = request.data
  125. collect_id = post_data.pop('collectId', None)
  126. if collect_id is not None and User.query.filter_by(
  127. following_collects__id=collect_id).exists():
  128. collect = Collect.query.filter_by(id=collect_id).first_or_404()
  129. user.following_collects.remove(collect)
  130. user.save()
  131. return HTTPResponse(HTTPResponse.NORMAL_STATUS).to_response()