Python Redmineで子チケット作成/削除を自動化する
11/28/2019

Python Redmineとは?
Python RedmineはRedmineと通信を行うPythonのライブラリ。
RedmineのAPI機能を100%サポートしている。
インストール
pip3 install python-redmine
前提
・親チケット 200 が存在する
・毎週木曜日に個人別のタスクチケットを作成する
実行コード
import datetime
from redminelib import Redmine
redmine = Redmine('https://redmine.example.com', key='*******************')
start_date = datetime.datetime.now().date()
due_date = start_date + datetime.timedelta(days=6)
user_ids = [21, 40, 42, 44,]
for user_id in user_ids:
user_lastname = redmine.user.get(user_id).lastname
issue = redmine.issue.new()
issue.project_id = 1
issue.subject = '%s|タイトル' % user_lastname
issue.tracker_id = 46
issue.description = ''
issue.status_id = 2
issue.priority_id = 2
issue.assigned_to_id = user_id
# issue.watcher_user_ids = [60] # ウォッチするユーザのID
issue.parent_issue_id = 200
issue.start_date = start_date
issue.due_date = due_date
issue.estimated_hours = 5 # 予定工数
issue.done_ratio = 0
issue.category_id = 16
issue.fixed_version_id = 30
issue.save()
crontab
crontab -e
-------------------------------------------------------
00 1 * * thu /usr/bin/python3 ./auto_create_task.py
-------------------------------------------------------
補足
issue.category_id などが不明な場合、セレクトボックスを開発ツールで開くとidが確認出来る。
カスタムフィールドを設定していて値を指定した場合、 issue.custom_fields = [{‘id’: 2, ‘value’: 1}] のようにする。
カスタムフィールドの値はredmineの管理→カスタムフィールドから確認可能。
同時に古いタスクチケットを終了させる場合
old_tasks = redmine.issue.filter(parent_id='236')
# 古いタスクを完了
for old_task in old_tasks:
old_task.status_id = 5
old_task.parent_issue_id = ‘’ # 親チケットから外す
old_task.done_ratio = 100 # 進捗率
old_task.custom_fields = [{'id': 2, 'value': 0}] # 今日対応か否か
old_task.save()

©️ 2020 ふじい Dev-Remo-Work.