sudo apt-get install trac
Подготавливаем папку для тестов
cd@cd-laptop: cd
cd@cd-laptop: mkdir tests
cd@cd-laptop: cd tests
cd@cd-laptop: mkdir tracdir
cd@cd-laptop: trac-admin tracdir initenv
жмем энтер :)
Запускаем через stand-along
cd@cd-laptop: tracd /home/cd/tests/tracdir --port 8888
cd@cd-laptop: firefox http://127.0.0.1:8888/tracdir
Трак установлен, для тестирования нам такого хватит.
останавливаем
cd@cd-laptop: Ctrl+C
cd@cd-laptop:
Создаем macro Hello
cd plugins
touch Hello.py
Содержимое Hello.py
from trac.core import *
from trac.wiki.macros import WikiMacroBase
from trac.util import escape
__all__ = ['HelloMacro']
class HelloMacro(WikiMacroBase):
def expand_macro(self,formatter, name, args):
return "Hello %s" % args or '
Использование. Внутри тикета или wiki напишите
[[Hello(cd)]]
Результат
Hello cd
Т.е. для написания минимального макроса, достаточно отнаследоваться от WikiMacroBase, реализовать один метод, возращающий html.
Пример ставшего для меня полезным макроса.
1 from trac.core import *
2 from trac.wiki.macros import WikiMacroBase
3 from trac.util import escape
4 from trac.util.html import escape,html,plaintext
5 from genshi.builder import tag
6
7
8 __all__ = ['XxxMacro']
9
10
11 class RwebtableMacro(WikiMacroBase):
12 """
13 Show table schema
14 {{{
15 [[Xxx(tablename)]]
16 }}}
17
18 """
19 def expand_macro(self, formatter, name, args):
20 # args will be `None` if the macro is called without parenthesis.
21 table = args or ''
22 if not table :
23 return 'no table specified'
24
25 import MySQLdb
26 user = self.env.config.get('cddb', 'user')#требует опции в trac.ini секции [cddb]
27 host = self.env.config.get('cddb', 'host')
28 passwd = self.env.config.get('cddb', 'passwd')
29 dbname = self.env.config.get('cddb', 'dbname')
30 db = MySQLdb.connect(user=user, host=host, passwd=passwd, db=dbname)
31 cursor = db.cursor()
32 sql = "DESCRIBE %s" % table
33 cursor.execute(sql)
34 table = tag.table(border=1)
35 table.append(tag.tr( tag.th('Field'), tag.th('Type') , tag.th('Null') , tag.th('Key') , tag.th('Default'), tag.th('Extra') ) )
36 res = cursor.fetchall()
37 for row in res :
38 tr = tag.tr()
39 for i in row :
40 tr.append(tag.td(str(i)) )
41 table.append(tr)
42 return str(table)
Например
[[Xxxtable(country)]]
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
country_id | int(11) | NO | PRI | None | auto_increment |
iso | varchar(3) | YES | None | ||
name | varchar(50) | YES | None |
No comments:
Post a Comment