Создан signals_group.py: - post_save(Group): создание/обновление LdapGroup (cn, description, scope, security) - post_delete(Group): удаление LdapGroup - m2m_changed(Group.user_set): синхронизация участников (add/remove/clear) Упрощен GroupViewSet (641 → 339 строк, -47%): - create(): только создание в БД + временные атрибуты для сигнала - partial_update(): передача _ldap_old_name и _ldap_description в сигнал - destroy(): базовый ViewSet метод - list(): удален sync_groups_catalog (должен быть в фоне/cron) - rename: упрощен до установки _ldap_old_name и save() - set_description: упрощен до установки _ldap_description и save() - members: только БД запрос (без LDAP) - add_members: user_set.add(), сигнал синхронизирует в LDAP - remove_members: user_set.remove(), сигнал синхронизирует в LDAP - replace_members: user_set.set(), сигнал синхронизирует в LDAP Удалено: - Все if ldap_enabled блоки - Прямые вызовы DirectoryService в ViewSet - Rollback логика при ошибках LDAP - Helper методы: _resolve_group_dn, _members_payload_to_dns, _dns_to_users - Импорты: DirectoryService, settings, transaction, LdapSyncState, _is_ldap_enabled Зарегистрирован сигнал в employees/apps.py
15 lines
845 B
Python
15 lines
845 B
Python
# employees/apps.py
|
||
from django.apps import AppConfig
|
||
|
||
|
||
class EmployeesConfig(AppConfig):
|
||
name = 'employees'
|
||
|
||
def ready(self):
|
||
import employees.signals
|
||
import employees.signals_birthday # Сигналы для синхронизации дней рождений с django-scheduler
|
||
import employees.signals_ldap # Сигналы для автоматической синхронизации Employee с LDAP
|
||
import employees.signals_department # Сигналы для автоматической синхронизации Department с LDAP
|
||
import employees.signals_group # Сигналы для автоматической синхронизации Group с LDAP
|
||
import employees.rules # django-rules: регистрация предикатов и правил доступа
|