【问题标题】:Open ticket via email POP3 in Trac在 Trac 中通过电子邮件 POP3 打开工单
【发布时间】:2015-03-28 22:42:48
【问题描述】:

我正在寻找一种让人们通过电子邮件打开 Trac 票证的方法。

目前我找到的唯一解决方案是email2trac | https://oss.trac.surfsara.nl/email2trac/wiki 这个解决方案的问题是我不想安装和设置邮件服务器。我想要一个侵入性较小的解决方案。

我正在考虑一个 cron 脚本,它可以从 POP3 帐户下载消息并通过解析内容来打开/更新票证。

这可能吗?

【问题讨论】:

  • 最近在 trac-users 邮件列表上进行了一些有用的讨论:herehere

标签: pop3 trac ticket-system


【解决方案1】:

我正在考虑一个从 POP3 下载消息的 cron 脚本 通过解析内容来打开/更新票证。这是 可能吗?

我认为这是可能的。当然,一旦您从 POP3 帐户获得数据,您就可以对其进行迭代,并使用 Trac API 根据需要创建/更新票证。

对于数据检索步骤,您可以创建一个新插件,其中包含实现 IAdminCommandProvider 接口的 Component。如何实际检索和解析数据是由您决定的实现细节,但您可能可以使用email/poplib 模块并遵循email2trac 中的一些解析结构。

一些未经测试的样板可以帮助您入门...

from trac.admin import IAdminCommandProvider
from trac.core import Component, implements
from trac.ticket import Ticket

def EmailToTicket(Component):
    implements(IAdminCommandProvider)

    def get_admin_commands(self):
        yield ('emailtoticket retrieve',
               'Retrieve emails from a mail server.'
               None, self._do_retrieve_email)

    def _do_retrieve_email(self):
        # TODO - log into the mail server, then parse data.
        # It would be nice to have a tuple of dictionaries, 
        # with keys like id, summary, description etc

        # iterate over the data and create/update tickets
        for email in emails:
            if 'id' in email: # assuming email is a dictionary
                self._update_ticket(email)
            else:
                self._create_ticket(email)

    def _update_ticket(self, data):
        ticket = Ticket(self.env, data[id])
        for field, value in data.iteritems():
            ticket[field] = value
        ticket.save_changes(author, comment, when)

    def _create_ticket(self, data):
        ticket = Ticket(self.env)
        for field, value in data.iteritems():
            ticket[field] = value
        ticket.insert()

然后您可以让 Cron 选项卡通过 TracAdmin 执行此命令(频率取决于您 - 下面的示例每分钟运行一次)

* * * * * trac-admin /path/to/projenv emailtoticket retrieve

了解更多关于插件开发的信息,你应该阅读this Trac wiki page

【讨论】:

  • 您的描述没问题,但我正在寻找可以安装的东西。我会接受你的问题,因为它给了我一些内在的好处。
猜你喜欢
  • 2010-12-15
  • 1970-01-01
  • 2010-12-04
  • 2013-04-26
  • 2023-03-08
  • 2023-03-19
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多