Merge branch 'dev'
This commit is contained in:
@@ -58,9 +58,10 @@ class ClockifyAPI(ClockifyConfig):
|
|||||||
tag = [tag for tag in tags if tag.id == tag_id]
|
tag = [tag for tag in tags if tag.id == tag_id]
|
||||||
|
|
||||||
if not tag:
|
if not tag:
|
||||||
tag = self.get_tags(True, tag_id=tag_id)
|
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,27 +100,50 @@ 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
|
||||||
archived: bool - optional
|
archived: bool - optional
|
||||||
page-size: int - optional
|
page-size: int - optional
|
||||||
|
page: int - optional
|
||||||
"""
|
"""
|
||||||
if is_updating:
|
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()
|
page = 1
|
||||||
if tag_id:
|
page_size = int(kwargs.get("page-size", self.tags_count))
|
||||||
|
result = []
|
||||||
|
while True:
|
||||||
|
params = {
|
||||||
|
"sort-column": "name",
|
||||||
|
"sort-order": "descending",
|
||||||
|
**kwargs,
|
||||||
|
"page": page
|
||||||
|
}
|
||||||
|
tags = requests.get(
|
||||||
|
self.base_url + self.tags_url,
|
||||||
|
params=params,
|
||||||
|
headers={"X-API-KEY": self.token}
|
||||||
|
).json()
|
||||||
|
|
||||||
for tag in tags:
|
for tag in tags:
|
||||||
if tag_id == tag["id"]:
|
clockify_tag = Tag(
|
||||||
return Tag(
|
id=tag["id"],
|
||||||
id=tag["id"],
|
title=tag["name"]
|
||||||
title=tag["name"]
|
)
|
||||||
)
|
if tag_id and tag_id == clockify_tag.id:
|
||||||
logger.debug(f"{Fore.YELLOW}Получено тегов: {len(tags)}.{Fore.RESET}")
|
return clockify_tag
|
||||||
return [Tag(
|
if not tag_id:
|
||||||
id=tag["id"],
|
result.append(clockify_tag)
|
||||||
title=tag["name"]
|
|
||||||
) for tag in tags]
|
if len(tags) < page_size:
|
||||||
|
break
|
||||||
|
page += 1
|
||||||
|
|
||||||
|
if tag_id:
|
||||||
|
return None
|
||||||
|
|
||||||
|
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]:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class ClockifyConfig:
|
|||||||
self.user_url = "/user"
|
self.user_url = "/user"
|
||||||
self.projects_url = f"{self.workspace_url}/projects"
|
self.projects_url = f"{self.workspace_url}/projects"
|
||||||
|
|
||||||
self.tags_count = 100
|
self.tags_count = 20
|
||||||
|
|
||||||
def update_time_entry(self, activity_id):
|
def update_time_entry(self, activity_id):
|
||||||
return f"{self.workspace_url}/time-entries/{activity_id}"
|
return f"{self.workspace_url}/time-entries/{activity_id}"
|
||||||
|
|||||||
Reference in New Issue
Block a user