admin.py 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. # -*- coding: utf-8 -*-
  2. # Register your models here.
  3. from django.contrib import admin
  4. from django.contrib.auth.admin import UserAdmin # 从django继承过来后进行定制
  5. from django.utils.translation import ugettext_lazy as _
  6. from django.contrib.auth.forms import UserCreationForm, UserChangeForm # admin中涉及到的两个表单
  7. from apps.AppInfoManage.models import MyUser, User_Group, User_Log, Logo
  8. class User_exAdmin(admin.ModelAdmin): # 验证码部分展示
  9. list_display = ('valid_code', 'valid_time', 'email')
  10. # custom user admin
  11. class MyUserCreationForm(UserCreationForm): # 增加用户表单重新定义,继承自UserCreationForm
  12. def __init__(self, *args, **kwargs):
  13. super(MyUserCreationForm, self).__init__(*args, **kwargs)
  14. # 必填项:
  15. self.fields['email'].required = True # 为了让此字段在admin中为必选项,自定义一个form
  16. # self.fields['user_remark'].required = True # 其实这个name字段可以不用设定required,因为在models中的MyUser类中已经设定了blank=False,但email字段在系统自带User的models中已经设定为
  17. #self.fields['user_phone'].required = True
  18. # email = models.EmailField(_('email address'), blank=True),除非直接改源码的django(不建议这么做),不然还是自定义一个表单做一下继承吧。
  19. class MyUserChangeForm(UserChangeForm): # 编辑用户表单重新定义,继承自UserChangeForm
  20. def __init__(self, *args, **kwargs):
  21. super(MyUserChangeForm, self).__init__(*args, **kwargs)
  22. self.fields['email'].required = True
  23. class CustomUserAdmin(UserAdmin):
  24. def __init__(self, *args, **kwargs):
  25. super(CustomUserAdmin, self).__init__(*args, **kwargs)
  26. self.list_display = (
  27. 'username', # 'user_remark',
  28. 'user_rank', 'user_phone', 'base_name',
  29. 'user_picture', 'base_show', 'user_pro',
  30. 'user_city', 'user_area',
  31. 'email', 'is_active',
  32. 'is_staff', 'is_superuser',
  33. 'is_agency', 'user_agency'
  34. )
  35. self.search_fields = ('username', 'email', 'user_phone')
  36. self.form = MyUserChangeForm # 编辑用户表单,使用自定义的表单
  37. self.add_form = MyUserCreationForm # 添加用户表单,使用自定义的表单
  38. # 以上的属性都可以在django源码的UserAdmin类中找到,我们做以覆盖
  39. # 这个方法在源码的admin/options.py文件的ModelAdmin这个类中定义,我们要重新定义它,以达到不同权限的用户,返回的表单内容不同
  40. def changelist_view(self, request, extra_context=None):
  41. # 非super用户不能设定编辑是否为super用户:
  42. if not request.user.is_superuser:
  43. self.fieldsets = ((None, {'fields': ('username', 'password',)}),
  44. # 个人信息栏:_ 将('')里的内容国际化,这样可以让admin里的文字自动随着LANGUAGE_CODE切换中英文、
  45. (_('Personal info'), {'fields': (
  46. 'user_remark', 'user_rank', 'user_phone', 'user_picture', 'base_name','base_show', 'user_pro', 'user_city', 'user_area', 'email')}),
  47. # 权限栏:
  48. (_('Permissions'), {
  49. 'fields': ('is_active', 'is_staff', 'groups')}),
  50. # 重要日期栏:
  51. (_('Important dates'), {
  52. 'fields': ('last_login', 'date_joined')}),
  53. ) # 这里('Permissions')中没有'is_superuser',此字段定义UserChangeForm表单中的具体显示内容,并可以分类显示
  54. # 非超级用户创建用户:
  55. self.add_fieldsets = ((None, {'classes': ('wide',),
  56. 'fields': ('username', 'password1', 'password2', 'email', 'user_remark', 'user_rank', 'user_phone',
  57. 'user_picture', 'base_name', 'base_show', 'user_pro', 'user_city', 'user_area', 'is_active','is_staff', 'groups'),
  58. }),
  59. ) # 此字段定义UserCreationForm表单中的具体显示内容
  60. # super账户可以做任何事
  61. else:
  62. self.fieldsets = ((None, {'fields': ('username', 'password',)}),
  63. # 个人信息栏:
  64. (_('Personal info'), {'fields': (
  65. 'user_remark', 'user_rank', 'user_phone', 'user_picture','base_name', 'base_show', 'user_pro', 'user_city', 'user_area', 'email','user_agency','user_logo','user_header')}),
  66. # 权限栏:
  67. (_('Permissions'), {
  68. 'fields': ('is_active', 'is_staff', 'is_superuser','is_agency', 'groups')}),
  69. # 重要日期栏:
  70. (_('Important dates'), {
  71. 'fields': ('last_login', 'date_joined', 'expire_date')}),
  72. )
  73. # 超级用户创建用户:
  74. self.add_fieldsets = ((None,
  75. {'classes': ('wide',),
  76. 'fields': ('username', 'password1',
  77. 'password2', 'email',
  78. 'user_remark', 'user_rank', 'base_name',
  79. 'user_phone', 'user_picture', 'base_show',
  80. 'user_pro', 'user_city',
  81. 'user_area', 'is_active',
  82. 'is_staff', 'is_superuser',
  83. 'groups'
  84. ),
  85. }),
  86. )
  87. return super(CustomUserAdmin, self).changelist_view(request, extra_context)
  88. # 设置每页显示记录数:
  89. list_per_page = 10
  90. admin.site.register(MyUser, CustomUserAdmin)
  91. #-----------------------------------------------------------------------------------------
  92. # 定制自定义用户组User_Group的 Adminx 后台
  93. class User_GroupAdmin(admin.ModelAdmin):
  94. list_display = [
  95. 'id',
  96. 'name',
  97. 'role_describe',
  98. 'role_cre_time',
  99. 'role_cre_user',
  100. 'role_logo',
  101. 'role_footer'
  102. ]
  103. fields = (
  104. 'name',
  105. 'role_describe',
  106. 'role_cre_time',
  107. 'role_cre_user',
  108. 'role_logo',
  109. 'role_footer'
  110. )
  111. # 设置每页显示记录数:
  112. list_per_page = 10
  113. admin.site.register(User_Group, User_GroupAdmin)
  114. # 定制自定义用户操作日志User_Log的Admin 后台
  115. @admin.register(User_Log)
  116. class User_LogAdmin(admin.ModelAdmin):
  117. list_display = [
  118. # 'id',
  119. 'log_user',
  120. 'log_time',
  121. 'log_ip',
  122. 'log_desc',
  123. ]
  124. fields = (
  125. # 'id',
  126. 'log_user',
  127. 'log_time',
  128. 'log_ip',
  129. 'log_desc',
  130. )
  131. search_fields = [
  132. 'log_user',
  133. ]
  134. list_filter = (
  135. 'log_user',
  136. 'log_ip',
  137. 'log_time'
  138. )
  139. # 设置点击哪些字段可以进入修改页面:
  140. list_display_links = (
  141. 'log_user',
  142. )
  143. # 设置每页显示记录数:
  144. list_per_page = 10
  145. # @admin.register(Agency)
  146. # class AgencyAdmin(admin.ModelAdmin):
  147. # list_display = [
  148. # 'agency_name',
  149. # 'agency_desc',
  150. # ]
  151. # fields = (
  152. # 'agency_name',
  153. # 'agency_desc'
  154. # )
  155. # search_fields = [
  156. # 'agency_name',
  157. # ]
  158. # list_display_links = (
  159. # 'agency_name',
  160. # 'agency_desc'
  161. # )
  162. # list_per_page = 10
  163. # Logo的Admin 后台
  164. @admin.register(Logo)
  165. class LogoAdmin(admin.ModelAdmin):
  166. list_display = [
  167. 'role_describe',
  168. 'role_cre_time',
  169. 'role_cre_user',
  170. 'role_logo',
  171. 'role_footer',
  172. 'role_header'
  173. ]
  174. fields = (
  175. 'role_describe',
  176. 'role_cre_time',
  177. 'role_cre_user',
  178. 'role_logo',
  179. 'role_footer',
  180. 'role_header'
  181. )
  182. search_fields = [
  183. 'role_describe',
  184. ]
  185. list_filter = (
  186. 'role_cre_time',
  187. )
  188. # 设置点击哪些字段可以进入修改页面:
  189. list_display_links = (
  190. 'role_describe',
  191. )
  192. # 设置每页显示记录数:
  193. list_per_page = 10