topic.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: topic.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-12-17 13:01:43 (CST)
  9. # Last Update:星期三 2017-3-29 20:15:59 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from .views import BaseView
  14. from forums.extension import db
  15. from forums.api.topic.models import Topic, Reply
  16. from forums.api.collect.models import Collect
  17. class TopicView(BaseView):
  18. column_searchable_list = ('title', 'content', 'author.username')
  19. column_filters = ['created_at', 'is_good', 'is_top', 'author.username']
  20. column_exclude_list = ['content']
  21. column_editable_list = ['title', 'is_good', 'is_top', 'content_type']
  22. column_default_sort = 'created_at'
  23. column_formatters = dict(
  24. content=lambda v, c, m, p: m.content[:100] + '...',
  25. content_type=lambda v, c, m, p: m.get_choice_display('content_type', 'CONTENT_TYPE')
  26. )
  27. form_choices = {'content_type': Topic.CONTENT_TYPE}
  28. form_widget_args = {'content': {'rows': 10}}
  29. form_excluded_columns = ('replies', 'collects', 'followers')
  30. form_ajax_refs = {'tags': {'fields': ('name', ), 'page_size': 10}}
  31. class CollectView(BaseView):
  32. pass
  33. class ReplyView(BaseView):
  34. column_searchable_list = ['topic.title', 'content']
  35. column_filters = ['author.username', 'created_at']
  36. form_excluded_columns = ['likers']
  37. form_widget_args = {'content': {'rows': 10}}
  38. def register_topic(admin):
  39. admin.add_view(
  40. TopicView(
  41. Topic,
  42. db.session,
  43. name='管理问题',
  44. endpoint='admin_topic',
  45. category='管理主题'))
  46. admin.add_view(
  47. ReplyView(
  48. Reply,
  49. db.session,
  50. name='管理回复',
  51. endpoint='admin_reply',
  52. category='管理主题'))
  53. admin.add_view(
  54. CollectView(
  55. Collect,
  56. db.session,
  57. name='管理收藏',
  58. endpoint='admin_collect',
  59. category='管理主题'))