TicketCountTableマクロをちょっと改造

http://syo.cocolog-nifty.com/freely/trac_ticketcounttable.html で公開されているTicketCountTableマクロがちょっと便利そう!ということで早速プロジェクトのTracに組み込んでみました。

用途としては、バグ分析にちょっと使えたりするかな? 例えばバグの作り込みの原因分析など。

使ってみると、抽出条件にマイルストーン名を指定する場合、マイルストーン名に閉じ括弧(])が含まれていると、生成されるカスタムクエリのリンクがおかしくなってしまいました。カスタムクエリリンクの閉じ括弧とみなされて途中で切れてしまう模様。

ということでTicketCountTableをちょっと改造してみました。パッチファイルを載せておきます。やったことはめっちゃ単純で、[query:・・・]で括弧(])があっても大丈夫なように、ダブルクォートで囲ってあげただけです。

*** TicketCountTable.py.org	2008-12-13 01:14:49.000000000 +0900
--- TicketCountTable.py	2008-12-13 01:29:57.000000000 +0900
***************
*** 149,155 ****
                      # テーブル部分本体
                      eachval = int(each[cnt2])
                      if eachval != 0:
!                         wikitext += "[query:%s=%s&%s=%s%s%s %s]||" % (yaxiscolname, unicode(y), xaxiscolname, unicode(x), querycond, mquery, unicode(each[cnt2]))
                      else:
                          wikitext += "0||"
                      linesum = linesum + eachval
--- 149,155 ----
                      # テーブル部分本体
                      eachval = int(each[cnt2])
                      if eachval != 0:
!                         wikitext += "[query:\"%s=%s&%s=%s%s%s\" %s]||" % (yaxiscolname, unicode(y), xaxiscolname, unicode(x), querycond, mquery, unicode(each[cnt2]))
                      else:
                          wikitext += "0||"
                      linesum = linesum + eachval
***************
*** 160,166 ****
                      cnt2 = cnt2 + 1
                  # 小計列
                  if linesum != 0:
!                     wikitext += "[query:%s=%s%s%s %s]||\n" % (yaxiscolname, unicode(y), querycond, yquery, unicode(str(linesum)))
                  else:
                      wikitext += "0||\n"
              else:
--- 160,166 ----
                      cnt2 = cnt2 + 1
                  # 小計列
                  if linesum != 0:
!                     wikitext += "[query:\"%s=%s%s%s\" %s]||\n" % (yaxiscolname, unicode(y), querycond, yquery, unicode(str(linesum)))
                  else:
                      wikitext += "0||\n"
              else:
***************
*** 176,182 ****
              if ysum.has_key(x):
                  ysumval = int(ysum[x])
                  if ysumval != 0:
!                     wikitext += "[query:%s=%s%s%s %s]||" % (xaxiscolname, unicode(x), querycond, xquery, unicode(ysum[x]))
                  else:
                      wikitext += "0||"
                  linesum = linesum + ysumval
--- 176,182 ----
              if ysum.has_key(x):
                  ysumval = int(ysum[x])
                  if ysumval != 0:
!                     wikitext += "[query:\"%s=%s%s%s\" %s]||" % (xaxiscolname, unicode(x), querycond, xquery, unicode(ysum[x]))
                  else:
                      wikitext += "0||"
                  linesum = linesum + ysumval