60 lines
2.2 KiB
Python
60 lines
2.2 KiB
Python
import argparse
|
||
from pydantic_settings import BaseSettings
|
||
|
||
|
||
from .clockify import ClockifyConfig # noqa: F401
|
||
from .redmine import RedmineConfig # noqa: F401
|
||
|
||
|
||
class Config(BaseSettings):
|
||
CLOCKIFY_TOKEN: str
|
||
REDMINE_TOKEN: str
|
||
CLOCKIFY_USER_ID: str
|
||
CLOCKIFY_WORKSPACE_ID: str
|
||
|
||
DATETIME_FORMAT: str = "%Y-%m-%dT%H:%M:%SZ"
|
||
|
||
VETRO_PROJECTS: dict = {
|
||
"682c438ca9a5d61a4cc9a405": "Админка",
|
||
"682c7c1b537d26222fe3cde8": "Чаты Авито",
|
||
"682c7cc5a4e2fd3c34a5e933": "Звонки",
|
||
"682b2c2d537d26222fc5671c": "Регистрация гарантии",
|
||
"682b3cc4f01c6c02e4e765b0": "Клиент",
|
||
"682b2c1366a3b415535a23fa": "Контрагенты",
|
||
"682b2c3f24f321560e283cb2": "Урегулирование страховых случаев",
|
||
"682b2c52d7ce797b226fddef": "Почта",
|
||
"682c7cd766a3b4155378f8a4": "Товар",
|
||
"682c7d05d7ce797b228edd06": "Закупка",
|
||
"682b2bf324f321560e283084": "Страховые направления",
|
||
"682b2c09f01c6c02e4e49681": "Задачи направлений",
|
||
"682b2c1bd096503066890985": "Заказ",
|
||
"682b2c22b417733736a3ae9f": "Задачи заказов",
|
||
"682b3280560c2445c917951c": "Услуга клиенту",
|
||
"682b2c7324f321560e284588": "Потерянные трудочасы",
|
||
"682c7d0ed7ce797b228edf3a": "WhatsApp",
|
||
"682b2bada9a5d61a4cb1b6e1": "Прочие активности по Ветро",
|
||
}
|
||
|
||
|
||
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='Количество задач для вывода'
|
||
)
|
||
return parser
|
||
|
||
arg_parser = configure_argument_parser()
|
||
config = Config()
|