"""Пути и настройки сервиса.""" from __future__ import annotations import os from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent # Каталог данных можно переопределить переменной окружения CERTGEN_DATA. DATA_DIR = Path(os.environ.get("CERTGEN_DATA", str(BASE_DIR / "data"))).expanduser() DB_PATH = DATA_DIR / "certs.db" OUTPUT_DIR = DATA_DIR / "output" # сгенерированные файлы (png/pdf) TEMPLATES_DIR = DATA_DIR / "templates" # фоны и ассеты шаблонов TMP_DIR = DATA_DIR / "tmp" # временные файлы # Публичный адрес сервиса (для абсолютных ссылок). Если не задан — берём из Host. BASE_URL = os.environ.get("CERTGEN_BASE_URL", "").rstrip("/") HOST = os.environ.get("CERTGEN_HOST", "127.0.0.1") PORT = int(os.environ.get("CERTGEN_PORT", "8077")) # Разрешение вывода (dpi для PDF-экспорта изображения). PDF_DPI = int(os.environ.get("CERTGEN_PDF_DPI", "150")) # Нумерация: первые (START_SEQ - 1) номеров зарезервированы под особые случаи, # обычная нумерация начинается с START_SEQ. START_SEQ = int(os.environ.get("CERTGEN_START", "1001")) # Ширина номера с ведущими нулями (6 -> 001001). NUMBER_PAD = int(os.environ.get("CERTGEN_PAD", "6")) # Регистрация: open — любой может зарегистрироваться; closed — только админ создаёт. REGISTRATION = os.environ.get("CERTGEN_REGISTRATION", "open").strip().lower() # Email, который при регистрации получает роль администратора (необязательно). ADMIN_EMAIL = os.environ.get("CERTGEN_ADMIN_EMAIL", "").strip().lower() # Срок жизни сессии в днях. SESSION_TTL_DAYS = int(os.environ.get("CERTGEN_SESSION_DAYS", "30")) def ensure_dirs() -> None: for d in (DATA_DIR, OUTPUT_DIR, TEMPLATES_DIR, TMP_DIR): d.mkdir(parents=True, exist_ok=True)