Halo semuanya. Ada pemikiran untuk mengotomatiskan pengunduhan laporan dari Jira. Karena Python adalah alat favorit, pilihan jatuh pada modul dari JIra yang memungkinkan Anda untuk bekerja dengan API mereka. Kepada siapa itu menarik saya bertanya pada kat.

Atlassian memiliki
dokumentasi resmi tentang penggunaan modul mereka. Modul itu sendiri disebut "jira". Secara tradisi, kita akan menginstal modul dengan perintah:
pip install jira
Kemudian kami mengimpor modul secara langsung dalam kode:
from jira import JIRA
Untuk terhubung ke server itu sendiri, Anda perlu membuat klien dengan mengirimkan parameter yang diperlukan ke dalamnya:
jira_options = {'server': 'https://project-name.atlassian.net'} jira = JIRA(options=jira_options, basic_auth=(login, api_key))
Untuk mengautentikasi dengan kata sandi, Anda dapat mentransfer kata sandi alih-alih kunci api. Setelah otorisasi diteruskan, kami memiliki klien api aktif yang dapat Anda akses.
Kemungkinannya tentu tidak terbatas, tetapi cukup luas. Saya perlu menarik tugas untuk minggu tertentu dan menyusun laporan tentang jam yang dihabiskan di Excell. Anda bisa mendapatkan tugas secara langsung oleh proyek itu sendiri, dengan nomor tugas, atau dengan permintaan JQL. Alat pencarian sangat fleksibel dan sederhana. Semua informasi yang dikembalikan oleh klien api datang dalam string, sehingga langkah-langkah tambahan diperlukan untuk bekerja dengannya.
Kami menyusun permintaan jql dan mengambil tugas di dalamnya:
jql = 'project = ' + project_key + ' AND worklogDate >= ' + work_date issues_list = jira.search_issues(jql)
Sayangnya, saya masih tidak mengerti mengapa dalam tugas-tugas yang diperoleh melalui permintaan seperti itu tidak ada properti worklog. Setelah beberapa upaya untuk memahami apa yang salah, saya dengan sopan meminta jira untuk tugas dengan nomor:
issue = jira.issue(issue_key)
Dalam tugas yang dikembalikan oleh metode ini, bidang worklog dengan daftar worklog adalah. Akibatnya, saya mulai mengambil tugas dengan permintaan jql, mengeluarkan nomor tugas dan setelah itu mengeluarkan informasi yang saya butuhkan:
worklogs = issue.fields.worklog.worklogs
Baris serupa memungkinkan Anda untuk menarik semua catatan waktu dari tugas tertentu. Setiap entri memiliki informasi waktu dalam detik dan dalam representasi tekstual (1 jam, 3d dll).
Maka semuanya sederhana, ambil discard yang tidak sesuai dengan periode, dalam kasus saya jumlah minggu tidak cocok:
worklog_date_str = re.search(r'(\d{4}-\d{2}-\d{2})', worklog.started) worklog_date = datetime.strptime(worklog_date_str.group(0), '%Y-%m-%d') if worklog_date.isocalendar()[1] == weak_number:
Karena tanggal dikembalikan dalam string, saya menggunakan ekspresi reguler sederhana untuk mengambilnya, dan pada baris berikutnya saya memberikan tipe yang Anda butuhkan. Ekspresi worklog_date.isocalendar () [1] memungkinkan Anda mengetahui jumlah minggu, yang akan dibandingkan dengan apa yang perlu diambil. Jika cocok, injak dan tulis sisa data.
Secara umum, modul di atas memungkinkan Anda untuk menyelesaikan berbagai tugas yang cukup luas, Anda hanya perlu waktu dan keinginan.
UPD
Anda tidak dapat meminta tugas lagi, cukup rentangkan bidang yang diperlukan
github.com/pycontribs/jira/blob/master/jira/client.py#L2371terima kasih
HSerg