Compare commits

...

9 Commits

Author SHA1 Message Date
27166314af refactor(resolved_tasks):add secrets to the .env 2024-03-27 12:51:11 +05:00
Angelina Tingaeva
d73a2da3e6 refactor(resolved_task): make full search 2023-12-14 14:37:46 +05:00
Angelina Tingaeva
98137f11f2 fix(mapping_close_tasks):may be i have done it 2023-12-13 00:03:35 +05:00
Angelina Tingaeva
992e99b25f refactor(mapping): create status closed for tasks_completed 2023-12-12 16:14:44 +05:00
f3cac73622 fix(close_tasks): improper endpoints and data structure manipulation 2023-12-11 19:45:36 +05:00
Angelina Tingaeva
c36858f891 refactor(resolved_tasks):create logs for control the API-answer 2023-12-11 17:21:38 +05:00
Angelina Tingaeva
e1e199c53f refactor(resolved_tasks):add check for getting answer-issue, try to get tasks in response 2023-12-11 17:05:28 +05:00
Angelina Tingaeva
2edd6fd3df feat(resolved): create func for make tasks with resolved statuses 2023-12-10 21:17:56 +05:00
Angelina Tingaeva
f552c08b33 ауфе 2023-12-10 21:15:45 +05:00
3 changed files with 133 additions and 19 deletions

View File

@@ -30,7 +30,6 @@ headers = {
}
def get_assignee_data():
""" Получение данных для поля assignee """
@@ -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)
@@ -160,14 +159,7 @@ def create_tasks_in_tracker(data, limit=10):
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')

View File

@@ -1,6 +1,7 @@
certifi==2023.11.17
charset-normalizer==3.3.2
idna==3.4
dotenv==1.0.1
requests==2.31.0
setuptools==69.0.0
six==1.16.0

78
resolved_task.py Normal file
View File

@@ -0,0 +1,78 @@
import json
import os
import sys
import requests
from dotenv import load_dotenv
from logging_config import setup_logging
load_dotenv()
logger = setup_logging(__name__)
base_dir = os.path.dirname(os.path.realpath(__file__))
asana_data_json = os.path.join(base_dir, './data/data_asana.json')
users_data = os.path.join(base_dir, './data/users.mapping.asana2ya.csv')
sys.stdin.reconfigure(encoding='utf-8')
sys.stdout.reconfigure(encoding='utf-8')
QUEUE_NAME = 'TESTIMPORT'
TOKEN = os.getenv('TOKEN')
def close_tasks_in_queue(queue_name):
base_url = 'https://api.tracker.yandex.net/v2/issues/_search'
# base_url = 'https://api.tracker.yandex.net/v2/issues/_search?expand=transitions'
headers = {
'Host': 'api.tracker.yandex.net',
'Authorization': TOKEN,
'X-Org-ID': '7095769',
'Content-Type': 'application/json',
}
payload = {
"filter": {
"queue": queue_name,
"status": "open" # Фильтр для открытых задач в указанной очереди
}
}
while True:
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}')
# Вызов функции для закрытия задач в очереди 'TESTIMPORT'
close_tasks_in_queue('TESTIMPORT')