Files
redmine-reporter/redmine_reporter/config.py
Кокос Артем Николаевич 8bc8181ce3 Add Redmine API token authentication
2026-05-22 17:19:00 +07:00

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"
)