Как запустить собственный скрипт Python в Trac - PullRequest
0 голосов
/ 11 мая 2010

Я хочу настроить страницу проекта (trac / templates / index.html).

Я хочу использовать таблицу для отображения более конкретной информации о проекте. Например, список администраторов каждого проекта, статус сборки каждого проекта. Эта информация хранится в базе данных trac.

Боюсь, что стандартный движок шаблонов не сможет дать мне там информацию. По крайней мере, я не нашел ничего ценного из этого документа.

Поэтому я решил написать скрипт на языке Python (на стороне сервера) для генерации этой информации в виде строки JSON. Я также вставил фрагмент кода javascript для извлечения JSON из этого сценария Python с использованием Ajax.

Но я не знаю, как заставить мой скрипт на python интерпретироваться trac.

Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 24 мая 2010

API расширения Trac позволяет перехватывать произвольные страницы и вставлять новые данные. Например, BatchModifyPlugin перехватывает запросы и добавляет контент на страницу пользовательских запросов. См. Методы ITemplateStreamFilter по адресу http://trac -hacks.org / browser / batchmodifyplugin / 0.11 / trunk / batchmod / web_ui.py Дополнительные примеры можно найти на веб-сайте Trac Hacks.

1 голос
/ 11 мая 2010

Я настроил trac более простым способом, добавив iframe вверху всех страниц проекта trac. Вы можете сделать это, перейдя в каталог templates в каталоге среды trac и добавив файл 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>
...