refactor(employees): реорганизация структуры сигналов

ПРОБЛЕМЫ СТАРОЙ СТРУКТУРЫ:
- 5 файлов сигналов в корне employees/ (захламление)
- Непоследовательность: signals_ldap.py vs signals_department.py
- apps.py импортирует каждый файл явно (5 строк)
- Нет группировки по назначению (LDAP разбросан)

НОВАЯ СТРУКТУРА:
employees/
  signals/
    __init__.py              # единая точка входа
    common.py                # общие сигналы (было signals.py)
    birthday.py              # дни рождений
    ldap/
      __init__.py
      employee.py            # Employee ↔ LDAP
      department.py          # Department ↔ LDAP OU
      group.py               # Group ↔ LDAP Group

ПРЕИМУЩЕСТВА:
- Чёткая иерархия: общие сигналы и LDAP-специфичные
- Единый импорт в apps.py: import employees.signals
- Понятные имена модулей (employee.py вместо signals_ldap.py)
- Масштабируемость: легко добавить signals/email/, signals/webhooks/ и т.д.

ИЗМЕНЕНИЯ:
- Создана структура signals/ и signals/ldap/
- Перемещены и переименованы 5 файлов сигналов
- Обновлены docstrings с новыми путями
- Исправлены относительные импорты в common.py
- apps.py: упрощён с 5 импортов до 1
- Django check: успешно

Git корректно распознал переименования (R), история сохранена.
This commit is contained in:
lizerk 2026-03-18 19:22:30 +03:00
parent df93afbcb1
commit ee920dd365
8 changed files with 48 additions and 14 deletions

View File

@ -6,9 +6,5 @@ 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: регистрация предикатов и правил доступа
import employees.signals # Все сигналы (common, birthday, ldap)
import employees.rules # django-rules: регистрация предикатов и правил доступа

View File

@ -0,0 +1,15 @@
"""Django signals для приложения employees.
Структура:
- common: общие сигналы (создание кадровых событий, чаты отделов)
- birthday: синхронизация дней рождений с django-scheduler
- ldap/: автоматическая синхронизация с LDAP
- employee: Employee ↔ LDAP User
- department: Department ↔ LDAP OU
- group: Group ↔ LDAP Group
"""
from . import common, birthday
from .ldap import employee, department, group
__all__ = ['common', 'birthday', 'employee', 'department', 'group']

View File

@ -1,6 +1,8 @@
"""
Сигналы для автоматического управления событиями дней рождения в django-scheduler.
"""Django signals для автоматической синхронизации дней рождений с django-scheduler.
Использует Service Layer паттерн через django-service-objects.
Файл: employees/signals/birthday.py
"""
from __future__ import annotations

View File

@ -1,4 +1,11 @@
# users/signals.py
# employees/signals/common.py
"""Общие Django signals для приложения employees.
Обработчики:
- Создание кадровых событий (EmployeeAction)
- Создание главных чатов отделов
- Автоматизация из заявок (requests_app)
"""
import logging
import os
@ -10,9 +17,9 @@ from django.db.models import Q
from django.db.models.signals import post_save, pre_save
from django.dispatch import receiver
from django.utils import timezone
from .constants import ACTION_HIRED
from .models import Employee, EmployeeAction, Department
from employees.constants import ACTION_HIRED
from employees.models import Employee, EmployeeAction, Department
logger = logging.getLogger(__name__)

View File

@ -0,0 +1,5 @@
"""LDAP signals для автоматической синхронизации моделей с Active Directory."""
from . import employee, department, group
__all__ = ['employee', 'department', 'group']

View File

@ -1,4 +1,7 @@
"""Django signals для автоматической синхронизации Department с LDAP."""
"""Django signals для автоматической синхронизации Department с LDAP.
Файл: employees/signals/ldap/department.py
"""
import logging

View File

@ -1,4 +1,7 @@
"""Django signals для автоматической синхронизации Employee с LDAP."""
"""Django signals для автоматической синхронизации Employee с LDAP.
Файл: employees/signals/ldap/employee.py
"""
import logging

View File

@ -1,4 +1,7 @@
"""Django signals для автоматической синхронизации Group с LDAP."""
"""Django signals для автоматической синхронизации Group с LDAP.
Файл: employees/signals/ldap/group.py
"""
import logging