如何在 Trac 中获取票证字段

How to get ticket fields in Trac

如何通过 Python 在 Trac 中获取工单字段列表(如里程碑、版本和所有自定义字段)?

在 Trac 文档中,我找到了 TicketSystem class,但它是一个组件,我无法实例化它。那么,如果我需要它的实例,我该如何访问它的方法呢?

编辑: 我发现了如何访问默认字段。例如。对于里程碑,它是 model.Milestone.select(self.env)。现在的问题是,如何访问自定义票证字段?必须有一种无需手动访问数据库即可完成此操作的方法,因为 TicketSystem class 中的方法 get_custom_fields() 存在。

编辑 2: 我刚刚发现 get_custom_fields() 只有 returns 可用字段,而不是它们的值。我想要做的是获取特定自定义字段的所有可用值。

In the Trac documentation I have found the TicketSystem class, but it is a component and I cannot instantiate it.

您可以使用语句 ts = TicketSystem(self.env).

获取对 Component 的引用,它是一个单例

I just found out that get_custom_fields() only returns the available fields, but not their values. What I want to do is get all available values of a specific custom field.

这是不正确的。您可以使用以下语句获取工单自定义字段的可能值:

fields = TicketSystem(self.env).get_custom_fields()
options = fields[idx].get('options', [])

其中 idx 是列表中您希望为其检索选项的字段的索引。仅当 field['type']selectradio 时,列表才会为非空。参见 trac.ticket.api.TicketSystem.customfields

I found out how I can access the default fields. E.g. for milestones, it is model.Milestone.select(self.env).

您应该使用 TicketSystem(self.env).get_ticket_fields() 访问所有字段。该语句将 return 所有字段,包括自定义字段。