views.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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-17 20:45:08 (CST)
  9. # Last Update:星期三 2017-3-29 13:46:30 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from flask import render_template, request
  14. from flask_babelex import gettext as _
  15. from forums.api.topic.models import Topic
  16. from forums.common.views import BaseMethodView as MethodView
  17. from forums.common.utils import (gen_filter_dict, gen_order_by)
  18. from .models import Board
  19. class IndexView(MethodView):
  20. def get(self):
  21. topics = Topic.query.filter_by(
  22. is_good=True, is_top=False).paginate(1, 10)
  23. top_topics = Topic.query.filter_by(is_top=True).limit(5)
  24. if not topics.items:
  25. topics = Topic.query.filter_by(is_top=False).paginate(1, 10)
  26. data = {'title': '', 'topics': topics, 'top_topics': top_topics}
  27. return render_template('forums/index.html', **data)
  28. class AboutView(MethodView):
  29. def get(self):
  30. data = {'title': _('About - ')}
  31. return render_template('forums/about.html', **data)
  32. class HelpView(MethodView):
  33. def get(self):
  34. data = {'title': _('Help - ')}
  35. return render_template('forums/help.html', **data)
  36. class ContactView(MethodView):
  37. def get(self):
  38. data = {'title': _('Contact - ')}
  39. return render_template('forums/contact.html', **data)
  40. class BoardListView(MethodView):
  41. def get(self):
  42. query_dict = request.data
  43. page, number = self.page_info
  44. keys = ['name']
  45. order_by = gen_order_by(query_dict, keys)
  46. filter_dict = gen_filter_dict(query_dict, keys)
  47. filter_dict.update(parent_id=None)
  48. boards = Board.query.filter_by(
  49. **filter_dict).order_by(*order_by).paginate(page, number, True)
  50. data = {'title': 'Board', 'boards': boards}
  51. return render_template('board/board_list.html', **data)
  52. class BoardView(MethodView):
  53. def get(self, boardId):
  54. board = Board.query.filter_by(id=boardId).first_or_404()
  55. topics = self.topics(boardId)
  56. data = {'title': 'Board', 'board': board, 'topics': topics}
  57. return render_template('board/board.html', **data)
  58. def topics(self, boardId):
  59. query_dict = request.data
  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(board_id=boardId)
  65. topics = Topic.query.filter_by(
  66. **filter_dict).order_by(*order_by).paginate(page, number, True)
  67. return topics