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.