- blogs:
- cles::blog
tracの通知メールをカスタマイズしてみる
trac
python
某所のtracにカスタムフィールドを使ってtextareaの項目を追加することになったので、trac.iniの[ticket-custom]を書き換えて対応することにしました。ところが、今回追加した項目自体はticketのtypeが特定の項目のときだけ使うことを想定していたので、ticketのタイプによって通知メールに項目を記載したりしなかったりしたいということになりました。
まぁ、これくらいは誰かやっているだろうという軽い気持ちでスタートしたのですが、tracの通知メールをカスタマイズしているという事例はあまり見つかりませんでした。tracはPythonで書かれていますが、国内のPythonの普及事情を考えると仕方がないことかもしれません。実はPythonは今から7年前頃にZopeを触っていたころにバリバリ書いていたころがあったので、昔取った杵柄ということでカスタマイズにチャレンジしてみました。結局、腕が錆びていてかなり苦戦はしてしまいましたけど。
† とりあえず場所は特定できたけれど
とりあえずメール本文のテンプレートはtemplates/ticket_notify_email.csで送っているスクリプトはtrac/ticket/notification.pyということはすぐにわかったのですが、具体的にプログラムのどの部分がカスタムフィールドを扱っているのか良くわからずにちょっと時間を食ってしまいましたが、色々試した結果format_props()が下記の部分を処理していることがわかりました。
今回はTypeが"ほげ"の場合のときだけCondition:のブロックが表示されればよかったので、
かなり手抜きですがこんな感じで片付けてみました。
せっかくテンプレート使っているんだからこの辺りももうちょっとカスタマイズ可能なようにしてくれればいいのにとちょっと思ったり。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2261
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
- 換気口に風よけカバーを設置 (2)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(966)
3 . svn でコミットしたらエラーが出たので(926)
4 . シャープの空気清浄加湿器のキュルキュル音対策は PTFE テープで(858)
5 . RT810 の DHCP サーバを WPAD に対応させる(834)