在 Sourceforge 上创建带有附件的票证

Create a ticket with an attachment on Sourceforge

我正在尝试在基于 Sourceforge 的问题跟踪器上创建带有附件的票证。 Sourceforge 使用 Apache Allura。

根据Sourceforge's documentation,工单具有以下结构:

POST request to: /p/{project}/{tracker}/new

ticket_form.summary - ticket title
ticket_form.description - ticket description
ticket_form.status - ticket status
ticket_form.assigned_to - username of ticket assignee
ticket_form.labels - comma-separated list of ticket labels
ticket_form.attachment - (optional) attachment

我使用 requests 编写了一个小 Python 脚本来创建票证,但我一直无法弄清楚如何包含附件。

用于创建不带附件的工单的代码段:

import requests

action = "https://sourceforge.net/rest/p/test-sourceforge-api/tickets/new"

url = action + "?access_token=" + token

body = {'access_token':token,
    'ticket_form.description': "Test Description",
    'ticket_form.summary':'Test Title'
    }

r = requests.post(url, data=body)

Allura 的 source 包含用于创建带有附件的票证的示例代码,但我不明白如何将 POST 请求转换成 requests 可以使用的东西。

如何使用 requests 在 Sourceforge 上创建带有附件的工单?

用于创建带有附件的工单的代码段:

import requests

action = "https://sourceforge.net/rest/p/test-sourceforge-api/tickets/new"

url = action + "?access_token=" + token

body = {'access_token':token,
    'ticket_form.description': "Test Description",
    'ticket_form.summary':'Test Title'
    }

files={'ticket_form.attachment':("myfilename","myfilecontents", 'application/octet-stream')}

r = requests.post(url, data=body, files=files)