Рефакторинг API-слоя, операций и БД

This commit is contained in:
2026-07-31 17:13:54 +04:00
parent 82a3be2067
commit 0783319fd1
15 changed files with 986 additions and 257 deletions
+27 -5
View File
@@ -1,9 +1,18 @@
"""
Чтение списка разрешённых сервисов из services_{stand}.txt.
Формат файла: service_id service_name # описание
Закомментированные (#) строки — исключены.
Пустые строки — игнорируются.
Зачем: не все сервисы должны быть доступны для тестирования.
Файл services_test.txt (или services_dev.txt) содержит только те сервисы,
которые настроены и готовы к автотестам.
Формат файла:
# Комментарий
1 dummy # Болванка
21 vdc # Virtual Data Center
Закомментированные (#) строки исключаются.
Пустые строки игнорируются.
Первое слово в строке — service_id (число).
Файл лежит в site/config/, пушится с кодом, деплоится вместе с приложением.
При изменении списка: edit → commit → push → redeploy.
@@ -12,23 +21,36 @@
import os
import re
# Путь к папке config относительно этого файла:
# service_list.py → site/operations/
# dirname → site/operations
# dirname(dirname) → site
# + "config" → site/config
_CONFIG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "config")
def load_service_ids(stand="test"):
"""Вернуть set разрешённых service_id для указанного стенда."""
"""Вернуть set разрешённых service_id для указанного стенда.
Args:
stand: str — "dev" или "test".
Returns:
set[int] — множество service_id. Пустой set если файла нет → показываем все."""
path = os.path.join(_CONFIG_DIR, f"services_{stand}.txt")
ids = set()
try:
with open(path) as f:
for line in f:
line = line.strip()
# Пропускаем пустые строки и комментарии
if not line or line.startswith("#"):
continue
# Формат: "1 dummy # Болванка"
# Берём первое слово, проверяем что это число
parts = line.split()
if parts and parts[0].isdigit():
ids.add(int(parts[0]))
except FileNotFoundError:
pass # файла нет — показываем все сервисы
pass # файла нет — возвращаем пустой set → показываем все сервисы
return ids