32 lines
1.3 KiB
Python

from dataclasses import dataclass
from typing import Literal
SyncMode = Literal["ldap", "django", "auto"]
SyncScope = Literal["all", "users", "departments", "groups"]
DISABLED_FLAG = 0x0002
@dataclass(frozen=True)
class SyncConfig:
"""Конфигурация синхронизации каталога.
Attributes:
mode (SyncMode): Направление ('ldap'|'django'|'auto').
scope (SyncScope): Область ('all'|'users'|'departments'|'groups').
dry_run (bool): Сухой прогон — изменения считаются/валидируются, но не применяются.
max_changes (int): Лимит изменений за прогон (зарезервировано).
users_base_dn (str): DN контейнера пользователей (OU=Users,...).
departments_base_dn (str): DN контейнера отделов (OU=Departments,...).
groups_base_dn (str): DN контейнера глобальных групп (OU=Groups,...).
"""
mode: SyncMode = "ldap"
scope: SyncScope = "all"
dry_run: bool = True
max_changes: int = 1000
users_base_dn: str = ""
departments_base_dn: str = ""
groups_base_dn: str = ""
show_changes: bool = False