diff --git a/mapping.py b/mapping.py index 766e710..59d0a3f 100644 --- a/mapping.py +++ b/mapping.py @@ -30,7 +30,6 @@ headers = { } - def get_assignee_data(): """ Получение данных для поля assignee """ @@ -52,7 +51,7 @@ def get_task_status(task): """ Получение данных о статусе задачи """ if task.get('completed') is True: - status = 'closed' + status = 'resolved' completed_at = task.get('completed_at', '') else: status = 'open' @@ -82,7 +81,7 @@ def transform_data(data): for task in data: status, completed_at = get_task_status(task) transformed_task = { - 'gid':task['gid'], + 'gid': task['gid'], 'summary': task['name'], 'description': task['notes'], 'createdAt': task['created_at'], @@ -91,12 +90,12 @@ def transform_data(data): 'status': status, 'completedAt': completed_at, 'parent': task['parent'], - 'subtasks' : transform_data(task['subtasks']) - # 'parent': task['parent'] # это я добавила, чтоб parent добавить + 'subtasks': transform_data(task['subtasks']) } transformed_data.append(transformed_task) return transformed_data + def create_task(task): base_url = 'https://api.tracker.yandex.net/v2/issues/_import' print(task) @@ -104,7 +103,7 @@ def create_task(task): ya_assignee = assignee.get(task['assignee']['gid'], 'dr.cyrill') else: ya_assignee = 'dr.cyrill' - + payload = { 'queue': QUEUE_NAME, 'summary': task['summary'], @@ -115,28 +114,28 @@ def create_task(task): 'assignee': ya_assignee, 'status': task['status'], } - + logger.debug('Request: %s', json.dumps(payload)) - + response = requests.post( base_url, headers=headers, data=json.dumps(payload), params=urlencode({'parent': task['parent']}) # добавила параметр для parent в url-запрос ) - + if response.status_code == 201: print('Задача успешно создана в ЯндексТрекер') - + # здесь добавлено про родительскую задачу return response.json()['id'] - + else: print( 'Ошибка при создании задачи в ЯндексТрекер:', response.content, ) - + logger.debug('Response: %s', response.content) @@ -158,16 +157,9 @@ def create_tasks_in_tracker(data, limit=10): logger.info('Found subtask gid = %s for id = %s',subtask['gid'], task_id) subtask_id = create_task(subtask) assign_parent_task(subtask_id, task_id) - - - # вот здесь тоже про родительскую задачу добавлено - #parent_task_ids = get_parent_task_ids(task, ya_imported_task_response) - - #for gid, parent_id in parent_task_ids.items(): - # assign_parent_task(ya_imported_task_response[gid], parent_id) -#и эта функция для родительской задачи написана +# и эта функция для родительской задачи написана def assign_parent_task(task_id, parent_id): """ Назначение родительской задачи """ @@ -203,8 +195,51 @@ def assign_parent_task(task_id, parent_id): # здесь я закончила добавлять про родительскую задачу с большой надеждой +# пробую закрыть задачи уже в Трекере +def close_tasks_for_completedAt(queue_name): + base_url = 'https://api.tracker.yandex.net/v2/issues/_search' + payload = { + "filter": { + "queue": queue_name, + "status": "resolved" # Фильтр для задач cо статусом closed + } + } + + response = requests.post( + base_url, + headers=headers, + data=json.dumps(payload) + ) + + if response.status_code == 200: + logger.debug('Response: %s', response.content) + + tasks = response.json() + + for task in tasks: + task_id = task['id'] + close_payload = { + 'resolution': 'fixed' + } + close_url = f'https://api.tracker.yandex.net/v2/issues/{task_id}/transitions/close/_execute' + print(close_url) + print(headers) + close_response = requests.post( + close_url, + headers=headers, + data=json.dumps(close_payload) + ) + if close_response.status_code == 200: + print(f'Задача {task_id} закрыта успешно') + else: + print(f'Ошибка при закрытии задачи {task_id}: {close_response.content}') + else: + print(f'Ошибка при получении задач для очереди {queue_name}: {response.content}') + + file = open(asana_data_json, "r", encoding="utf8") json_data = json.loads(file.read()) yandex_tracker_data = transform_data(json_data['data']) create_tasks_in_tracker(yandex_tracker_data, limit=3) +close_tasks_for_completedAt('TESTIMPORT') diff --git a/resolved_task.py b/resolved_task.py index a8df0fa..0d934a1 100644 --- a/resolved_task.py +++ b/resolved_task.py @@ -47,12 +47,10 @@ def close_tasks_in_queue(queue_name): logger.debug('Response: %s', response.content) tasks = response.json() - + for task in tasks: task_id = task['id'] close_payload = { - #'status': 'resolved', # Установка статуса "Закрыт" - #'comment': 'Задача была создана в тестовом режиме' 'resolution': 'fixed' } close_url = f'https://api.tracker.yandex.net/v2/issues/{task_id}/transitions/close/_execute'