import argparse from datetime import datetime from pydantic_settings import BaseSettings from dotenv import load_dotenv from db.db import Database from .clockify import ClockifyConfig # noqa: F401 from .redmine import RedmineConfig # noqa: F401 load_dotenv() class Config(BaseSettings): CLOCKIFY_TOKEN: str REDMINE_TOKEN: str USER_ID: str = None WORKSPACE_ID: str = None TRIAL_END_DATE: str = datetime.today().strftime("%Y-%m-%d") ENV_TXT: str = ".env.txt" DB_NAME: str = "db/RedmineTracker.db" SQL_PATH: str = "config/RedmineTracker.sql" DATETIME_FORMAT: str = "%Y-%m-%dT%H:%M:%SZ" MONTHS: dict = { 1: "января", 2: "февраля", 3: "марта", 4: "апреля", 5: "мая", 6: "июня", 7: "июля", 8: "августа", 9: "сентября", 10: "октября", 11: "ноября", 12: "декабря" } @property def is_beginner(self): from utils import str_to_date return datetime.today() < str_to_date(self.TRIAL_END_DATE) def configure_argument_parser(): parser = argparse.ArgumentParser(description='Трекер трудочасов с Clockify в Redmine') parser.add_argument( '-s', '--start', help='Дата начала парсинга активностей в формате гггг-мм-дд' ) parser.add_argument( '-e', '--end', help='Дата окончания парсинга активностей в формате гггг-мм-дд' ) parser.add_argument( '-p', '--page-size', help='Количество задач для вывода' ) parser.add_argument( '-d', '--debug', action="store_true", help='Режим отладки. Не загружает трудочасы в Redmine' ) parser.add_argument( '-i', '--init-db', action="store_true", help='Режим инициализации бд.\nПодгружает с серверов теги, виды деятельности и проекты Ветро' ) return parser arg_parser = configure_argument_parser() config = Config() db = Database(config.DB_NAME, config.SQL_PATH)