| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- # -*- coding: utf-8 -*-
- # Register your models here.
- from django.contrib import admin
- from django.contrib.auth.admin import UserAdmin # 从django继承过来后进行定制
- from django.utils.translation import ugettext_lazy as _
- from django.contrib.auth.forms import UserCreationForm, UserChangeForm # admin中涉及到的两个表单
- from apps.AppInfoManage.models import MyUser, User_Group, User_Log, Logo
- class User_exAdmin(admin.ModelAdmin): # 验证码部分展示
- list_display = ('valid_code', 'valid_time', 'email')
- # custom user admin
- class MyUserCreationForm(UserCreationForm): # 增加用户表单重新定义,继承自UserCreationForm
- def __init__(self, *args, **kwargs):
- super(MyUserCreationForm, self).__init__(*args, **kwargs)
- # 必填项:
- self.fields['email'].required = True # 为了让此字段在admin中为必选项,自定义一个form
- # self.fields['user_remark'].required = True # 其实这个name字段可以不用设定required,因为在models中的MyUser类中已经设定了blank=False,但email字段在系统自带User的models中已经设定为
- #self.fields['user_phone'].required = True
- # email = models.EmailField(_('email address'), blank=True),除非直接改源码的django(不建议这么做),不然还是自定义一个表单做一下继承吧。
- class MyUserChangeForm(UserChangeForm): # 编辑用户表单重新定义,继承自UserChangeForm
- def __init__(self, *args, **kwargs):
- super(MyUserChangeForm, self).__init__(*args, **kwargs)
- self.fields['email'].required = True
- class CustomUserAdmin(UserAdmin):
- def __init__(self, *args, **kwargs):
- super(CustomUserAdmin, self).__init__(*args, **kwargs)
- self.list_display = (
- 'username', # 'user_remark',
- 'user_rank', 'user_phone', 'base_name',
- 'user_picture', 'base_show', 'user_pro',
- 'user_city', 'user_area',
- 'email', 'is_active',
- 'is_staff', 'is_superuser',
- 'is_agency', 'user_agency'
- )
- self.search_fields = ('username', 'email', 'user_phone')
- self.form = MyUserChangeForm # 编辑用户表单,使用自定义的表单
- self.add_form = MyUserCreationForm # 添加用户表单,使用自定义的表单
- # 以上的属性都可以在django源码的UserAdmin类中找到,我们做以覆盖
- # 这个方法在源码的admin/options.py文件的ModelAdmin这个类中定义,我们要重新定义它,以达到不同权限的用户,返回的表单内容不同
- def changelist_view(self, request, extra_context=None):
- # 非super用户不能设定编辑是否为super用户:
- if not request.user.is_superuser:
- self.fieldsets = ((None, {'fields': ('username', 'password',)}),
- # 个人信息栏:_ 将('')里的内容国际化,这样可以让admin里的文字自动随着LANGUAGE_CODE切换中英文、
- (_('Personal info'), {'fields': (
- 'user_remark', 'user_rank', 'user_phone', 'user_picture', 'base_name','base_show', 'user_pro', 'user_city', 'user_area', 'email')}),
- # 权限栏:
- (_('Permissions'), {
- 'fields': ('is_active', 'is_staff', 'groups')}),
- # 重要日期栏:
- (_('Important dates'), {
- 'fields': ('last_login', 'date_joined')}),
- ) # 这里('Permissions')中没有'is_superuser',此字段定义UserChangeForm表单中的具体显示内容,并可以分类显示
- # 非超级用户创建用户:
- self.add_fieldsets = ((None, {'classes': ('wide',),
- 'fields': ('username', 'password1', 'password2', 'email', 'user_remark', 'user_rank', 'user_phone',
- 'user_picture', 'base_name', 'base_show', 'user_pro', 'user_city', 'user_area', 'is_active','is_staff', 'groups'),
- }),
- ) # 此字段定义UserCreationForm表单中的具体显示内容
- # super账户可以做任何事
- else:
- self.fieldsets = ((None, {'fields': ('username', 'password',)}),
- # 个人信息栏:
- (_('Personal info'), {'fields': (
- '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')}),
- # 权限栏:
- (_('Permissions'), {
- 'fields': ('is_active', 'is_staff', 'is_superuser','is_agency', 'groups')}),
- # 重要日期栏:
- (_('Important dates'), {
- 'fields': ('last_login', 'date_joined', 'expire_date')}),
- )
- # 超级用户创建用户:
- self.add_fieldsets = ((None,
- {'classes': ('wide',),
- 'fields': ('username', 'password1',
- 'password2', 'email',
- 'user_remark', 'user_rank', 'base_name',
- 'user_phone', 'user_picture', 'base_show',
- 'user_pro', 'user_city',
- 'user_area', 'is_active',
- 'is_staff', 'is_superuser',
- 'groups'
- ),
- }),
- )
- return super(CustomUserAdmin, self).changelist_view(request, extra_context)
- # 设置每页显示记录数:
- list_per_page = 10
- admin.site.register(MyUser, CustomUserAdmin)
- #-----------------------------------------------------------------------------------------
- # 定制自定义用户组User_Group的 Adminx 后台
- class User_GroupAdmin(admin.ModelAdmin):
- list_display = [
- 'id',
- 'name',
- 'role_describe',
- 'role_cre_time',
- 'role_cre_user',
- 'role_logo',
- 'role_footer'
- ]
- fields = (
- 'name',
- 'role_describe',
- 'role_cre_time',
- 'role_cre_user',
- 'role_logo',
- 'role_footer'
- )
- # 设置每页显示记录数:
- list_per_page = 10
- admin.site.register(User_Group, User_GroupAdmin)
- # 定制自定义用户操作日志User_Log的Admin 后台
- @admin.register(User_Log)
- class User_LogAdmin(admin.ModelAdmin):
- list_display = [
- # 'id',
- 'log_user',
- 'log_time',
- 'log_ip',
- 'log_desc',
- ]
- fields = (
- # 'id',
- 'log_user',
- 'log_time',
- 'log_ip',
- 'log_desc',
- )
- search_fields = [
- 'log_user',
- ]
- list_filter = (
- 'log_user',
- 'log_ip',
- 'log_time'
- )
- # 设置点击哪些字段可以进入修改页面:
- list_display_links = (
- 'log_user',
- )
- # 设置每页显示记录数:
- list_per_page = 10
- # @admin.register(Agency)
- # class AgencyAdmin(admin.ModelAdmin):
- # list_display = [
- # 'agency_name',
- # 'agency_desc',
- # ]
- # fields = (
- # 'agency_name',
- # 'agency_desc'
- # )
- # search_fields = [
- # 'agency_name',
- # ]
- # list_display_links = (
- # 'agency_name',
- # 'agency_desc'
- # )
-
- # list_per_page = 10
- # Logo的Admin 后台
- @admin.register(Logo)
- class LogoAdmin(admin.ModelAdmin):
- list_display = [
- 'role_describe',
- 'role_cre_time',
- 'role_cre_user',
- 'role_logo',
- 'role_footer',
- 'role_header'
- ]
- fields = (
- 'role_describe',
- 'role_cre_time',
- 'role_cre_user',
- 'role_logo',
- 'role_footer',
- 'role_header'
- )
- search_fields = [
- 'role_describe',
- ]
- list_filter = (
- 'role_cre_time',
- )
- # 设置点击哪些字段可以进入修改页面:
- list_display_links = (
- 'role_describe',
- )
- # 设置每页显示记录数:
- list_per_page = 10
|