views.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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-15 22:08:06 (CST)
  9. # Last Update:星期二 2017-3-28 22:33:11 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from flask import redirect, render_template, request, url_for
  14. from flask_login import current_user
  15. from forums.api.forums.models import Board
  16. from forums.api.tag.models import Tags
  17. from forums.api.topic.models import Topic, Reply
  18. from forums.api.collect.models import Collect
  19. from forums.common.utils import gen_filter_dict, gen_order_by
  20. from forums.common.views import BaseMethodView as MethodView
  21. from .models import User
  22. class UserListView(MethodView):
  23. def get(self):
  24. query_dict = request.data
  25. page, number = self.page_info
  26. keys = ['username']
  27. order_by = gen_order_by(query_dict, keys)
  28. filter_dict = gen_filter_dict(query_dict, keys)
  29. users = User.query.filter_by(
  30. **filter_dict).order_by(*order_by).paginate(page, number, True)
  31. return render_template('user/user_list.html', users=users)
  32. class UserView(MethodView):
  33. def get(self, username):
  34. query_dict = request.data
  35. user = User.query.filter_by(username=username).first_or_404()
  36. page, number = self.page_info
  37. keys = ['title']
  38. order_by = gen_order_by(query_dict, keys)
  39. filter_dict = gen_filter_dict(query_dict, keys)
  40. filter_dict.update(author_id=user.id)
  41. topics = Topic.query.filter_by(
  42. **filter_dict).order_by(*order_by).paginate(page, number, True)
  43. setting = user.setting
  44. topic_is_allowed = False
  45. if setting.topic_list == 1 or (setting.topic_list == 2 and
  46. current_user.is_authenticated):
  47. topic_is_allowed = True
  48. if current_user.is_authenticated and current_user.id == user.id:
  49. topic_is_allowed = True
  50. data = {
  51. 'topics': topics,
  52. 'user': user,
  53. 'topic_is_allowed': topic_is_allowed
  54. }
  55. return render_template('user/user.html', **data)
  56. class UserReplyListView(MethodView):
  57. def get(self, username):
  58. query_dict = request.data
  59. user = User.query.filter_by(username=username).first_or_404()
  60. page, number = self.page_info
  61. keys = ['title']
  62. order_by = gen_order_by(query_dict, keys)
  63. filter_dict = gen_filter_dict(query_dict, keys)
  64. filter_dict.update(author_id=user.id)
  65. replies = Reply.query.filter_by(
  66. **filter_dict).order_by(*order_by).paginate(page, number, True)
  67. setting = user.setting
  68. replies_is_allowed = False
  69. if setting.rep_list == 1 or (current_user.is_authenticated and
  70. setting.rep_list == 2):
  71. replies_is_allowed = True
  72. if current_user.is_authenticated and current_user.id == user.id:
  73. replies_is_allowed = True
  74. data = {
  75. 'replies': replies,
  76. 'user': user,
  77. 'replies_is_allowed': replies_is_allowed
  78. }
  79. return render_template('user/replies.html', **data)
  80. class UserFollowerListView(MethodView):
  81. def get(self, username):
  82. query_dict = request.data
  83. user = User.query.filter_by(username=username).first_or_404()
  84. page, number = self.page_info
  85. keys = ['title']
  86. order_by = gen_order_by(query_dict, keys)
  87. filter_dict = gen_filter_dict(query_dict, keys)
  88. filter_dict.update(author_id=user.id)
  89. followers = Collect.query.filter_by(
  90. **filter_dict).order_by(*order_by).paginate(page, number, True)
  91. data = {'followers': followers, 'user': user}
  92. return render_template('user/followers.html', **data)
  93. class UserFollowingListView(MethodView):
  94. def get(self):
  95. return redirect(url_for('follow.topic'))
  96. class UserCollectListView(MethodView):
  97. def get(self, username):
  98. return redirect(url_for('follow.collect'))