ヒビノログ

個人的なメモを淡々と記録していくブログ。最近はLaravelやスマートフォンの話題など。

Tracでチケットメール送信の有無を指定する

チケット更新のタイミングでメールを飛ばすようにしたら、 飛び交うメールの量が劇的に増えて、 メールボックスがすぐ一杯になってしまうことが出てきた。 リリースが近いので、仕方ない部分もあるんだけど。

で、こちら を参考にして、チケットを登録したり更新したりするときに、チェックボックスで送信するかどうか指定できるようにした。

trac/ticket/web_ui.py

[python]def _do_create(self, req, ticket): (略)

Notify

try: -ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀtn = TicketNotifyEmail(self.env) -ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀtn.notify(ticket, newticket=True) +ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀif 'sendmail' in req.args: +ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀ tn = TicketNotifyEmail(self.env) +ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀ tn.notify(ticket, newticket=True) except Exception, e: (略)

def _do_save(self, req, ticket, action): (略) try: -ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀ tn = TicketNotifyEmail(self.env) -ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀ tn.notify(ticket, newticket=False, modtime=now) +ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀ if 'sendmail' in req.args: +ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ tn = TicketNotifyEmail(self.env) +ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ tn.notify(ticket, newticket=False, modtime=now) except Exception, e: (略)[/python]

あとは、チケットの編集画面のテンプレートにチェックボックスを付ける。

trac/ticket/templates/ticket.html

[html]</td> </py:for> </tr> </table>

</fieldset>

+ツꀀ ツꀀツꀀ ツꀀツꀀ <p class="mailcheckbox"> +ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀ <label> +ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀ<input type="checkbox" name="sendmail" value="1"ツꀀ checked="checked" /> +ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀこの登録/変更をメールで通知します。(メール送信設定されているTracのみ有効) +ツꀀ ツꀀツꀀ ツꀀツꀀ ツꀀ </label> +ツꀀ ツꀀツꀀ ツꀀツꀀ </p>

<!--! Workflow support --> <py:if test="ticket.id"> <!--! do not display the actions for New tickets --> <fieldset id="action"> <legend>${_('Action')}</legend> <div py:for="key, label, controls, hints in action_controls">[/html]

こんな感じでOK。

あとは、メールを送信する際の運用ルールを決めてやればうまく回ると思う。チケットを作るときとステータスを更新するときは必ずメール通知ONにする、とかね。