42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
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"
|
|
)
|