40 lines
1.6 KiB
Python
40 lines
1.6 KiB
Python
"""Горячие папки ИС Сканирование: фабрика по настройкам (R-6).
|
||
|
||
`SCAN_HOTFOLDER_MODE=local` — `LocalHotFolder` (модуль `src.gateway.smb` не импортируется), `smb` — `SmbHotFolder`
|
||
из `OPENBAO.SMB` (импорт модуля — только здесь, лениво).
|
||
"""
|
||
|
||
from src.core.config import Settings
|
||
from src.gateway.hotfolder import HotFolder, LocalHotFolder
|
||
|
||
__all__ = ["create_hotfolder"]
|
||
|
||
|
||
def create_hotfolder(settings: Settings) -> HotFolder:
|
||
"""Горячая папка для режима `SCAN_HOTFOLDER_MODE`. К файловой системе и шаре не обращается."""
|
||
mode = settings.SCAN_HOTFOLDER_MODE
|
||
if mode == "local":
|
||
return LocalHotFolder(
|
||
settings.SCAN_HOTFOLDER_PATH,
|
||
settings.SCAN_INPUT_DIR,
|
||
settings.SCAN_OUTPUT_DIR,
|
||
settings.SCAN_TMP_DIR,
|
||
settle_seconds=settings.SCAN_SETTLE_SECONDS,
|
||
cleanup=settings.SCAN_CLEANUP,
|
||
)
|
||
if mode == "smb":
|
||
from src.gateway.smb import SmbHotFolder # noqa: PLC0415 — ленивый импорт: в режиме local smb не нужен (R-6)
|
||
|
||
smb = settings.OPENBAO.SMB
|
||
return SmbHotFolder(
|
||
smb.SMB_HOST,
|
||
smb.SMB_PATH,
|
||
settings.SCAN_INPUT_DIR,
|
||
settings.SCAN_OUTPUT_DIR,
|
||
login=smb.SMB_LOGIN,
|
||
password=smb.SMB_PASSWORD,
|
||
settle_seconds=settings.SCAN_SETTLE_SECONDS,
|
||
cleanup=settings.SCAN_CLEANUP,
|
||
)
|
||
raise ValueError(f"неизвестный SCAN_HOTFOLDER_MODE: {mode!r}")
|