TracLightning(2.5.2)のMailArchivePlugin改造メモ

本家サイトに繋がらない事多いので動かしている環境の改変箇所を自分用にメモ:

  • MailArchivePlugin本体
    • 初期状態はツリー表示OFF、トップに最新メール表示が好みなのでデフォルト値変更
    • WikiSyntaxMlを改変
    • wiki表示モードが死んでるので修正
    • text表示モードでAAが崩れないように等幅フォントに変更
Index: E:/SampleProject/mailarchiveplugin/mailarchive/web_ui.py
===================================================================
--- E:/SampleProject/mailarchiveplugin/mailarchive/web_ui.py	(リビジョン 2)
+++ E:/SampleProject/mailarchiveplugin/mailarchive/web_ui.py	(リビジョン 3)
@@ -136,7 +136,7 @@
 
         #id = req.args.get('id','')
         action = req.args.get('action', 'list')
-        flatmode = (req.args.get('flatmode', 'off') == 'on')
+        flatmode = (req.args.get('flatmode', 'on') == 'on')
         
         if action == 'import':
             # before import lock db , in order to avoid import twice
@@ -200,7 +200,7 @@
         pagelized = self._pagelize_list(req, results, data)
 
         #Thanks http://d.hatena.ne.jp/ohgui/20090806/1249579406
-        data['reversemode'] = reversemode = (req.args.get('reversemode', 'off') == 'on')
+        data['reversemode'] = reversemode = (req.args.get('reversemode', 'on') == 'on')
         data['flatmode'] = flatmode
 
         mails_per_page, cached_mails = self._get_mails_per_page(pagelized, reversemode, flatmode)
Index: E:/SampleProject/mailarchiveplugin/mailarchive/wikisyntax.py
===================================================================
--- E:/SampleProject/mailarchiveplugin/mailarchive/wikisyntax.py	(リビジョン 2)
+++ E:/SampleProject/mailarchiveplugin/mailarchive/wikisyntax.py	(リビジョン 3)
@@ -36,9 +36,11 @@
         return [('ml', self._format_link)]
 
     def get_wiki_syntax(self):
-        yield (r"!?\[(.+?)[ :]([0-9]+)\]", # [xxx 123] or [aaa:123]
-               lambda x, y, z: self._format_link(x, 'ml', y[1:1], y))
-
+#       yield (r"!?\[(.+?)[ :]([0-9]+)\]", # [xxx 123] or [aaa:123]
+#              lambda x, y, z: self._format_link(x, 'ml', y[1:1], y))
+        yield (r"!?\[ML:\[(.+?)[ :]([0-9]+)\]\]", # [xxx 123] or [aaa:123]
+               lambda x, y, z: self._format_link(x, 'ml', y[1:1], y[4:-1]))
+	       
     def _format_link(self, formatter, ns, target, label):
         cursor = formatter.db.cursor()
         cursor.execute("SELECT subject,id FROM mailarc WHERE subject like '%s%%'" % label)
Index: E:/SampleProject/mailarchiveplugin/mailarchive/htdocs/css/mailarchive.css
===================================================================
--- E:/SampleProject/mailarchiveplugin/mailarchive/htdocs/css/mailarchive.css	(リビジョン 2)
+++ E:/SampleProject/mailarchiveplugin/mailarchive/htdocs/css/mailarchive.css	(リビジョン 3)
@@ -1,3 +1,6 @@
+
+.mailarchive { font: normal 13px "MS Gothic"; background: #dfd; }
+
 fieldset.collapsed {
 	border-width: 0px;
 	margin-bottom: 0px;
Index: E:/SampleProject/mailarchiveplugin/mailarchive/model.py
===================================================================
--- E:/SampleProject/mailarchiveplugin/mailarchive/model.py	(リビジョン 2)
+++ E:/SampleProject/mailarchiveplugin/mailarchive/model.py	(リビジョン 3)
@@ -18,6 +18,7 @@
 from trac.util.compat import set, sorted
 from trac.util.datefmt import utc, to_timestamp
 from trac.wiki.formatter import Formatter, WikiProcessor
+from trac.wiki import wiki_to_oneliner
 
 from api import IEmailHandler
 from attachment import MailArchiveAttachment
  • Trac本体(メール添付ファイルがチケットへの添付と誤認識される件への対策)
Index: python-lib/trac/trac/ticket/model.py
===================================================================
--- python-lib/trac/trac/ticket/model.py	(リビジョン 4)
+++ python-lib/trac/trac/ticket/model.py	(作業コピー)
@@ -316,10 +316,10 @@
                            "FROM ticket_change WHERE ticket=%s AND time=%s "
                            "UNION "
                            "SELECT time,author,'attachment',null,filename,0 "
-                           "FROM attachment WHERE id=%s AND time=%s "
+                           "FROM attachment WHERE id=%s AND time=%s AND type='ticket'"
                            "UNION "
                            "SELECT time,author,'comment',null,description,0 "
-                           "FROM attachment WHERE id=%s AND time=%s "
+                           "FROM attachment WHERE id=%s AND time=%s AND type='ticket'"
                            "ORDER BY time",
                            (self.id, when_ts, str(self.id), when_ts, 
                            str(self.id), when_ts))
@@ -328,10 +328,10 @@
                            "FROM ticket_change WHERE ticket=%s "
                            "UNION "
                            "SELECT time,author,'attachment',null,filename,0 "
-                           "FROM attachment WHERE id=%s "
+                           "FROM attachment WHERE id=%s AND type='ticket'"
                            "UNION "
                            "SELECT time,author,'comment',null,description,0 "
-                           "FROM attachment WHERE id=%s "
+                           "FROM attachment WHERE id=%s AND type='ticket'"
                            "ORDER BY time", (self.id,  str(self.id), 
                            str(self.id)))
         log = []
  • その他の仕込み
    • nkfのインストール
      • make出来る環境無いならcompile済のWindows用バイナリ拾ってくるのが手っ取り早い
      • %TRAC_LIGHT_HOME%\bin 以下とかに置いておく
    • メールアカウントの準備
      • ArchiveしたいMLに登録する
    • trac.iniの編集
      • メールアドレス情報を反映
      • nkfの指定
[mailarchive]
codecaliases = iso-2022-jp:cmd:nkf -J -w -x --cp932,Shift_JIS:cp932
items_page = 200
pop3_delete = imported
pop3_password = ******
pop3_server = ******
pop3_user = ******
replaceat = @
wikiview = enabled
    • TracMailArchive-admin.exeの定期巡回
call setenv.bat
TracMailArchive-admin.exe %TRAC_LIGHT_HOME%\projects\trac\%PROJECT_NAME% pop3 %ML_NAME%
      • schtasksで一時間おきに自動実行
schtasks /create /tn "MailArchiveScript" /tr %TRAC_LIGHT_HOME%\python\Scripts\GetPop3.bat /sc minute /mo 60