« RICHO R10 | Main | ページのレイアウト »

2008.11.01

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

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

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

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

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

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

|

« RICHO R10 | Main | ページのレイアウト »

Subversion・Trac・etc.」カテゴリの記事

Comments

tracを検証中で、この機能ほしさに訪れました。

しかし、Windows環境にインストールして、「一括ダウンロード」ボタンを押下すると、
以下のエラーが発生します。
(traclightningを使用しています)
SampleProjectのパスは「D:\TracLight\projects\trac\SampleProject\」です。

Trac detected an internal error:

IOError: [Errno 2] No such file or directory: 'd%3A%5Ctraclight%5Cprojects%5Ctrac%5Csampleproject/attachments/wiki/WikiStart/test.xls'

# File "d:\traclight\python\lib\site-packages\Trac-0.11.2.1.ja1-py2.5.egg\trac\web\main.py", line 432, in _dispatch_request
# File "d:\traclight\python\lib\site-packages\Trac-0.11.2.1.ja1-py2.5.egg\trac\web\main.py", line 174, in dispatch
# File "d:\traclight\python\lib\site-packages\Trac-0.11.2.1.ja1-py2.5.egg\trac\web\main.py", line 295, in _pre_process_request
# File "build\bdist.win32\egg\zippackagedownload\zipdownloader.py", line 79, in pre_process_request

Posted by: suke | 2009.03.25 20:31

コメント&ご利用ありがとうございます。

エラーメッセージからすると、パス名の処理のところの問題のようですね(元々Linux上でしか動作確認をしていないので・・・)。

調べてみます。

Posted by: syo | 2009.03.25 21:39

zipdownloader.py ファイルの以下の2行を修正して再度インストールしてみていただけますでしょうか。

filename = '%s/attachments/%s/%s/%s' % (unicode(self.env.path), unicode(type), unicode(arg), row[2])
の行を、
filename = os.path.join(self.env.path, 'attachments', type, urllib.quote(arg.encode('utf-8')), urllib.quote(row[2].encode('utf-8')))
に、また、
filename = urllib.quote(filename.encode('utf-8'))
の行を、
filename = os.path.normpath(filename)
に修正してみてください。

なお、TracLightning環境が手元にないので、簡単なデバッグ(強引に文字列をセットしてどういう結果が得られるかのチェック)しかしておりませんので、もしかしたらまだ動かない可能性があります・・・。

お手数をおかけしますが、よろしくお願いします。

Posted by: syo | 2009.03.25 22:38

さっそくの対応ありがとうございます。
おっしゃるとおりに2行修正し、再インストールすれば、動作しました。
(pythonのコードを見るのは初めてだったので、自分で修正するところまで至りませんでした)

他のtrac関連の記事も参考にさせていただきます。

ありがとうございました。

Posted by: suke | 2009.03.27 17:50

遅くなりましたが、ご確認ありがとうございました。修正版のアーカイブを別途公開しておきました。⇒ http://syo.cocolog-nifty.com/freely/traczippackagedownload.html

Posted by: syo | 2009.04.12 09:01

すいません、確認したいですが、txtファイルのみ正しくDownloadできますか? Excel、DOCのファイルをやってみて、Downloadしたファイルを自体に壊れました。

Posted by: zhangna | 2009.04.17 16:40

Tracを稼働している環境はどのようなものでしょうか? 私のところ(CentOS5.2)では、Textファイル以外(バイナリファイル)の場合でも、問題なくダウンロードできております(なお、ダウンロードした端末はWindowsXPで、Explorerからでも問題なく開くことができます)。

Posted by: syo | 2009.04.17 23:03

ご返信有難うございました。

私の環境は、WindowsXP環境です。
添付するファイルは全部Excelファイルですが、
今Excelファイルのダウンロード方法としては、TRACには、
①まず添付したExcelファイルをclickして、対象ファイルはText形式で表示されますが、
②次、ページの一番下に「異なるフォーマットでダウンロード:元の形式 」をclickして、Excel形式で保存される。
上記方法は、正しくダウンロードできますが、すごく不便なんです、特に複数ファイルを添付する場合、ファイルを一つ一つ開いた後、保存できます。
「一括ダウンロード」をやって見ました、ダウンロードできますが、しかし、ダウンロードしたxlsファイルは壊れるファイルです、Sizeは1kしかないです。そして、もし添付ファイルはtxtファイルの場合、正しくダウンロードできます。
「一括ダウンロード」方法はTRAC自身の「元の形式 」の方法と違いますか?

Posted by: zhangna | 2009.04.20 10:49

返信が遅くなり申し訳ございません。Tracの「元の形式」のダウンロードの部分のソースを見てみたのですが、「一括ダウンロード」は異なる方法となっております(リポジトリブラウザのzip形式でのダウンロードの部分のソースを参考に作っております)。

ですので、その部分が影響している可能性はありますが・・・私の環境(CentOS5.2)では問題ないだけに、Windows固有の問題かもしれません(すぐに動作確認できる環境がないので・・・)。

もしかすると、ファイル名のエンコード等が影響している可能性があるかもしれません。Trac自身がutf-8形式にエンコードしてファイルを保管している前提で処理し、zipに出力する時はShift-JIS(cp932)固定で処理を行うようにしています。

Posted by: syo | 2009.05.05 22:27

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Tracで添付ファイルの一括ダウンロード:

» ZipPackageDownload修正版 [気の向くままに・・・]
Tracで添付ファイルの一括ダウンロード の修正版を公開しました ⇒ Trac/ [Read More]

Tracked on 2009.04.12 08:59

« RICHO R10 | Main | ページのレイアウト »