python - 由 Trac 动态创建的文件的下载链接 - Wikimacro

标签 python trac genshi

我接到了为 Trac 编写插件的任务。 它应该提供问题跟踪系统中提交的票数和估计的燃尽数据。 用户将其请求写为 wikimacro,并提供一个链接/按钮,用于将燃尽图下载为 csv 文件,还计划输出为图表,但优先级较低。

我已经有了一个处理数据的可行解决方案,但仍然存在以下问题。

我的问题

如何在 Wiki 页面上为根据用户请求动态创建的文件提供下载链接/- 按钮?

我已经看到一些尝试在 trac 源本身和其他插件中发送文件,但由于我是网络编程新手,这并没有真正的帮助。

更新1 我一直在尝试按照菲利克斯建议的方式解决问题,这给我带来了一个新问题。 这个(愚蠢的)例子应该说明我的问题。 我的宏生成以下 URL 并将其添加为维基页面的链接。

//http://servername.com/projectname/wiki/page_name?teddy=bear    

但是即使条件返回 true,RequestHandler 也不会使用react。 编辑:这段代码现在显示了示例的工作版本。

新网址:

#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     

更新2 插入日志语句显示 match_request 永远不会被调用。

我做错了什么? (是的,create_csv() 已经存在)

更新 3 感谢您的帮助 =)

最佳答案

如果match_request没有被调用,那么process_request永远没有机会执行。假设您的插件没有任何问题导致 Trac 无法正确加载它,则可能发生的情况是在您的 match_request 版本被调用之前另一个处理程序正在匹配该 URL。尝试将日志级别提高到“调试”,看看它是否提供了足够的信息来判断谁在处理该请求。

另一个选项是为自动生成的文件创建自定义“命名空间”。尝试将生成的 URL 中的“wiki”替换为"file"之类的内容。这应该可以防止任何内置处理程序在调用插件的 match_request 方法之前处理请求。

关于python - 由 Trac 动态创建的文件的下载链接 - Wikimacro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6276080/

相关文章:

python - 矢量的二维正交投影到带有 numpy 的线上会产生错误的结果

python - 如何从 python 或 ruby​​ 将 Excel 文件保存到亚马逊 s3

python - Django + mod_python + apache : admin panel and urls don't work

trac - 如何将修改时间添加到跟踪报告

linux - 如何修复 Trac 安装

python - Genshi:嵌套 for 循环

python - 如何使用 django 发送带有动态内容的 html 电子邮件?

python - Turbogears/genshi 中的 block 标签(py :match)?

python - 可以阻止 Genshi 解析 HTML 实体吗?

python - 如何提高 Trac 的性能