« Trac/ステータスが変更された際に自動的にメールを送信する | Main | チケット新規作成時に自動的に関係者を登録する »

2010.01.25

Trac/メール送信時にステータス変更(Action)に応じたメッセージを付加する

Trac/ステータスが変更された際に自動的にメールを送信する のカスタマイズのさらにカスタマイズ。メール送信のカスタマイズ自体はかなり昔に作った内容ではあるのですが、今回、それをさらにカスタマイズすることになったので。

要件としては、例えば、ステータスがacceptされた場合は「チケットが受け付けられました」というコメントを付加してメールを送信、resolveになった場合は「チケットがクローズされました」というコメントを付加してメールを送信、って言った感じです(まぁ、単純なステータス情報の変更だけだと、メールに記載されているので、実際に出力するのはその付加情報になりますが)。

編集するのは以下の3つのファイル。

ticket/web_ui.py
_do_save 関数において、Trac/ステータスが変更された際に自動的にメールを送信する で手を加えた次の部分に数行を追加。マージした結果としては、

act = self.env.config.get('ticket', 'always_mail_send_update')
acts = []
if act:
  act2 = act.split(',')
  for act3 in act2:
    acts.append(act3.lstrip())

additionmessage = None
if req.args.get('action') in acts:
  additionmessage = self.env.config.get('ticket', '%s.additionmessage' % (req.args.get('action')))


のような感じになります。最後3行が今回追加した部分です。

また、チケットのメール送信処理を呼び出している部分の引数に、additionmessageの値を追加。

tn.notify(ticket, newticket=False, modtime=now, additionmessage=additionmessage)

のような感じ(当然ながら、呼び出される方(ticket/notification.py)も修正する必要があります)。

ticket/notification.py

class TicketNotifyEmail(NotifyEmail):
    """Notification of ticket changes."""

    template_name = "ticket_notify_email.txt"
    ticket = None
    newticket = None


の次の行に
additionmessage = None

を追加。

def notify(self, ticket, newticket=True, modtime=None):
の部分を
def notify(self, ticket, newticket=True, modtime=None, additionmessage=None):
のように書き換え。続けて、
self.ticket = ticket self.modtime = modtime self.newticket = newticket
の次に1行追加。
self.additionmessage = additionmessage
self.data.update({
    'ticket_props': self.format_props(),
    'ticket_body_hdr': self.format_hdr(),
    'subject': subject,
    'ticket': ticket.values,
    'changes_body': changes_body,
    'changes_descr': changes_descr,
    'change': change_data,
    'additionmessage': self.additionmessage
    })

の太字の部分を追加(change_dataの行の最後の , を忘れないように)。チケットのテンプレートにデータをセットする際に、パラメータadditionmessageが追加されることになります。

ticket/templates/ticket_notify_email.txt
任意の場所に、

#if additionmessage
$additionmessage
#end

のような感じで、additionmessageを出力するようにします。

trac.ini
ticketセクションに、以下のような感じで設定を追加します。

(Action名).additionmessage = メッセージ

例)

accept.additionmessage = チケットが受け付けられました

|

« Trac/ステータスが変更された際に自動的にメールを送信する | Main | チケット新規作成時に自動的に関係者を登録する »

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/47376154

Listed below are links to weblogs that reference Trac/メール送信時にステータス変更(Action)に応じたメッセージを付加する:

« Trac/ステータスが変更された際に自動的にメールを送信する | Main | チケット新規作成時に自動的に関係者を登録する »