hiring: автоназначение ролей по типу локации

При утверждении найма сотрудник получает роли (группы) по умолчанию для
своего типа локации (Аптека/Офис/Склад). Наборы настраиваются в
EmployeeDefaults (админка «Настройки сотрудников по умолчанию»).

- EmployeeDefaults: 3 M2M default_groups_* + apply_default_groups();
- approve_hiring_request вызывает apply_default_groups после создания Employee;
- админка: блок «Роли по умолчанию при найме» (filter_horizontal);
- миграция 0023; тесты найма.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-09-21 16:16:22 +03:00
parent cfafe2f0b3
commit 3ec5fb58c4
5 changed files with 101 additions and 0 deletions
+12
View File
@@ -414,6 +414,9 @@ class EmployeeAdmin(ModelAdmin):
class EmployeeDefaultsAdmin(ModelAdmin):
"""Единственная запись настроек по умолчанию для сотрудников."""
filter_horizontal = (
'default_groups_office', 'default_groups_pharmacy', 'default_groups_warehouse',
)
fieldsets = (
(_('Офисные сотрудники'), {
'fields': ('office_email_domain',),
@@ -422,6 +425,15 @@ class EmployeeDefaultsAdmin(ModelAdmin):
'назначается рабочий email: логин@домен.'
),
}),
(_('Роли по умолчанию при найме'), {
'fields': (
'default_groups_office', 'default_groups_pharmacy', 'default_groups_warehouse',
),
'description': _(
'Эти роли (группы) автоматически выдаются новому сотруднику '
'при утверждении найма — по типу его локации.'
),
}),
)
def has_add_permission(self, request):