42 lines
2.2 KiB
Python
42 lines
2.2 KiB
Python
"""Пути и настройки сервиса."""
|
|
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)
|