TicketChangePluginを動作させるための変更内容メモ

こちらの記事(http://d.hatena.ne.jp/ohgui/20091120/1258724595)を見て、そういえばTracLightning2.2.5とTicketChangePlugin(r4748)を組み合わせた時に、そのままではうまく動作させられなかったなあと思い出したのでその時の改造内容をメモ。
この改造自体、どこかのサイトを参考にしたはずなのだが思い出せない…。
TracLightningを更新すると、また改造が必要になるのだろうか。

@@ -1,5 +1,5 @@
+# -*- coding: utf-8 -*-
 # Ticket changing plugins
-
 from genshi.builder import tag
 from genshi.filters import Transformer
 from genshi.filters.transform import StreamBuffer
@@ -34,12 +34,12 @@
                 
                 def insert_change_link():
                     cnum = list(buffer)[0][1][1][0][1]
-                    return tag(" ", tag.a("Change", href=("../ticketchangecomment/%s?cnum=%s" % (ticket.id, cnum))))
+                    return tag(" ", tag.a("変更", href=("../ticketchangecomment/%s?cnum=%s" % (ticket.id, cnum))))
 
-                filter = Transformer("//div[@class='change']/div[@class='inlinebuttons']/input[@name='replyto']/@value")
+                filter = Transformer("//div[@class='inlinebuttons']/input[@name='replyto']/@value")
                 return stream | filter.copy(buffer).end() \
-                              .select("//div[@class='change']/div[@class='inlinebuttons']/input[@value='Reply']") \
-                              .after(insert_change_link)
+                              .select("//div[@class='inlinebuttons']") \
+                              .append(insert_change_link)
         return stream
 
     # IRequestHandler methods
@@ -168,7 +168,7 @@
         old_author, old_comment = cursor.fetchall()[0]
         cursor.execute("UPDATE ticket_change SET newvalue=%s WHERE ticket = %s AND time = %s AND field = 'comment'", (comment, id, time))
         db.commit()
-        self.env.log.info("Ticket #%d comment of '%s' by '%s' has been updated by '%s':\nold value: '%s'\n\nnew value: '%s'\n" \
-                        % (id, strftime('%A, %d %b %Y %H:%M:%S', localtime(time)), old_author, author, old_comment.replace('\r', ''), comment.replace('\r','')))
+        #self.env.log.info("Ticket #%d comment of '%s' by '%s' has been updated by '%s':\nold value: '%s'\n\nnew value: '%s'\n" \
+        #                % (id, strftime('%Y/%b/%d  %H:%M:%S', localtime(time)), old_author, author, old_comment.replace('\r', ''), comment.replace('\r','')))

チケット画面にリンクが「変更」と表示されるように修正し、UnicodeDecodeError発生部分をコメントアウト。とりあえず動いたのでこれで良しとしてしまったが・・・pythonを知らずに改造しているので本当に正しいのか自信がない・・・。

追記:今確認したら、TicketChangePluginの最新版はr5333になっていた。改造したものは、一つ前のr4748。
追記2:2008/11/6にTrac0.11系へアップデートした時にこの改造を行っているので、それ以前にどこかに情報が出ていたはずなのだが(自分ではpythonのコードが書けないので)、今検索しても該当しそうなページが見つからず・・・。
追記3:UnicodeDecodeErrorに関しては、sitecustomize.pyで解決出来るという情報も。時間をつくってなんとか試したい。TracLightningでは 「sys.setdefaultencoding("utf8")」 設定済みのため関係なし。
http://www.okisoft.co.jp/esc/cygwin-15a.html