разделил создание зависимостей и сценарий переноса трудочасов, переименовал основную точку входа в main.py
This commit is contained in:
@@ -5,7 +5,7 @@ from colorama import Fore
|
||||
import requests
|
||||
from tqdm import tqdm
|
||||
|
||||
from config import ClockifyConfig, config, db
|
||||
from config import ClockifyConfig, config
|
||||
from classes import Activity, Tag, VetroProject
|
||||
from exceptions import InvalidToken
|
||||
from utils import parse_task_id, time_to_hour
|
||||
@@ -20,8 +20,10 @@ class ClockifyAPI(ClockifyConfig):
|
||||
|
||||
Позволяет получать активности, теги, проекты ветро и помечать активности затрканными.
|
||||
"""
|
||||
def __init__(self, token: str, *args, **kwargs):
|
||||
def __init__(self, token: str, db, redmine_api=None, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.db = db
|
||||
self.redmine_api = redmine_api
|
||||
self.token = self._check_token(token)
|
||||
|
||||
def get_activities(self, is_updating=False, **kwargs) -> list[Activity]:
|
||||
@@ -70,24 +72,26 @@ class ClockifyAPI(ClockifyConfig):
|
||||
if not tag:
|
||||
tag = self.get_tags(True, tag_id=tag_id, **{"page-size": self.tags_count})
|
||||
if isinstance(tag, Tag):
|
||||
db.insert_tags([tag])
|
||||
self.db.insert_tags([tag])
|
||||
tags_by_id[tag.id] = tag
|
||||
from config import red
|
||||
try:
|
||||
task_id = parse_task_id(tag.title)
|
||||
except Exception as e:
|
||||
logger.error(f"При обновлении тега произошла ошибка: {e}\nПопробуйте обновить флагом -i [--init-db]")
|
||||
continue
|
||||
task = red.get_issue(task_id)
|
||||
if not self.redmine_api:
|
||||
logger.error("Не передан RedmineAPI для обновления задачи по новому тегу")
|
||||
continue
|
||||
task = self.redmine_api.get_issue(task_id)
|
||||
if task:
|
||||
db.insert_tasks([task])
|
||||
self.db.insert_tasks([task])
|
||||
else:
|
||||
logger.error(f"{Fore.RED} Тег не найден: {tag_id}{Fore.RESET}")
|
||||
continue
|
||||
else:
|
||||
task_id = parse_task_id(tag.title)
|
||||
|
||||
author = db.get_user_by("clockify_user_id", activity["userId"])
|
||||
author = self.db.get_user_by("clockify_user_id", activity["userId"])
|
||||
if not author:
|
||||
logger.error(f"Не найден автор активности {activity['id']}")
|
||||
continue
|
||||
@@ -103,7 +107,7 @@ class ClockifyAPI(ClockifyConfig):
|
||||
time_spent=time_to_hour((end if end else datetime.utcnow()) - start),
|
||||
date_start=start,
|
||||
date_end=end,
|
||||
is_tracked=db.has_time_entry(activity["id"]),
|
||||
is_tracked=self.db.has_time_entry(activity["id"]),
|
||||
author_id=author["id"]
|
||||
)
|
||||
)
|
||||
@@ -161,7 +165,7 @@ class ClockifyAPI(ClockifyConfig):
|
||||
|
||||
logger.debug(f"{Fore.YELLOW}Получено тегов: {len(result)}.{Fore.RESET}")
|
||||
return result
|
||||
return db.get_tags()
|
||||
return self.db.get_tags()
|
||||
|
||||
def get_vetro_projects(self) -> list[VetroProject]:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user