user.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: user.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-12-17 11:57:11 (CST)
  9. # Last Update:星期六 2017-4-1 21:21:49 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from .views import BaseView
  14. from forums.extension import db
  15. from forums.api.user.models import User, UserInfo, UserSetting
  16. from wtforms import PasswordField
  17. from wtforms.validators import DataRequired
  18. STATUS = UserSetting.STATUS
  19. def display_status(column):
  20. return lambda v, c, m, p: m.get_choice_display(column, 'STATUS')
  21. class UserView(BaseView):
  22. column_exclude_list = ['password', 'info', 'setting']
  23. column_searchable_list = ['username', 'email']
  24. column_filters = ['email', 'is_superuser', 'is_confirmed', 'register_time']
  25. column_editable_list = ['is_confirmed', 'is_superuser']
  26. form_columns = ('username', 'email', 'password', 'is_confirmed',
  27. 'is_superuser')
  28. # inline_models = (UserInfo, UserSetting)
  29. # form_extra_fields = {
  30. # 'password': PasswordField('Password', [DataRequired()])
  31. # }
  32. class UserInfoView(BaseView):
  33. pass
  34. class UserSettingView(BaseView):
  35. column_formatters = dict(
  36. online_status=display_status('online_status'),
  37. topic_list=display_status('topic_list'),
  38. rep_list=display_status('rep_list'),
  39. ntb_list=display_status('ntb_list'),
  40. collect_list=display_status('collect_list'),
  41. locale=lambda v, c, m, p: m.get_choice_display('locale', 'LOCALE'),
  42. timezone=lambda v, c, m, p: m.get_choice_display('timezone', 'TIMEZONE'),
  43. )
  44. column_editable_list = column_formatters.keys()
  45. form_choices = {
  46. 'online_status': UserSetting.STATUS,
  47. 'topic_list': UserSetting.STATUS,
  48. 'rep_list': UserSetting.STATUS,
  49. 'ntb_list': UserSetting.STATUS,
  50. 'collect_list': UserSetting.STATUS,
  51. 'locale': UserSetting.LOCALE,
  52. 'timezone': UserSetting.TIMEZONE
  53. }
  54. def register_user(admin):
  55. admin.add_view(
  56. UserView(
  57. User,
  58. db.session,
  59. name='管理用户',
  60. endpoint='admin_user',
  61. category='管理用户'))
  62. admin.add_view(
  63. UserInfoView(
  64. UserInfo,
  65. db.session,
  66. name='管理用户信息',
  67. endpoint='admin_userinfo',
  68. category='管理用户'))
  69. admin.add_view(
  70. UserSettingView(
  71. UserSetting,
  72. db.session,
  73. name='管理用户设置',
  74. endpoint='admin_usersetting',
  75. category='管理用户'))