admin.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/usr/bin/env python
  2. # -*- coding=UTF-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: admin.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-05-31 21:42:11 (CST)
  9. # Last Update:星期五 2016-7-8 12:10:51 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from maple import db, app
  14. from maple.main.permission import super_permission
  15. from maple.forums.models import Board, Count, Notice
  16. from maple.topic.models import Tags
  17. from flask import abort
  18. from flask_admin import Admin
  19. from flask_admin.contrib.sqla import ModelView
  20. from flask_admin.form import SecureForm
  21. from flask_wtf import Form
  22. admin = Admin(app, name='HonMaple', template_mode='bootstrap3')
  23. class BaseModelView(ModelView):
  24. session = db.session
  25. page_size = 10
  26. can_view_details = True
  27. form_base_class = Form
  28. # form_base_class = SecureForm
  29. def is_accessible(self):
  30. return super_permission.can()
  31. def inaccessible_callback(self, name, **kwargs):
  32. abort(404)
  33. class BoardModelView(BaseModelView):
  34. column_list = ['parent_board', 'board', 'description', 'rank',
  35. 'count.topics', 'count.all_topics']
  36. column_labels = {'count.topics': '主题', 'count.all_topics': '所有主题'}
  37. form_excluded_columns = ('topics')
  38. class CountModelView(BaseModelView):
  39. column_list = ['board', 'topics', 'all_topics', 'drafts', 'collects',
  40. 'inviteds', 'follows']
  41. inline_models = [(Board, dict(form_excluded_columns=['topics']))]
  42. class TagsModelView(BaseModelView):
  43. column_searchable_list = ['tagname']
  44. form_excluded_columns = ('users', 'topics', 'followers')
  45. class NoticeView(BaseModelView):
  46. column_filters = ['category', 'rece_user.username', 'send_user.username',
  47. 'is_read', 'publish']
  48. column_searchable_list = ['content']
  49. column_editable_list = ['is_read']
  50. form_widget_args = {'content': {'rows': 10}}
  51. admin.add_view(BoardModelView(Board,
  52. db.session,
  53. name='管理版块',
  54. endpoint='admin_boards',
  55. category='管理论坛'))
  56. admin.add_view(CountModelView(Count,
  57. db.session,
  58. name='管理统计',
  59. endpoint='admin_counts',
  60. category='管理论坛'))
  61. admin.add_view(TagsModelView(Tags,
  62. db.session,
  63. name='管理节点',
  64. endpoint='admin_tags',
  65. category='管理论坛'))
  66. admin.add_view(NoticeView(
  67. Notice, db.session,
  68. name='管理通知', endpoint='admin_notice'))
  69. from .admin_user import admin_user
  70. from .admin_topic import admin_topic
  71. from .admin_follow import admin_follow
  72. # from .admin_file import admin_file
  73. admin_user(admin)
  74. admin_topic(admin)
  75. admin_follow(admin)
  76. # admin_file(admin)