views.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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-15 19:4:31 (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, app.config['PER_PAGE'],
  45. error_out=True)
  46. return render_template('forums/notice.html', notices=notices)
  47. @site.route('/userlist')
  48. @login_required
  49. def userlist():
  50. page = is_num(request.args.get('page'))
  51. users = User.query.paginate(page, app.config['PER_PAGE'], error_out=True)
  52. data = {'users': users}
  53. return render_template('forums/userlist.html', **data)
  54. @site.route('/about')
  55. def about():
  56. return render_template('forums/about.html')
  57. @site.route('/help')
  58. def help():
  59. return render_template('forums/help.html')
  60. @site.route('/order', methods=['POST'])
  61. def order():
  62. from maple.main.orderby import form_judge
  63. form = g.sort_form
  64. if form.validate_on_submit():
  65. topics = form_judge(form)
  66. data = {'topics': topics}
  67. return render_template('base/sort.html', **data)
  68. else:
  69. abort(404)