5

我不确定我在这里做错了什么,并希望其他人也有同样的问题。我没有收到任何错误,并且我的 json 与 Jira 的文档和在线 jira-python 问题中应该正确的内容相匹配。我的版本是有效的 Jira 版本。我直接通过 API 执行此操作也没有问题,但我们正在重写所有内容以通过 jira-python 进行清洁/易用性。

这完全清除了 Jira 中的 fixVersions 字段。

issue=jira.issue("TKT-100")
issue.update(fields={'fixVersions':[{'add': {'name': 'add_me'}},{'remove': {'name': 'remove_me'}}]})

我可以使用 issue.add_field_value() 将新版本添加到 fixVersions,但这不起作用,因为我需要在一个请求中添加和删除工单历史记录。

issue.add_field_value('fixVersions', {'name': 'add_me'})

有任何想法吗?

4

3 回答 3

18

这是一个代码示例,说明我如何使它为以后遇到此问题的任何人工作...

    fixVersions = []
    issue = jira.issue('issue_key')
    for version in issue.fields.fixVersions:
        if version.name != 'version_to_remove':
            fixVersions.append({'name': version.name})
    fixVersions.append({'name': 'version_to_add'})
    issue.update(fields={'fixVersions': fixVersions})
于 2015-04-15T17:11:10.473 回答
3

我以其他方式做到了:

  1. 在目标项目中创建版本。
  2. 更新票证。

    ver = jira.create_version(name='version_name', project='PROJECT_NAME')
    issue = jira.issue('ISSUE_NUM')
    i.update(fields={'fixVersions': [{'name': ver.name}] })}

就我而言,这是有效的。

于 2020-04-24T12:43:19.343 回答
0

user797963 解决方案的 pythonic 版本,可能看起来像这样。

def change_fix_version(tickets, remove_versions=[], add_versions=[]):
    fix_versions={version.name for version in ticket.fields.fixVersions}
    fix_versions.difference_update(set(remove_versions))
    fix_versions.update(set(add_versions))
    ticket.update(fields={'fixVersions':fix_versions})

你会这样称呼它:

 change_fix_versions(jira.issue('my_issue'), remove_versions=['draft'], add_versions=['master', 'release'])
于 2020-06-24T07:07:58.067 回答