Настроил динамическую загрузку Ветро проектов (Tasks) из Clockify и добавил новый аргумент для обновления базы данных с серверов

This commit is contained in:
2025-05-21 12:55:27 +03:00
parent 70232f15a0
commit 38a8461070
9 changed files with 49 additions and 15 deletions

View File

@@ -6,7 +6,7 @@ import requests
from tqdm import tqdm
from config import ClockifyConfig, config
from classes import Activity, ActivityType, Tag
from classes import Activity, Tag, VetroProject
from exceptions import InvalidToken
from utils import time_to_hour
@@ -79,6 +79,16 @@ class ClockifyAPI(ClockifyConfig):
title=tag["name"]
) for tag in tags]
def get_vetro_projects(self) -> list[VetroProject]:
projects = requests.get(self.base_url + self.projects_url, headers={"X-API-KEY": self.token}).json()
for project in projects:
if not project.get("archived"):
vetro_projects = requests.get(self.base_url + self.tasks_url(project.get("id")), headers={"X-API-KEY": self.token}).json()
return [VetroProject(
id=vetro_project["id"],
title=vetro_project["name"]
) for vetro_project in vetro_projects]
def mark_tracked(self, activities: list[Activity]):
for activity in activities:
try:

View File

@@ -5,7 +5,7 @@ from tqdm import tqdm
from config import RedmineConfig, config
from classes import Activity, ActivityType
from enums import ActivityType as ActivityTypeEnum
from enums import ActivityTypes
from exceptions import InvalidToken
logger = logging.getLogger(__name__)
@@ -34,7 +34,7 @@ class RedmineAPI(RedmineConfig):
"time_entry": {
"issue_id": activity.task_id,
"hours": activity.time_spent,
"activity_id": ActivityTypeEnum.DEVELOPMENT,
"activity_id": ActivityTypes.DEVELOPMENT,
"comments": activity.description,
"spent_on": activity.date_start.strftime(self.datetime_format)
}
@@ -56,7 +56,7 @@ class RedmineAPI(RedmineConfig):
logger.info(f"Не все задачи были занесены в Redmine. Занесено {len(tracked)}")
return tracked
def get_time_entry_activities(self):
def get_time_entry_activities(self) -> list[ActivityTypes]:
resp = requests.get(self.base_url + self.time_entry_activities, headers={"X-Redmine-API-KEY": self.token})
logging.debug(resp.json())
if resp.ok: