core.admin.CustomUserAdmin.get_form()   A
last analyzed

Complexity

Conditions 5

Size

Total Lines 19
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 19
rs 9.1832
c 0
b 0
f 0
cc 5
nop 4
1
from django.contrib import admin
2
from django.contrib.auth.admin import UserAdmin
3
from django.contrib.auth.models import Group
4
5
from core.models import User
6
7
8
@admin.register(User)
9
class CustomUserAdmin(UserAdmin):
10
    """Регистрация модели User для отображения в панели администратора"""
11
12
    #: Наборы полей в карточке пользователя
13
    fieldsets = (
14
        (None, {'fields': ('username', 'password')}),
15
        (None, {'fields': ('first_name', 'last_name', 'email')}),
16
        (None, {'fields': ('is_active', 'is_staff')}),
17
        (None, {'fields': ('last_login', 'date_joined')}),
18
    )
19
20
    #: Настройка отображения списка пользователей
21
    list_display = ('username', 'email', 'first_name', 'last_name')
22
    list_filter = ('is_staff', 'is_active', 'is_superuser')
23
    #: Установка полей 'только для чтения' в карточке пользователя
24
    readonly_fields = ('last_login', 'date_joined')
25
26
    def get_form(self, request, obj=None, **kwargs):
27
        is_superuser = request.user.is_superuser
28
        disabled_fields = set()
29
        defaults = {}
30
31
        if obj is None:
32
            defaults['form'] = self.add_form
33
        defaults.update(kwargs)
34
35
        if not is_superuser:
36
            disabled_fields |= {
37
                'username',
38
                'is_superuser',
39
            }
40
        for field in disabled_fields:
41
            if field in self.form.base_fields:
42
                self.form.base_fields[field].disabled = True
43
44
        return super().get_form(request, obj, **defaults)
45
46
47
admin.site.unregister(Group)
48