views.py 3.9 KB

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