views.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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-05-20 13:18:19 (CST)
  9. # Last Update:星期六 2016-6-25 18:4:14 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from flask import Blueprint, render_template, g, request, abort
  14. from flask_login import current_user, login_required
  15. from maple import app, db
  16. from maple.helpers import is_num
  17. from maple.user.models import User
  18. from maple.forums.models import Notice, Board
  19. from maple.topic.models import Topic
  20. site = Blueprint('forums', __name__)
  21. @site.route('/', methods=['GET'])
  22. def index():
  23. topics = Topic.query.filter_by(is_good=True, is_top=False).paginate(1, 10)
  24. top_topics = Topic.query.filter_by(is_top=True).limit(5).all()
  25. if not topics.items:
  26. topics = Topic.query.paginate(1, 10)
  27. data = {'topics': topics, 'top_topics': top_topics}
  28. return render_template('forums/index.html', **data)
  29. @site.route('/index')
  30. def forums():
  31. boards = {}
  32. parent_boards = db.session.query(Board.parent_board).group_by(
  33. Board.parent_board)
  34. for parent_board in parent_boards:
  35. child_board = Board.query.filter_by(parent_board=parent_board).all()
  36. boards[parent_board[0]] = child_board
  37. data = {'boards': boards}
  38. return render_template('forums/forums.html', **data)
  39. @site.route('/notices', defaults={'page': 1})
  40. @site.route('/notices/?page=<int:page>')
  41. @login_required
  42. def notice(page):
  43. notices = Notice.query.join(Notice.rece_user).filter(
  44. User.username == current_user.username).paginate(
  45. page, app.config['PER_PAGE'],
  46. error_out=True)
  47. return render_template('forums/notice.html', notices=notices)
  48. @site.route('/userlist')
  49. @login_required
  50. def userlist():
  51. page = is_num(request.args.get('page'))
  52. users = User.query.paginate(page, app.config['PER_PAGE'], error_out=True)
  53. data = {'users': users}
  54. return render_template('forums/userlist.html', **data)
  55. @site.route('/about')
  56. def about():
  57. return render_template('forums/about.html')
  58. @site.route('/help')
  59. def help():
  60. return render_template('forums/help.html')
  61. @site.route('/order', methods=['POST'])
  62. def order():
  63. from maple.main.orderby import form_judge
  64. form = g.sort_form
  65. if form.validate_on_submit():
  66. topics = form_judge(form)
  67. data = {'topics': topics}
  68. return render_template('base/sort.html', **data)
  69. else:
  70. abort(404)