diff --git a/api/constants.py b/api/constants.py index fea382b..b852a1d 100644 --- a/api/constants.py +++ b/api/constants.py @@ -4,7 +4,5 @@ from enums import ActivityTypes REQUEST_TIMEOUT = 30 REDMINE_ISSUES_LIMIT = 100 -REDMINE_TIME_ENTRIES_LIMIT = 100 -CLOCKIFY_ACTIVITY_COMMENT_PREFIX = "Clockify activity ID:" ACTIVITY_TYPE_BY_VETRO_PROJECT = {} DEFAULT_ACTIVITY_TYPE = ActivityTypes.DEVELOPMENT diff --git a/api/redmine.py b/api/redmine.py index 8640ba4..8f2084f 100644 --- a/api/redmine.py +++ b/api/redmine.py @@ -10,10 +10,8 @@ from exceptions import InvalidToken from utils import format_hours from .constants import ( ACTIVITY_TYPE_BY_VETRO_PROJECT, - CLOCKIFY_ACTIVITY_COMMENT_PREFIX, DEFAULT_ACTIVITY_TYPE, REDMINE_ISSUES_LIMIT, - REDMINE_TIME_ENTRIES_LIMIT, REQUEST_TIMEOUT, ) @@ -44,16 +42,6 @@ class RedmineAPI(RedmineConfig): ] for activity in activities_to_track: try: - if not config.is_debug and self.has_time_entry_for_activity(activity): - activity.is_tracked = True - if on_success: - on_success(activity) - tracked.append(activity) - logger.info( - f"{Fore.GREEN}{self.format_activity_result(activity, is_beginner)}" - f"{Fore.RESET}".ljust(100) + "✅" - ) - continue if not config.is_debug: resp = requests.post( self.base_url + self.time_entries_url, @@ -63,7 +51,7 @@ class RedmineAPI(RedmineConfig): "issue_id": activity.task_id, "hours": round(activity.time_spent / (2 if is_beginner else 1), 3), "activity_id": self.get_activity_type_id(activity), - "comments": self.get_comment(activity), + "comments": activity.description, "spent_on": activity.date_start.strftime(self.datetime_format) } }, @@ -105,37 +93,12 @@ class RedmineAPI(RedmineConfig): hours = round(activity.time_spent / (2 if is_beginner else 1), 3) return f"#{activity.task_id} | {format_hours(hours)} | {activity.description}" - def get_comment(self, activity: Activity) -> str: - """Формирует комментарий Redmine с внешним id активности Clockify.""" - return f"{activity.description}\n{CLOCKIFY_ACTIVITY_COMMENT_PREFIX} {activity.id}" - def get_activity_type_id(self, activity: Activity) -> int: """Возвращает тип деятельности Redmine для активности Clockify.""" return ACTIVITY_TYPE_BY_VETRO_PROJECT.get( activity.vetro_project_id, DEFAULT_ACTIVITY_TYPE, ) - - def has_time_entry_for_activity(self, activity: Activity) -> bool: - """Проверяет, была ли активность Clockify уже перенесена в Redmine.""" - resp = requests.get( - self.base_url + self.time_entries_url, - headers={"X-Redmine-Api-Key": self.token}, - params={ - "issue_id": activity.task_id, - "spent_on": activity.date_start.strftime(self.datetime_format), - "limit": REDMINE_TIME_ENTRIES_LIMIT, - }, - timeout=REQUEST_TIMEOUT, - ) - if not resp.ok: - logger.error(f"Ошибка RedmineAPI: {resp.text} {resp.status_code}") - return False - marker = f"{CLOCKIFY_ACTIVITY_COMMENT_PREFIX} {activity.id}" - return any( - marker in time_entry.get("comments", "") - for time_entry in resp.json().get("time_entries", []) - ) def get_time_entry_activities(self) -> list[ActivityType]: """Получает виды Деятельности с сервера Redmine"""