87 lines
2.3 KiB
Python
87 lines
2.3 KiB
Python
import argparse
|
||
from datetime import datetime
|
||
from pydantic_settings import BaseSettings
|
||
from dotenv import load_dotenv
|
||
|
||
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
|
||
|
||
MODE: str = "prod"
|
||
|
||
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)
|
||
|
||
@property
|
||
def is_debug(self):
|
||
return self.MODE == "debug"
|
||
|
||
|
||
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',
|
||
type=int,
|
||
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()
|