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

Trac Add comments

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

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

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にする、とかね。

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン