Tracでチケットメール送信の有無を指定する
チケット更新のタイミングでメールを飛ばすようにしたら、飛び交うメールの量が劇的に増えて、メールボックスがすぐ一杯になってしまうことが出てきた。リリースが近いので、仕方ない部分もあるんだけど。
で、こちら を参考にして、チケットを登録したり更新したりするときに、チェックボックスで送信するかどうか指定できるようにした。
trac/ticket/web_ui.py
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:
(略)あとは、チケットの編集画面のテンプレートにチェックボックスを付ける。
trac/ticket/templates/ticket.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">こんな感じでOK。
あとは、メールを送信する際の運用ルールを決めてやればうまく回ると思う。チケットを作るときとステータスを更新するときは必ずメール通知ONにする、とかね。