Trac用のプラグインを作成するタスクが与えられました。課題追跡システムに提出されたチケット数と見積もりのバーンダウンデータを提供する必要があります。ユーザーは自分のリクエストをwikimacroとして書き込み、バーンダウンをcsvファイルとしてダウンロードするためのリンク/ボタンが提供されます。チャートとしての出力も計画されていますが、優先度は低くなります。
データを処理するための実用的なソリューションがありますが、次の問題が残ります。
私の質問
ユーザーの要求によって動的に作成されたファイルのダウンロードリンク/-ボタンをWikiページに提供するにはどうすればよいですか?
私はtracソース自体や他のプラグインでファイルを送信する試みを見てきましたが、私はWebプログラミングに慣れていないので、実際には役に立ちません。
Update1 私はフェリックスが提案した方法で問題を解決しようとしてきましたが、それは私にとって新しい問題を引き起こしました。この(ばかげた)例は私の問題を示しているはずです。My Macroは次のURLを生成し、それをwikiページへのリンクとして追加します。
//http://servername.com/projectname/wiki/page_name?teddy=bear
ただし、条件がtrueを返しても、RequestHandlerは反応しません。 編集:このコードは、例の動作バージョンを示しています。
新しいURL:
#example url
#http://127.0.0.1:8000/prove/files/new
class CustomRequestHandlerModule(Component):
implements(IRequestHandler)
def match_request(self,req):
#old, not working
#return "teddy=bear"== str(req.path_info).split('?')[1]
#new
accept="/files/new"== str(req.path_info)
return accept
def process_request(self,req):
csvfile = self.create_csv()
req.send_response(200)
req.send_header('Content-Type', 'text/csv')
req.send_header('Content-length', len(csvfile))
req.send_header('Content-Disposition','filename=lala.csv')
req.end_headers()
req.write(csvfile)
raise RequestDone
Update2 loggingstatements を挿入すると、match_requestが呼び出されないことが示されます。
私は何が間違っているのですか?(はい、create_csv()はすでに存在します)
支援のために3Thxを更新=)