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

时间:2015-04-14 17:43:04

标签: jira jira-rest-api python-jira

我不确定我在这里做错了什么,并希望别人有同样的问题。我没有收到任何错误,我的json与Jira的docs和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'})

有什么想法吗?

3 个答案:

答案 0 :(得分:12)

这是一个代码示例,说明我如何让以后遇到这种情况的人工作......

    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 :(得分:1)

我用其他方式做到了

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

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

在我看来是可行的。

答案 2 :(得分:0)

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

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