« LDAPデータの移行 | Main | Trac/メール送信時にステータス変更(Action)に応じたメッセージを付加する »

2010.01.24

Trac/ステータスが変更された際に自動的にメールを送信する

昔の記事で書いたような気がしつつ、書いていなかったので、今さらではありますが。

Ticketのステータスが変更された時に、自動的にメール送信を行うようなカスタマイズ。今となってはかなり古いバージョンではありますが、Trac-0.11.1-ja1に対するカスタマイズです。

ticket/web_ui.py ファイル内の、_do_save(self, req, ticket, action)関数に手を加えます。

controllers = list(self._get_action_controllers(req, ticket, action))
の後に、
# always_mail_send_update で指定されているActionが実行された場合は、無条件でメール送信処理を行う。
act = self.env.config.get('ticket', 'always_mail_send_update')
acts = []
if act:
  act2 = act.split(',')
  for act3 in act2:
    acts.append(act3.lstrip())

の記述を追加。

tn = TicketNotifyEmail(self.env)
tn.notify(ticket, newticket=False, modtime=now)

の処理を実行するifブロックに、

or req.args.get('action') in acts

のような感じで、or条件を追加します(私のところでは他のカスタマイズもかなり混在していますが・・・)。

trac.ini の、ticketセクションにおいて、always_mail_send_updateでメール送信を行うアクション(チケット更新時の、ステータス変更に対応するアクション)を定義しておくと、そのアクションが実行された際にメール送信処理が実行されることとなります。複数のアクションを指定する場合、カンマで列挙します。

always_mail_send_update = accept,resolve

のような感じ。

普段はメール送信をしないけど、あるステータスに切り替わった場合に自動的にメールを送信するというような場合に使えるかと(というか、その用途で使うためにカスタマイズしたものですが)。


ちなみに、チケットが新規作成された際に無条件にメールを送信するようにするのであれば、同様に、ticket/web_ui.py を編集します。編集箇所は、def _do_create(self, req, ticket):の部分。

req.perm(ticket.resource).require('TICKET_VIEW')
の次に、以下の2行を追加。

# Ticketが新規作成された時に常にメールを送信する場合、下記のフラグにyesをセットする。
act = self.env.config.get('ticket', 'always_mail_send_create')

メール送信処理を行うif文のところに、

or act == 'yes':

を追加。trac.iniのticketセクションに、
always_mail_send_create = yes

のような感じで設定すればOK。

|

« LDAPデータの移行 | Main | Trac/メール送信時にステータス変更(Action)に応じたメッセージを付加する »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Trac/ステータスが変更された際に自動的にメールを送信する:

« LDAPデータの移行 | Main | Trac/メール送信時にステータス変更(Action)に応じたメッセージを付加する »