2014年3月4日火曜日

Tracでチケットをクローズ出来ないようにしてみた!


Tracを活用中の @snicker_jp です!


もくじ



きっかけ

まずは、どんなことがしたかったか!?というと
  • 一般のユーザーはチケットのクローズを出来なくする
  • 管理者および上長が確認後、チケットのクローズを行う
  • これにより、報告・共有漏れを防ぐ
ユーザーでチケットをクローズされて、共有漏れを防ぐためにこの仕組みを利用しました。

前提条件



0.12/TracWorkflow – The Trac Project」を参考に

作業の流れ




「sample-plugins の workflow – The Trac Project」から CodeReview.pyを持ってくる

そのままですが、「Trac 0.12」を使っているので、「0.12用」のファイルを
sample-plugins の workflow – The Trac Project」から CodeReview.pyを持ってくる

「plugins」フォルダに配置

cp CodeReview.py [Tracヘのパス]/plugins/

Tracを再起動して、権限が追加されていることを確認


trac-admin /path/to/trac_project permission list
~ 略 ~
Available actions:
 BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW,
 LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE,
 MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT,
 PERMISSION_REVOKE, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE,
 REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW,
 SEARCH_VIEW, THEME_ADMIN, TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP,
 TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_COMMENT,
 TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_REVIEW, TICKET_VIEW,
 TIMELINE_VIEW, TRAC_ADMIN, VERSIONCONTROL_ADMIN, WIKI_ADMIN, WIKI_CREATE,
 WIKI_DELETE, WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW


設定

Trac-0.11のワークフローでTICKET_REVIEW権限を使う - Do You PHP はてな」 を参考にさせていただきました。
太字部分が、変更点です。
resolve = new,assigned,accepted,reopened -> verify
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY
verified = verify -> closed
verified.permissions = TICKET_REVIEW

diff:
--- trac.ini.20140226   2014-02-20 11:15:39.130885836 +0900
+++ trac.ini    2014-02-26 10:55:16.716470283 +0900
@@ -237,9 +237,12 @@
 reopen = closed -> reopened
 reopen.operations = del_resolution
 reopen.permissions = TICKET_CREATE
-resolve = new,assigned,accepted,reopened -> closed
+#resolve = new,assigned,accepted,reopened -> closed
+resolve = new,assigned,accepted,reopened -> verify
 resolve.operations = set_resolution
 resolve.permissions = TICKET_MODIFY
+verified = verify -> closed
+verified.permissions = TICKET_REVIEW

[timeline]
 abbreviated_messages = True


Trac再起動

どこでやってもいいんですが、少なくともここでは「Tracの再起動」


確認

チケットの完了に「verify」が表示されていれば、成功です。


まとめ


  • これで、ユーザーは「完了」処理をしても、チケットは「クローズ」になりません
  • 他、レポートなどを調整して「verify」を表示するようにします
  • 共有漏れが防げるようになりました!


参考リンク




Zenback