Hide is_staff from regular employee form, show only to superusers

- Renamed is_staff label to 'Доступ к панели администратора' with
  clearer help text explaining it's for IT admins only
- Removed is_staff from the standard Authentication fieldset
- Added get_fieldsets() override: superusers get an extra collapsed
  'Системный доступ' tab with is_staff and user_permissions
This commit is contained in:
2026-05-31 15:11:44 +03:00
parent 27a917e8c3
commit 24c2f28e43
2 changed files with 16 additions and 3 deletions
+14 -1
View File
@@ -116,7 +116,7 @@ class EmployeeAdmin(ModelAdmin):
fieldsets = (
(_('Аутентификация'), {
'fields': ('username', 'email', 'groups', 'is_staff', 'is_active'),
'fields': ('username', 'email', 'groups', 'is_active'),
'classes': ('tab',),
}),
(_('ФИО'), {
@@ -162,6 +162,19 @@ class EmployeeAdmin(ModelAdmin):
}),
)
def get_fieldsets(self, request, obj=None):
fieldsets = list(super().get_fieldsets(request, obj))
if request.user.is_superuser:
fieldsets.append((
_('Системный доступ'),
{
'fields': ('is_staff', 'user_permissions'),
'classes': ('tab', 'collapse'),
'description': _('Только для IT-администраторов. is_staff — вход в Django admin.'),
},
))
return fieldsets
# def permissions_summary(self, obj):
# perms = obj.effective_permissions()
# group = obj.permission_group.name if obj.permission_group_id else None
+2 -2
View File
@@ -41,8 +41,8 @@ class Employee(AbstractBaseUser, PermissionsMixin, BaseModel):
first_name = models.CharField(_('Имя'), max_length=150)
middle_name = models.CharField(_('Отчество'), max_length=150, blank=True)
is_staff = models.BooleanField(_('Персонал'), default=False,
help_text=_('Доступ в Django admin'))
is_staff = models.BooleanField(_('Доступ к панели администратора'), default=False,
help_text=_('Разрешает вход в Django admin. Только для IT-администраторов системы.'))
is_active = models.BooleanField(_('Активный'), default=True,
help_text=_('Работает ли сотрудник сейчас'))
date_joined = models.DateTimeField(_('Дата создания аккаунта'), default=timezone.now)