From c38493a18b39d27390e00e0b84dc2e5a2fdaec8a Mon Sep 17 00:00:00 2001 From: lizerk Date: Wed, 18 Mar 2026 15:10:32 +0300 Subject: [PATCH] =?UTF-8?q?refactor(ldap):=20sync=5Fservice=20employeeNumb?= =?UTF-8?q?er=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20ORM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sync_service: заменены read_attrs + modify_user_attrs на LdapUser ORM для записи employeeNumber при импорте пользователей - Убран неиспользуемый импорт modify_user_attrs --- .../employees/ldap/services/sync_service.py | 37 ++++++++----------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/backend/employees/ldap/services/sync_service.py b/backend/employees/ldap/services/sync_service.py index 90ac059f..803c74f9 100644 --- a/backend/employees/ldap/services/sync_service.py +++ b/backend/employees/ldap/services/sync_service.py @@ -24,7 +24,6 @@ from ..domain.dtos import ( LdapPersonDTO, _entry_to_dto, ) -from ..repositories.ldap_repository import modify_user_attrs from ..utils.ldap_utils import _paged_search, get_attr_str from .user_service import UserService from .department_service import DepartmentService @@ -374,22 +373,18 @@ class SyncService: # UPDATE for user, dto in to_update: self._update_user_from_dto(user, dto) - # Записываем Django PK в LDAP employeeNumber если пусто - employee_id_attr = getattr( - settings, "LDAP_EMPLOYEE_ID_ATTR", "employeeNumber" - ) + # ORM: записываем Django PK в LDAP employeeNumber если пусто if dto.dn and not cfg.dry_run: try: - from ..repositories.ldap_repository import read_attrs - current = read_attrs(conn, dto.dn, [employee_id_attr]) - if not current.get(employee_id_attr): - modify_user_attrs( - conn, dto.dn, {employee_id_attr: str(user.pk)}, do_write=True - ) + from ..orm_models import LdapUser + ldap_user = LdapUser.objects.get(dn=dto.dn) + if not ldap_user.employee_number: + ldap_user.employee_number = str(user.pk) + ldap_user.save() except Exception as e: logger.debug( - "Could not write %s for %s: %s", - employee_id_attr, dto.dn, e + "Could not write employeeNumber for %s: %s", + dto.dn, e ) processed.append((user, dto)) updated += 1 @@ -400,19 +395,17 @@ class SyncService: if not user: skipped += 1 continue - # Записываем Django PK в LDAP employeeNumber - employee_id_attr = getattr( - settings, "LDAP_EMPLOYEE_ID_ATTR", "employeeNumber" - ) + # ORM: записываем Django PK в LDAP employeeNumber if dto.dn and not cfg.dry_run: try: - modify_user_attrs( - conn, dto.dn, {employee_id_attr: str(user.pk)}, do_write=True - ) + from ..orm_models import LdapUser + ldap_user = LdapUser.objects.get(dn=dto.dn) + ldap_user.employee_number = str(user.pk) + ldap_user.save() except Exception as e: logger.debug( - "Could not write %s for %s: %s", - employee_id_attr, dto.dn, e + "Could not write employeeNumber for %s: %s", + dto.dn, e ) processed.append((user, dto)) created += 1