Поправил ошибку с list has no attribute 'title'

This commit is contained in:
2026-06-05 16:14:07 +03:00
parent 63044be106
commit 20fa3eb8a1

View File

@@ -59,8 +59,9 @@ class ClockifyAPI(ClockifyConfig):
if not tag: if not tag:
tag = self.get_tags(True, tag_id=tag_id, **{"page-size": self.tags_count}) tag = self.get_tags(True, tag_id=tag_id, **{"page-size": self.tags_count})
if tag: if isinstance(tag, Tag):
db.insert_tags([tag] if isinstance(tag, Tag) else tag) db.insert_tags([tag])
tags.append(tag)
from config import red from config import red
try: try:
task_id = parse_task_id(tag.title) task_id = parse_task_id(tag.title)
@@ -72,6 +73,7 @@ class ClockifyAPI(ClockifyConfig):
db.insert_tasks([task]) db.insert_tasks([task])
else: else:
logger.error(f"{Fore.RED} Тег не найден: {tag_id}{Fore.RESET}") logger.error(f"{Fore.RED} Тег не найден: {tag_id}{Fore.RESET}")
continue
else: else:
tag = tag[0] tag = tag[0]
task_id = parse_task_id(tag.title) task_id = parse_task_id(tag.title)
@@ -98,7 +100,7 @@ class ClockifyAPI(ClockifyConfig):
return result return result
def get_tags(self, is_updating=False, tag_id="", **kwargs) -> Union[list[Tag], Tag]: def get_tags(self, is_updating=False, tag_id="", **kwargs) -> Union[list[Tag], Tag, None]:
""" """
Получает с сервера Clockify теги Получает с сервера Clockify теги
name: str - optional name: str - optional
@@ -108,26 +110,40 @@ class ClockifyAPI(ClockifyConfig):
""" """
if is_updating: if is_updating:
page = 1 page = 1
kwargs["page"] = page page_size = int(kwargs.get("page-size", self.tags_count))
tags = requests.get(self.base_url + self.tags_url, params={"sort-column": "name", "sort-order": "descending", **kwargs}, headers={"X-API-KEY": self.token}).json() result = []
while len(tags) == self.tags_count: while True:
if tag_id: params = {
for tag in tags: "sort-column": "name",
if tag_id == tag["id"]: "sort-order": "descending",
return Tag( **kwargs,
id=tag["id"], "page": page
title=tag["name"] }
) tags = requests.get(
page += 1 self.base_url + self.tags_url,
kwargs["page"] = page params=params,
tags = requests.get(self.base_url + self.tags_url, params={"sort-column": "name", "sort-order": "descending", **kwargs}, headers={"X-API-KEY": self.token}).json() headers={"X-API-KEY": self.token}
else: ).json()
for tag in tags:
clockify_tag = Tag(
id=tag["id"],
title=tag["name"]
)
if tag_id and tag_id == clockify_tag.id:
return clockify_tag
if not tag_id:
result.append(clockify_tag)
if len(tags) < page_size:
break break
logger.debug(f"{Fore.YELLOW}Получено тегов: {len(tags)}.{Fore.RESET}") page += 1
return [Tag(
id=tag["id"], if tag_id:
title=tag["name"] return None
) for tag in tags]
logger.debug(f"{Fore.YELLOW}Получено тегов: {len(result)}.{Fore.RESET}")
return result
return db.get_tags() return db.get_tags()
def get_vetro_projects(self) -> list[VetroProject]: def get_vetro_projects(self) -> list[VetroProject]: