from django import forms from django.contrib import admin from django.contrib.auth.admin import UserAdmin as BaseUserAdmin from django.contrib.auth.forms import UserCreationForm, UserChangeForm from django.utils.translation import gettext_lazy as _ from .models import Account, Role class AccountChangeForm(UserChangeForm): class Meta: model = Account fields = '__all__' class AccountCreationForm(UserCreationForm): class Meta: model = Account fields = ('login',) @admin.register(Account) class AccountAdmin(BaseUserAdmin): form = AccountChangeForm add_form = AccountCreationForm list_display = ('login', 'full_name', 'role', 'is_staff', 'is_active') list_filter = ('is_staff', 'is_active', 'role') search_fields = ('login', 'first_name', 'last_name', 'middle_name', 'phone', 'email') ordering = ('login',) filter_horizontal = ('groups', 'user_permissions') fieldsets = ( (None, {'fields': ('login', 'password')}), (_('Personal info'), {'fields': ('first_name', 'last_name', 'middle_name', 'phone', 'email')}), (_('Permissions'), { 'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions'), }), (_('Role'), {'fields': ('role',)}), ) add_fieldsets = ( (None, { 'classes': ('wide',), 'fields': ('login', 'password1', 'password2'), }), ) @admin.display(description=_('ФИО')) def full_name(self, obj): return str(obj) @admin.register(Role) class RoleAdmin(admin.ModelAdmin): list_display = ('name',) search_fields = ('name',)