« October 2008 | Main | December 2008 »

November 2008

2008.11.30

カスタムクエリページにコメントも出力する

 Excelからの移行においてよく言われることの1つに、「Excelだと(ページを切り替えることなく)全部見ることができたのに」ってのがあるかと。まぁ、確かに「修正依頼の内容」と「修正(対応)内容」をスクロールだけで表示することができますからねぇ。ついでに、印刷する時にそのシートのみの印刷で事足りますから。
 Tracの場合、基本的に1ページにつき1つのTicketなので、対応内容も含めて印刷を行う場合(そもそも、印刷することの是非に関してはここでは触れないこととします)はかなり面倒なことに。カスタムクエリのページで、「修正依頼」の内容に関してなら出力可能ですが、それでも修正(対応)内容を出力したい場合は不充分。

 ということで、カスタムクエリのページ(およびTicketQueryMacro)において、対応内容(コメント)も出力することができるような改造を施してみました。本来はプラグインで完結させたかったのですが、残念ながら僕の力では叶わず、あきらめてTrac本体に手を加えることとしました。

 修正対象のファイルは、trac/ticket/query.pytrac/ticket/templates/query_results.htmlの2ファイル。ただし、これとは別に、外部スクリプト:要素の汎用折りたたみのページで公開していただいているfold.jsに対してカスタマイズしたものが必要となります(元ページとしてはhttp://sug.blog2.fc2.com/blog-entry-115.htmlとなります)。

■query.pyおよびquery_results.htmlのパッチ⇒ダウンロードはこちらから:querycomment-patch.txt (9.6K)
 カスタムクエリページでpreserve_newlinesを反応させるの内容も含まれております。なお、その他のカスタマイズも含まれているので行番号は参考程度にお考えください。

■カスタマイズ版fold.js⇒ダウンロードはこちらから: fold.js (4.7K)
 ※fold.jsのカスタマイズ内容としては、全ての項目を一括で展開する/折りたたむための処理を追加したものとなっております。なお、trac/htdocs/jsフォルダ内にコピーしてください。

Continue reading "カスタムクエリページにコメントも出力する"

| | Comments (0) | TrackBack (0)

2008.11.29

カスタムクエリページでpreserve_newlinesを反応させる

 カスタムクエリページ(あるいはWikiページにおけるTicketQueryマクロ)の結果において、description(説明)などのテキストを1行使用して出力することが可能です・・・が、実は、preserve_newlinesの設定が反映されていないようです。

 試しに、パッチを作ってみました。とりあえずは、動いているようです(^^;

 なお、行番号に関しては、オリジナルのソースの行番号とずれているので注意してください(他のカスタマイズも混じっていているので)。

Continue reading "カスタムクエリページでpreserve_newlinesを反応させる"

| | Comments (0) | TrackBack (0)

2008.11.26

DB2のSQLExceptionのスタックトレース

 DB2に対してjdbcドライバで接続した場合、SQLException発生時のスタックトレースにおいてIDやコードしか出力されないため、デバッグが結構手間に感じることが(他のドライバで接続した場合は試していないのでわかりませんが)。

 いろいろと調べてみると、接続時のパラメータでretrieveMessagesFromServerOnGetMessageの値をtrueにすればOKのようです。

参考:ftp://ftp.software.ibm.com/ps/products/db2/info/vr95/pdf/ja_JP/db2ajj950.pdfの資料の112ページ目(ページ下部のページ番号では102ページ目)。

| | Comments (0) | TrackBack (0)

2008.11.25

CentOSのTrac環境のUpdate

 今更ではありますがCentOS5でTrac&XML-RPCで構築した環境をUpdateしたので、そのメモ(いくつかのサーバで動かしているTrac環境の統一化が目的なので、大幅なUpdateは極力避ける)。

 いちばん大きな変更点は、Python2.5.1 => Python2.5.2・・・? Tracの動作環境であるPythonのバージョンが変わるということで、これを前提としてインストールした各ライブラリも念のためにUpdate。ついでに便乗して他のライブラリも若干更新しましたが、(本来はインストールしていたバージョンをアンインストールする必要があるのかも知れませんが、それを行わずに)前回と同様の手順で各モジュールの configure / make / make install を実行するだけでサクッと作業は完了しました(Pythonのインストール先が変わるので、Tracおよび各プラグインも再インストールとなりましたが)。なお、Subversionに関してはリポジトリ形式などの都合上、1.4系列の範囲内で更新。

 Apacheを再起動して、Tracの設定情報確認用ページを表示してみると、Python2.5.2等の新しいバージョンを認識しているので、多分問題なく更新できているんでしょう(^^; Subversionリポジトリに直接アクセスしてみると、こちらも問題なく新しくインストールしたバージョンを認識しているようです(commit等も問題なく行えているようです)。

| | Comments (0) | TrackBack (0)

2008.11.24

WikiFontMacro

Wikiテキストに文字色/背景色を指定するマクロ WikiColorMacro をベースに、文字サイズも指定することができるマクロを作ってみました。

WikiFontMacro

もちろん、Trac本体だけでもWikiテキストに文字色を指定することは可能ですが、マクロ化することで少し敷居が低くなるといいなぁ・・・ってことで。

| | Comments (0) | TrackBack (0)

2008.11.23

TracのチケットをExcelでエクスポートする

 普段はTracで修正依頼を管理していても、「どうしてもExcelデータが必要だ」という人は多いようで・・・。多くの場合は、「報告書をExcel形式で提出しなければならない」とかそういう感じの理由のようですが。個人的には、「本当にその形式の報告書でなければならないの? それを見直すことは絶対認められないの?」と思ったりもするのですが、こんなことが理由でTracにネガティブイメージを持たれるのもアレなので。

ExcelReportExportプラグイン

| | Comments (0) | TrackBack (0)

2008.11.22

Tracで添付ファイルを直接ダウンロード(2)

 Tracで添付ファイルを直接ダウンロードTrac/DownloadConfig)において、添付ファイルの削除を行うことができないという指摘を頂きました。

 ってことで、修正してみました。Trac本体のcore.pyを参考に、htmlを直接書き換えてPreview画面へのリンクを付加するようにしています(削除を行う場合は、Preview画面を経由することとなります)。残念ながら、一部対応しきれなかったところがありますが(タグの処理を行うところで予期せぬエラーが出てしまう・・・)。

| | Comments (0) | TrackBack (0)

2008.11.19

文字色をセットするマクロ(2)

 文字色をセットするマクロ(Trac0.11.1)の修正版を公開しました。
Trac/WikiColorMacro

| | Comments (0) | TrackBack (0)

2008.11.16

Tracで添付ファイルを直接ダウンロード

 Tracの添付ファイルは基本的にTracのレンダリング機能により表示されます・・・が、PDFファイルなどの場合、直接ダウンロードできるか、あるいはAdobeReaderのPluginによるレンダリングを行って欲しい気もしつつ(毎回、「このファイルはプレビューできません」⇒「元形式でダウンロード」というのも面倒なので・・・)。

 ってことで、作ってみました。⇒Trac/DownloadConfig

| | Comments (0) | TrackBack (1)

2008.11.15

Ticketの添付ファイルのファイル名を加工する(2)

 Ticketの添付ファイルのファイル名を加工するで添付したソースの場合、ファイル名に2バイト文字が含まれているとエラーが発生してしまいます。

 ってことで、そのあたりを修正しました。
ダウンロードはこちらから: TicketAttachmentId-r20.zip (1.6K)

#修正そのものは結構前に終わっていたのですが(^^;

| | Comments (0) | TrackBack (0)

2008.11.14

カスタムクエリ抽出結果画面の更新日の表示

 カスタムクエリの抽出結果画面において更新日の列を結果に追加した場合、デフォルトでは「n日」とかいう感じで、最終更新日時からの経過日数(あるいは週数)が表示されることとなります。「n日」の範囲はまだいいのですが、「n週」とかになってくると、実際の日付はすぐにはわかりません(マウスポインタを持っていくと表示されるツールチップで確認することはできますが)。
 「n日」の表示を、実際の更新日時に変更したい場合は、Trac0.11のTicketの日付表示(2)で作成したdateinfo2を使用すればOK。ticket/templates/query_results.htmlファイルでdateinfoを使用している部分を、何も考えずにdateinfo2に変更すれば、とりあえずそれっぽい表示にはなります。

 で、気付いたのですが、カスタムクエリ画面で更新日を条件に抽出したいおよびその2のカスタマイズを施した状態だと、更新の列が2行表示されてしまうようです。
 元々、colsの内容としてchangetimeが登録されているところに対して、カスタマイズでさらにchangetimeを追加してしまっていることが原因のようです。

Continue reading "カスタムクエリ抽出結果画面の更新日の表示"

| | Comments (0) | TrackBack (0)

2008.11.12

LoginRedirectPlugin

 LoginRedirectPluginを公開しました。認証エラーの場合、自動的にログイン用のURLにリダイレクトすることができます。

 余談ですが、有効とするLoginModuleを差し替えるだけで、(設定ファイル等に記述することなく)自動的にカスタマイズしたLoginModuleを使用することができるんですね。毎度毎度、Tracの拡張性(?)は勉強になります(僕自身が何も考えずに作ったら、おそらくLoginModuleを切り替えるためには設定ファイルで記述するようになってしまうでしょうし)。

#作り終わってから気付いたのですが、trac hacksのページにPermRedirectPluginとして同様のプラグインが既に公開されていたんですね(^^;

| | Comments (0) | TrackBack (0)

2008.11.11

Java Expert #03 発刊

Java Expert #03 が今週末に発刊されるとのことです。
Java Expert 編集部: Java Expert #03

NetBeansは・・・残念ながら、全然使っていないんですよねぇ(^^;

#とりあえず買うとは思いますが。

| | Comments (0) | TrackBack (0)

2008.11.10

TicketCountTableで抽出条件にORを指定できるように

TicketCountTableマクロ(r93)
 DBからチケットを抽出する際の条件において、ORを指定できるように対応しました。これにより、statusがnewあるいはassignedの状態のチケットに対して、2つのパラメータで集計表を作成したりすることができるようになります。

| | Comments (0) | TrackBack (0)

2008.11.09

TracLinksのリンク用Prefixを追加する

 添付ファイルへのリンクを張る場合、attachment:filenameのような感じで記述しますが・・・attachmentって、文字数が多くて入力が少し面倒(^^;

 調べていると、IWikiSyntaxProviderインタフェースのget_link_resolvers()関数の戻り値でリンクを定義しているようです。例えば、attachment.py においては、

def get_link_resolvers(self):
    yield ('raw-attachment', self._format_link)
    yield ('attachment', self._format_link)

って感じで記述されており、raw-attachmentとattachmentという名前に反応するようです(なお、raw-attachmentを使用した場合は、直接元の形式でのダウンロードの動きとなります)。

 ここに、

yield ('file', self._format_link)

といった感じで追加すると、file:filenameというリンクも反応するようになります。

 ただ、残念ながら、(試した範囲では)

yield (u'添付ファイル', self._format_link)

のような感じの日本語は反応しませんでした・・・。ソースを確認していない(というか追い切れなかった)のですが、おそらくはテキストをパースする時の正規表現の都合によるものではないかと。

| | Comments (0) | TrackBack (0)

2008.11.08

プラグイン若干修正

ユーザ毎の初期ページ設定
 anonymousの場合、初期ページが正しく処理されていなかったのを修正しました。

TicketCountTableマクロ
 ownerがnullの場合と空の場合との挙動がカスタムクエリのページと違っていたのを修正しました(null値と空値を同一視するようにしました)。ただ、カスタムフィールドで空値とnullが混在している場合の挙動に影響が出ているかも知れません・・・(^^;

| | Comments (0) | TrackBack (0)

2008.11.07

NoteBoxPlugin

NoteBoxPlugin

 「注意(警告)」「Tips」「ノート」の3種類のメモをWikiページに追加するマクロ。実際のレンダリング結果は上記リンク先URLを参照していただくこととしまして、シンプルではありますが、「チームメンバーへの説明ページ」などにおいて使うと効果的かも知れません。

 日本語も問題なくレンダリングできますし、行数が増えた場合でも自動的に縦方向に伸びてくれます。なお、r4748においては、htmlのエスケープ処理は特に行われていないようですので、若干注意が必要かも知れません(JavaScript等もそのまま記述できてしまいます)。逆に、htmlがそのまま通るので、途中で改行したい場合は<br />タグを書けばOKとなっていますが(^^;

| | Comments (0) | TrackBack (0)

2008.11.06

カスタムクエリ画面で更新日を条件に抽出したい(2)

 カスタムクエリ画面で更新日を条件に抽出したいで、無理矢理更新日を条件に検索する機能を追加してみました。まぁ、自分も書いていますが、予想通り「範囲指定ができた方がいい」という要望がありました。

 すがるのダイアリー 最近一週間でクローズしたチケットを抽出するTracのカスタムレポートによると、Trac0.12において、日付指定によるクエリを実行できるようになるようです。#2288 Date/time based ticket queriesで、対応されたのはr7588

 ってことで、0.12devのソースを元に、0.11.1を改造してみました。
  ⇒query.py (2.1K)

 get_constraint_sql関数(というか、上記のquery.pyにはこの関数しか含まれていません)を置き換えて使います。上記の関数に加えて、それを呼び出している場所(2ヶ所)の周辺の書き換えを行います。

constraint_sql = filter(None,
  [get_constraint_sql(k, val, mode, neg)
  for val in v])
if not constraint_sql:
  continue
if neg:
  clauses.append("(" + " AND ".join(
    [item[0] for item in constraint_sql]) + ")")
else:
  clauses.append("(" + " OR ".join(
    [item[0] for item in constraint_sql]) + ")")
args += [item[1] for item in constraint_sql]

の部分の最後のargs += ~をコメントアウトし、そのすぐ下の
constraint_sql = get_constraint_sql(k, v[0], mode, neg)
if constraint_sql:
  clauses.append(constraint_sql[0])
  args.append(constraint_sql[1])

args.appendの部分をargs.extendに書き換えます。

 前提として 前回のカスタマイズが適用されている必要があります(なお、今回のカスタマイズは更新日のみ対応しています)。
 また、r7588の場合、例えば終了日に2008/11/05と指定した場合は不等号の関係で2008/11/4までのチケットしか抽出されませんが、内部で+1日して2008/11/05のチケットも抽出対象となるようにしています。

日付指定方法は
yyyy/MM/dd ⇒ 更新日が指定日以降のチケットが抽出対象
;yyyy/MM/dd ⇒ 更新日が指定日以前のチケットが抽出対象
yyyy/MM/dd;yyyy/MM/dd ⇒ 更新日が指定日の範囲内のチケットが抽出対象
といった感じで、セミコロンで区切ります。また、「に次が含まれる」「が次で始まる」「が次で終わる」「は次と等しい」は同じ挙動を、「に次は含まれない」「は次と等しくない」は同じ挙動を示します(後者は、反対の条件での抽出となります)。

#タイムゾーンの取り扱いでミスっているかも知れません・・・。

Continue reading "カスタムクエリ画面で更新日を条件に抽出したい(2)"

| | Comments (0) | TrackBack (1)

2008.11.05

ユーザ毎の初期ページ設定プラグイン

ユーザ毎の初期ページ設定プラグインなるものを作ってみました。

| | Comments (0) | TrackBack (0)

2008.11.03

Trac0.11.2はもうすぐリリース?

 いつの間にやら(?)、Trac0.11.2のActive Ticketsが0件になっているようです。2008/10/22(2週間ほど前)に、まもなくリリース(Release will happen in the coming days)と書かれていますね(これを書いている時点ではダウンロードページではまだTrac0.11.1のまま)。

 対象となるTicketsの一覧を見たところ、(個人的に)気になるのは以下のチケットですか。
#2209 Sort milestones by completed date and due date
⇒マイルストーンの並び順を変更
#2530 Search doesn't work on custom fields
 ⇒カスタムフィールドが検索対象となっていなかった
#2780 ShowPath integration into Trac
⇒いわゆる「パンくず」リストがTrac本体の機能に含まれた
#5998 Add support for grouping, ordering, and column sets to default queries
⇒QueryリンクでGROUP指定等が効くように(参考:Tracのdefault_query
#7465 New custom ticket fields are set incorrectly on old tickets
⇒カスタムフィールドを追加した場合の登録済みチケットの取り扱い。
#7544 Pagination in ticket query doesn't work when no constraints are defined
⇒クエリページで1つも条件を指定しなかった場合、ページング機能が機能しない(参考:カスタムクエリのページング機能の不具合

Continue reading "Trac0.11.2はもうすぐリリース?"

| | Comments (0) | TrackBack (0)

2008.11.02

ページのレイアウト

ページのレイアウトを変更してみました&ココログの「ウェブページ」も使ってみました。

#備忘録も兼ねているので、「目次っぽい」ページも追加してみました。

| | Comments (0) | TrackBack (0)

2008.11.01

Tracで添付ファイルの一括ダウンロード

 表示中のWikiページ/チケットに複数の添付ファイルが登録されている場合、一括でダウンロードしたいなぁ・・・と思うこともしばしば。ってことで、作ってみました。

 プラグインを有効にした場合に追加されるPACKAGE_DOWNLOAD権限が割り当てられている場合、「ファイルを添付する」のボタンの横に「一括ダウンロード」ボタンが追加されます(添付ファイルが1件以上登録されている場合のみ)。

 ポチッと押すと、登録されている添付ファイルをZipファイルにまとめてダウンロードすることができます。なお、ファイル毎にダウンロードする/しないの選択を行うことはできません。表示中のWikiページ/チケットに登録されている添付ファイル全てが処理対象となります。

ダウンロードはこちらから(2.6K)

#Trac本体の、リポジトリのデータのZipダウンロードの部分を参考にしています。

| | Comments (9) | TrackBack (1)

« October 2008 | Main | December 2008 »