Большой рефактор. Обновление тегов, задач и типов деятельности при сохранении активностей в БД
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from datetime import datetime
|
||||
import logging
|
||||
from typing import Union
|
||||
|
||||
from colorama import Fore
|
||||
import requests
|
||||
@@ -52,17 +53,28 @@ class ClockifyAPI(ClockifyConfig):
|
||||
start = datetime.strptime(activity["timeInterval"]["start"], config.DATETIME_FORMAT)
|
||||
end = datetime.strptime(activity["timeInterval"]["end"], config.DATETIME_FORMAT) if activity["timeInterval"]["end"] else None
|
||||
time_worked_out_total += time_to_hour((end if end else datetime.utcnow()) - start)
|
||||
|
||||
|
||||
tag = [tag for tag in tags if tag.id == tag_id]
|
||||
|
||||
if not tag:
|
||||
logging.info(f"{Fore.YELLOW}В базе данных нет нужного тега {Fore.GREEN}{tag_id}{Fore.YELLOW}! Обновите БД при помощи флага -i [--init-db]{Fore.RESET}")
|
||||
break
|
||||
tag = self.get_tags(True, tag_id=tag_id)
|
||||
if tag:
|
||||
db.insert_tags([tag])
|
||||
from config import red
|
||||
try:
|
||||
task_id = parse_task_id(tag.title)
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
continue
|
||||
task = red.get_issue(task_id)
|
||||
if task:
|
||||
db.insert_tasks([task])
|
||||
else:
|
||||
logger.error(f"{Fore.RED} Тег не найден: {tag_id}{Fore.RESET}")
|
||||
else:
|
||||
tag = tag[0]
|
||||
try:
|
||||
task_id = parse_task_id(tag.title)
|
||||
except ValueError:
|
||||
logger.info(f'{activity["timeInterval"]["start"]}: {activity["description"]} - Неправильный формат тега {tag}')
|
||||
continue
|
||||
|
||||
author = db.get_user_by("clockify_user_id", activity["userId"])
|
||||
|
||||
@@ -86,7 +98,7 @@ class ClockifyAPI(ClockifyConfig):
|
||||
return result
|
||||
|
||||
|
||||
def get_tags(self, is_updating=False, **kwargs) -> list[Tag]:
|
||||
def get_tags(self, is_updating=False, tag_id="", **kwargs) -> Union[list[Tag], Tag]:
|
||||
"""
|
||||
Получает с сервера Clockify теги
|
||||
name: str - optional
|
||||
@@ -95,7 +107,14 @@ class ClockifyAPI(ClockifyConfig):
|
||||
"""
|
||||
if is_updating:
|
||||
tags = requests.get(self.base_url + self.tags_url, params={"sort-column": "name", "sort-order": "descending", **kwargs}, headers={"X-API-KEY": self.token}).json()
|
||||
logging.debug(f"{Fore.YELLOW}Получено тегов: {len(tags)}.{Fore.RESET}")
|
||||
if tag_id:
|
||||
for tag in tags:
|
||||
if tag_id == tag["id"]:
|
||||
return Tag(
|
||||
id=tag["id"],
|
||||
title=tag["name"]
|
||||
)
|
||||
logger.debug(f"{Fore.YELLOW}Получено тегов: {len(tags)}.{Fore.RESET}")
|
||||
return [Tag(
|
||||
id=tag["id"],
|
||||
title=tag["name"]
|
||||
|
||||
Reference in New Issue
Block a user