如何在Trac中运行自己的Python脚本
我想自定义项目页面(trac/templates/index.html)。
我想用一个表格来展示更多与项目相关的信息。例如,每个项目的管理员列表和每个项目的构建状态。这些信息都存储在trac的数据库里。
我有点担心默认的模板引擎无法提供这些信息。至少在它的文档中我没有找到有用的内容。
所以我决定写一个Python脚本(在服务器端)来生成这些信息,输出为JSON字符串。我还加入了一段JavaScript代码,通过Ajax从这个Python脚本获取JSON数据。
但是我不知道怎么让trac识别我的Python脚本。
有没有人能帮帮我?
2 个回答
1
Trac扩展API让你可以拦截任意页面并插入新的数据。举个例子,BatchModifyPlugin这个插件可以拦截请求,并在自定义查询页面上添加内容。你可以查看ITemplateStreamFilter的方法,地址是http://trac-hacks.org/browser/batchmodifyplugin/0.11/trunk/batchmod/web_ui.py。想要更多例子的话,可以去Trac Hacks网站看看。
1
我通过在所有trac项目页面的顶部添加一个iframe
,以更简单的方式自定义了trac。你可以通过进入trac环境目录中的templates
文件夹,然后添加一个site.html
文件来实现这个。
我有类似这样的内容:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:py="http://genshi.edgewall.org/" py:strip="">
<!--! Custom match templates go here -->
<head py:match="head" py:attrs="select('@*')">
${select('*|comment()|text()[local-name()!="script"]')}
<link rel="stylesheet" type="text/css" href="http://mysite.com/nav.css" />
</head>
<body py:match="body" py:attrs="select('@*')">
<iframe src ="http://mysite.com/nav.html"
width="100%"
id="navbar-iframe"
height="30px"
frameborder="0"
marginheight="0"
scrolling="no"
marginwidth="0">
</iframe>
<div id="tdtracbody">
${select('*|text()')}
</div>
</body>
</html>