jira-python - 你如何更新 fixVersions 字段?

jira-python - how do you update the fixVersions field?

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

这完全清除了 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'})

有什么想法吗?

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

    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})

我是用其他方法做的:

  1. 在目标项目中创建版本。
  2. 更新工单。

    ver = jira.create_version(名称='version_name', 项目='PROJECT_NAME')
    问题 = jira.issue('ISSUE_NUM')
    i.update(字段={'fixVersions': [{'name': ver.name}]})}

在我的情况下有效。

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'])