<docs>(scope):Изменить README.md, создать файл со скриптом выгрузки информации о пользователях - asana_users.py, добавить директорию для хранения данных - data, изменить файл mapping.py в попытках нахождения оптимального решения
э
This commit is contained in:
parent
b17a1e0c1b
commit
15c3021005
@ -13,6 +13,6 @@
|
|||||||
| "due_on" | "deadline" | "Срок завершения задачи- дэдлайн" |
|
| "due_on" | "deadline" | "Срок завершения задачи- дэдлайн" |
|
||||||
| "assignee" | "assignee" | "Логин или идентификатор исполнителя" |
|
| "assignee" | "assignee" | "Логин или идентификатор исполнителя" |
|
||||||
| "section" | "section" | "Категория" |
|
| "section" | "section" | "Категория" |
|
||||||
| "membership" | "membership" | "Участники задачи" |
|
| "memberships" | "memberships" | "Участники задачи" |
|
||||||
| " - " | "parent" | "Связка с родительской задачей" |
|
| " - " | "parent" | "Связка с родительской задачей" |
|
||||||
| "completed" | "status" | "Степень завершения" |
|
| "completed" | "status" | "Степень завершения" |
|
||||||
|
37
asana_users.py
Normal file
37
asana_users.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import json
|
||||||
|
import csv
|
||||||
|
|
||||||
|
|
||||||
|
DATA_ASANA = './data/data_asana.json'
|
||||||
|
|
||||||
|
|
||||||
|
def get_assignee_and_followers(asana_data):
|
||||||
|
""" Получение из json-файла данных о пользователях """
|
||||||
|
|
||||||
|
with open('asana_data', 'r') as file:
|
||||||
|
data = json.load(file)
|
||||||
|
|
||||||
|
assignees = set()
|
||||||
|
followers = set()
|
||||||
|
|
||||||
|
for item in data:
|
||||||
|
assignee = item.get('assignee')
|
||||||
|
follower = item.get('followers')
|
||||||
|
|
||||||
|
if assignee:
|
||||||
|
assignees.add(assignee)
|
||||||
|
if follower:
|
||||||
|
followers.add(follower)
|
||||||
|
|
||||||
|
with open('output.csv', 'w', newline='') as file:
|
||||||
|
writer = csv.writer(file, delimiter=',')
|
||||||
|
writer.writerow(["Assignee", "Follower"])
|
||||||
|
|
||||||
|
for assignee in assignees:
|
||||||
|
writer.writerow([assignee, ""])
|
||||||
|
|
||||||
|
for follower in followers:
|
||||||
|
writer.writerow(["", follower])
|
||||||
|
|
||||||
|
|
||||||
|
get_assignee_and_followers(DATA_ASANA)
|
28638
data/data_asana.json
Normal file
28638
data/data_asana.json
Normal file
File diff suppressed because one or more lines are too long
31
mapping.py
31
mapping.py
@ -0,0 +1,31 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
|
import requests
|
||||||
|
from yandex_tracker_client import TrackerClient
|
||||||
|
|
||||||
|
client = TrackerClient(
|
||||||
|
token=<'TOKEN'>,
|
||||||
|
org_id=<'ORG_ID'>
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
TOKEN = 'y0_AgAEA7qkfTFqAArTqQAAAADyduv806rRKh8MS6GOg01ZdwPE-F4ZHuQ'
|
||||||
|
ORG_ID = '35d164dcf81e48f2b6a532f4badddd33'
|
||||||
|
|
||||||
|
|
||||||
|
# Чтение данных JSON из Asana
|
||||||
|
asana_data = json.loads(requests.get('https://api.asana.com/tasks').text)
|
||||||
|
|
||||||
|
# Маппинг данных и создание или обновление задач в Яндекс Трекер
|
||||||
|
for task in asana_data['tasks']:
|
||||||
|
yandex_data = {
|
||||||
|
'Название': task['name'],
|
||||||
|
'Описание': task['description'],
|
||||||
|
# Другие поля
|
||||||
|
}
|
||||||
|
|
||||||
|
# Преобразование данных, если необходимо
|
||||||
|
# yandex_data['Дата'] = task['due_date'].split('T')[0] # Преобразование даты
|
||||||
|
|
||||||
|
# Создание или обновление задачи в Яндекс Трекер
|
||||||
|
requests.post('https://api.yandextracker.com/v2/issues', data=yandex_data)
|
Loading…
Reference in New Issue
Block a user