Trac - 为Tickets增加自定义字段

来源:互联网 发布:网易贵金属行情软件 编辑:程序博客网 时间:2024/06/11 00:21

Trac 从0.11版本后可以让用户自定义Ticket的字段,我认为这是Trac向前又迈出了一大步,让我们更加灵活的使用Trac来进行bug管理和跟踪,0.11版本自定义字段支持以下几种类型: text, checkbox,  select, radio, textarea.

1、如何为Ticket增加自定义字段其实很简单,只需要修改一下trac.ini文件即可:

[ticket-custom]
test_two = text
test_two.label = Just a text box 

test_two.value = Default [mailto:joe@nospam.com owner]       // 为text设定默认值
test_two.format = wiki                    // 指定text的格式,有两种选择plain, wiki.

test_three = checkbox
test_three.label = Some checkbox
test_three.value = 1

test_four = select
test_four.label = My selectbox
test_four.options = one|two|third option|four            // 为下拉框设定默认值,用"|"作分割线。
test_four.value = two

test_five = radio
test_five.label = Radio buttons are fun
test_five.options = uno|dos|tres|cuatro|cinco
test_five.value = dos                    // 为radio按钮选择默认值

test_six = textarea                    // textarea类型也可以指定其format(plain, wiki)
test_six.label = This is a large textarea
test_six.value = Default text
test_six.cols = 60
test_six.rows = 30

 

2、如何在报表中使用新增加的自定字段:在trac.ini文件中增加了这些选项之后仅仅是让用户在使用Ticket的时候可以填写这些字段,但是如果要将这些自定义的字段在trac的报表中显示还需要注意一点:自定义的Ticket字段是在ticket_custom表中,而不是在ticket表中,这两个表用来做连接的字段是ticket_custom.ticket = ticket.id。ticket_custom表的3个字段为:ticket, name, value。

  除此之外还有一点需要强调一下的,例如:目前已经在ticket_custom增加了自定义字段'progress',那我们通常会使用如下SQL来显示带progress的ticket报表:

SELECT  id AS ticket, summary, owner, c.value AS progress
  FROM ticket t, ticket_custom c
  WHERE status IN ('assigned') AND t.id = c.ticket AND c.name = 'progress'

如果该自定义字段是在Trac已经被使用了一段时间之后才定义的,那么以上的SQL生成的report并未包含所有的ticket, 仅仅会包含所有在自定义字段progress增加后创建的ticket,那么会有人建议使用left outer join就可以解决该问题,是的,如果使用left outer join当然可以解决该问题。不过Trac是一个可以供用户自己写SQL创建report的工具,有相当大的自由性。所以我建议在每次增加自定义字段的时候都主动往ticket_custom表中为所有ticket创建一条为None(或者default值)的记录,从根本上避免以上问题。

INSERT INTO ticket_custom   (ticket, name, value)   SELECT       id AS ticket,      'request_source' AS name,      'None' AS value   FROM ticket    WHERE id NOT IN (      SELECT ticket FROM ticket_custom WHERE name = 'request_source'   );

参考URL:

http://trac.edgewall.org/wiki/TracTicketsCustomFields

http://trac.edgewall.org/wiki/TracTickets

转自:http://blog.csdn.net/tiantian_0115/article/details/5722717