如何在Trac中运行自己的python脚本

时间:2010-05-11 09:06:28

标签: python interface trac customization

我想自定义项目页面(trac / templates / index.html)。

我想使用表格来显示更多项目特定信息。例如,每个项目的管理列表,每个项目的构建状态。这些信息存储在trac的数据库中。

我担心默认模板引擎无法向我提供信息。至少我从它的文档中找不到任何有价值的东西。

所以我决定编写一个python脚本(在服务器端)以生成这些信息作为JSON字符串。我还注入了一个chunk javascript来使用Ajax从这个python脚本中获取JSON。

但我不知道如何使我的python脚本由trac解释。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

Trac扩展API允许您拦截任意页面并插入新数据。例如,BatchModifyPlugin拦截请求并将内容添加到自定义查询页面。请参阅http://trac-hacks.org/browser/batchmodifyplugin/0.11/trunk/batchmod/web_ui.py上的ITemplateStreamFilter方法。有关更多示例,请查看Trac Hacks网站。