tracのチケット一覧にカラムを追加する。
テンプレートかPythonスクリプトいじれば出来るんでしょ?とか
思っていたら意外と大変だった。
tracのチケット一覧取得は、それ用のクエリ文がtrac環境初期化時に
DBに突っ込まれていて、一覧ページにアクセスをしたらDBから
まずそのクエリを取り出し、更にそのクエリで一覧を取得している。
…なんでこんなやり方なんだ?
前回書いたtracのインストールメモと同じ環境とすると、
以下のフォルダにDBデータがある。
C:\TracEnvironment\MyProject\db\trac.db
こいつをsqlite3で開けば読めるんだけど、Trac-jaでは、
クエリ文がUTF-8で入っていて(本家はどうなのか知らないけど)、
MS-DOSプロンプトだとうまく見られない。
そこで便利なツールがあったのでこれを使う。
http://www.forest.impress.co.jp/article/2008/09/04/pupsqlite.html
DBがささっと覗けてしまう。
で、例のクエリはどこに入っているのかと言うと、
に入っている。
report.query
テーブル定義は、
CREATE TABLE report ( id integer PRIMARY KEY, author text, title text, query text, description text )
デフォルトではこんな値が入っている。
SELECT p.value AS __color__, id AS ticket, summary AS 概要, component AS コンポーネント, version AS バージョン, milestone AS マイルストーン, t.type AS 分類, owner AS 担当者, status AS ステータス, time AS 登録日付, changetime AS _更新日付, description AS _説明, reporter AS _報告者 FROM ticket t LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' WHERE status <> 'closed' ORDER BY CAST(p.value AS int), milestone, t.type, time
このクエリ文を編集すれば、tracの表示でもカラムが追加されている。
たとえば優先度(priority)を追加したいなら、適当な位置に
priority AS 優先度,
といった記述を追加すればOK。
ちなみにこのクエリは、Pythonのsite-packageにインストールされているdb_default.pyによって
突っ込まれている模様。除くと同じクエリ文がある。trac作成時に追加カラム等が決まっているなら、
こちらを編集してからtracを作成するでもいいかもしれない。