« 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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/47375858

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

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