admin_topic.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/usr/bin/env python
  2. # -*- coding=UTF-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: topics.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-07-02 20:15:46 (CST)
  9. # Last Update:星期六 2016-7-2 20:17:44 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from maple import db
  14. from maple.topic.models import Topic, Reply
  15. from maple.filters import Filters
  16. from .admin import BaseModelView
  17. class TopicModelView(BaseModelView):
  18. can_create = False
  19. column_searchable_list = ('title', 'content', 'author.username')
  20. column_filters = ['publish', 'is_good', 'is_top', 'author.username',
  21. 'vote']
  22. column_exclude_list = ['uid', 'content']
  23. column_editable_list = ['title', 'is_good', 'is_top']
  24. column_default_sort = 'publish'
  25. column_formatters = dict(
  26. content=lambda v, c, m, p: Filters.safe_markdown(m.content))
  27. form_widget_args = {'content': {'rows': 10}}
  28. form_excluded_columns = ('replies', 'collectors', 'followers', 'collects')
  29. form_ajax_refs = {'tags': {'fields': ('tagname', ), 'page_size': 10}}
  30. class ReplyModelView(BaseModelView):
  31. column_searchable_list = ['topic.title', 'content']
  32. column_filters = ['author.username', 'publish', 'updated']
  33. form_excluded_columns = ['topic', 'likers']
  34. form_widget_args = {'content': {'rows': 10}}
  35. class ReplyLikeView(BaseModelView):
  36. column_list = ['content', 'author', 'likers']
  37. form_columns = column_list
  38. def admin_topic(admin):
  39. admin.add_view(TopicModelView(Topic,
  40. db.session,
  41. name='管理主题',
  42. endpoint='admin_topics',
  43. category='主题回复'))
  44. admin.add_view(ReplyModelView(Reply,
  45. db.session,
  46. name='管理回复',
  47. endpoint='admin_replies',
  48. category='主题回复'))
  49. admin.add_view(ReplyLikeView(Reply,
  50. db.session,
  51. name='回复点赞',
  52. endpoint='admin_reply_like',
  53. category='主题回复'))