【问题标题】:How to get ticket fields in Trac如何在 Trac 中获取票证字段
【发布时间】:2015-11-23 10:35:45
【问题描述】:

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

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

编辑:我发现了如何访问默认字段。例如。对于里程碑,它是model.Milestone.select(self.env)。现在的问题是,如何访问自定义工单字段?因为TicketSystem类中存在get_custom_fields()方法,所以一定有办法做到这一点,而不必手动访问数据库。

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

【问题讨论】:

  • 你试过那个stackoverflow.com/a/9508120/524743 吗?
  • 这给了我一张票的字段值。但是,我想要所有门票中的所有值。自定义字段具有预定义的值,可通过创建工单时的下拉菜单访问。现在我需要通过 Python 访问这些值,这些值通常位​​于下拉菜单中。

标签: python trac


【解决方案1】:

在 Trac 文档中,我找到了 TicketSystem 类,但它是一个组件,我无法实例化它。

您可以通过ts = TicketSystem(self.env) 语句获取对组件的引用,它是一个单例。

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

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

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

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

我发现了如何访问默认字段。例如。对于里程碑,它是model.Milestone.select(self.env)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多