PythonでJira APIを操作する

みなさんこんにちは。 Jiraからのレポートのダウンロードを自動化する考えがありました。 Pythonはお気に入りのツールであったため、選択はJIraのモジュールに基づいて行われ、APIを操作できました。 誰にそれが面白いか私はキャットでお願いします。

画像

Atlassianには、モジュールの使用に関する公式ドキュメントがあります。 モジュール自体は「jira」と呼ばれます。 伝統的に、次のコマンドでモジュールをインストールします。

pip install jira 

次に、モジュールをコードに直接インポートします。

 from jira import JIRA 

サーバー自体に接続するには、必要なパラメーターをサーバーに渡してクライアントを作成する必要があります。

 jira_options = {'server': 'https://project-name.atlassian.net'} jira = JIRA(options=jira_options, basic_auth=(login, api_key)) 

パスワードで認証するために、apiキーの代わりにパスワードを転送できます。 認証が渡されると、アクセス可能なアクティブなAPIクライアントができます。

可能性は確かに無限ではありませんが、かなり広いです。 特定の週のタスクを引き出し、Excellで費やした時間に関するレポートを作成する必要がありました。 プロジェクト自体、タスク番号、またはJQLクエリによってタスクを直接取得できます。 検索ツールは非常に柔軟でシンプルです。 APIクライアントから返されるすべての情報は文字列で送られるため、それを操作するには追加の手順が必要です。
jqlリクエストを作成し、そのタスクをピックアップします。

 jql = 'project = ' + project_key + ' AND worklogDate >= ' + work_date issues_list = jira.search_issues(jql) 

残念ながら、そのようなリクエストを介して取得されるタスクにworklogプロパティがない理由はまだわかりませんでした。 何が間違っていたかを理解しようといくつか試みた後、私は丁寧にjiraに番号でタスクを尋ねました。

 issue = jira.issue(issue_key) 

このメソッドによって返されるタスクでは、ワークログのリストを含むワークログフィールドがありました。 その結果、jqlクエリによってタスクを取得し始め、タスク番号を引き出し、その後必要な情報を引き出しました。

 worklogs = issue.fields.worklog.worklogs 

同様の行を使用すると、特定のタスクからすべての時間記録を引き出すことができます。 各エントリには、秒とテキスト表現(1h、3dなど)の両方で時間に関する情報があります。
その後、すべてが簡単です。期間に合わない廃棄を行ってください。私の場合、週番号は一致しません。

 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: 

日付は文字列で返されるため、単純な正規表現を使用してそれを取得し、次の行で必要なタイプを取得します。 式worklog_date.isocalendar()[1]を使用すると、週の数を調べることができます。これは、必要なものと比較されます。 一致する場合は、踏みつけて残りのデータを書き込みます。

一般に、上記のモジュールを使用すると、かなり広範なタスクを解決できます。時間と欲求だけが必要です。

UPD

タスクを再度リクエストすることはできませんが、単に必須フィールドを展開してください
github.com/pycontribs/jira/blob/master/jira/client.py#L2371
おかげでHSerg

Source: https://habr.com/ru/post/J442078/


All Articles