views.py 2.5 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-19 16:6:42 (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).paginate(1, 10)
  24. if not topics.items:
  25. topics = Topic.query.paginate(1, 10)
  26. data = {'topics': topics}
  27. return render_template('forums/index.html', **data)
  28. @site.route('/index')
  29. def forums():
  30. boards = {}
  31. parent_boards = db.session.query(Board.parent_board).group_by(
  32. Board.parent_board)
  33. for parent_board in parent_boards:
  34. child_board = Board.query.filter_by(parent_board=parent_board).all()
  35. boards[parent_board[0]] = child_board
  36. data = {'boards': boards}
  37. return render_template('forums/forums.html', **data)
  38. @site.route('/notices', defaults={'page': 1})
  39. @site.route('/notices/?page=<int:page>')
  40. @login_required
  41. def notice(page):
  42. notices = Notice.query.join(Notice.rece_user).filter(
  43. User.username == current_user.username).paginate(
  44. page,
  45. 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)