2010-05-11 7 views
0

프로젝트 페이지 (trac/templates/index.html)를 사용자 정의하고 싶습니다.Trac에서 자신의 python 스크립트를 실행하는 방법

더 많은 프로젝트 관련 정보를 표시하기 위해 표를 사용하고 싶습니다. 예를 들어 각 프로젝트의 관리자 목록, 각 프로젝트의 빌드 상태. 이 정보는 trac의 데이터베이스에 저장됩니다.

기본 템플릿 엔진이 정보를 제공하지 못하는 것 같습니다. 적어도 나는 그 문서화에서 가치있는 것을 발견하지 못했습니다.

그래서 JSON 문자열로 이러한 정보를 생성하는 파이썬 스크립트 (서버 측)를 작성하기로 결정했습니다. Ajax를 사용하여이 Python 스크립트에서 JSON을 가져 오는 청크 자바 스크립트도 삽입했다.

하지만 파이썬 스크립트를 trac로 해석하는 방법을 모르겠습니다.

아무도 도와 줄 수 있습니까?

답변

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

Trac의 확장 API를 사용하면 임의의 페이지를 차단하고 새로운 데이터를 삽입 할 수 있습니다 :

내가 좋아하는 뭔가가있다. 예를 들어 BatchModifyPlugin은 요청을 가로 채고 사용자 지정 쿼리 페이지에 콘텐츠를 추가합니다. http://trac-hacks.org/browser/batchmodifyplugin/0.11/trunk/batchmod/web_ui.py에서 ITemplateStreamFilter 메서드를 참조하십시오. 예제를 보려면 Trac Hacks 웹 사이트를 살펴보십시오.

관련 문제