Files
lokses bfd67241c4 AD office-only scope, mapping page, auto-rebuild of directory tree
- ad_connector: restrict provisioning to office employees
  (user_location_type='office') in sync service, signals and command;
  disable AD account on transfer out of office, re-enable on return
- ad_connector: /ad-mapping/ page (staff only) — match office employees
  to AD accounts with suggestions by email/login/full name, link/unlink/
  create actions, list of unmatched domain accounts; sidebar nav item
- core: auto-rebuild treenode Directory tree (_path/_depth) after
  import-export imports and post_migrate; "rebuild tree" button in
  DirectoryAdmin and rebuild_directory_tree management command

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 16:48:38 +03:00

31 lines
1.1 KiB
Python

import logging
from django.apps import AppConfig
from django.db.models.signals import post_migrate
logger = logging.getLogger(__name__)
def rebuild_directory_tree(sender, **kwargs):
"""
Перестройка дерева справочников после миграций.
Data-миграции работают с historical-моделями и создают записи Directory
в обход treenode-логики — _path/_depth остаются пустыми и дерево в админке
ломается. Пересчитываем после каждого migrate.
"""
try:
from core.models import Directory
Directory.update_tree()
logger.info('Дерево справочников перестроено после migrate')
except Exception as e:
# Никогда не роняем migrate из-за перестройки дерева
logger.error(f'Не удалось перестроить дерево справочников: {e}')
class CoreConfig(AppConfig):
name = 'core'
def ready(self):
post_migrate.connect(rebuild_directory_tree, sender=self)