import os from dotenv import load_dotenv load_dotenv() class Config: REDMINE_URL = os.getenv("REDMINE_URL", "").strip().rstrip("/") REDMINE_API_KEY = os.getenv("REDMINE_API_KEY") REDMINE_USER = os.getenv("REDMINE_USER") REDMINE_PASSWORD = os.getenv("REDMINE_PASSWORD") REDMINE_AUTHOR = os.getenv("REDMINE_AUTHOR") DEFAULT_FROM_DATE = os.getenv("DEFAULT_FROM_DATE") DEFAULT_TO_DATE = os.getenv("DEFAULT_TO_DATE") @classmethod def get_author(cls, cli_author: str = "") -> str: """Возвращает автора: из CLI если задан, иначе из .env, иначе — заглушку.""" if cli_author: return cli_author if cls.REDMINE_AUTHOR: return cls.REDMINE_AUTHOR return "" @classmethod def get_default_date_range(cls) -> str: if cls.DEFAULT_FROM_DATE and cls.DEFAULT_TO_DATE: return f"{cls.DEFAULT_FROM_DATE}--{cls.DEFAULT_TO_DATE}" # fallback hardcoded return "2025-12-19--2026-01-31" @classmethod def validate(cls) -> None: if not cls.REDMINE_URL: raise ValueError("REDMINE_URL is required (set via env or .env)") if cls.REDMINE_API_KEY: return if not (cls.REDMINE_USER and cls.REDMINE_PASSWORD): raise ValueError( "REDMINE_API_KEY is required, or set both REDMINE_USER and REDMINE_PASSWORD" )