如何使用python-jira查找JIRA工单更新用户并解决过渡权限问题
解决python-jira查找状态变更用户的问题
嘿,我来帮你理清这个问题~首先得纠正一个误区:你用的[(t['id'],t['name']) for t in j.transitions(issue)]这段代码,获取的是当前你的账号有权限执行的工单过渡操作,不是历史上已经发生过的变更记录。所以它返回空列表,说明你没有执行过渡的权限,但这不影响你查看历史变更——毕竟你在网页上能看到工单和它的状态变化记录。
要找到把工单从“Assigned”改成“Fixed”的用户,你需要去查询工单的变更历史(changelog),具体步骤如下:
1. 加载工单的变更历史
默认情况下,调用j.issue()获取工单时不会加载变更历史,所以需要显式指定expand='changelog'参数来获取这部分数据:
from jira import JIRA # 初始化JIRA客户端(根据你的配置调整) j = JIRA(server='https://your-jira-instance.com', basic_auth=('username', 'password')) # 获取工单并加载变更历史 issue = j.issue('YOUR-ISSUE-KEY', expand='changelog')
2. 遍历历史记录筛选目标变更
遍历工单的变更历史,找到状态从“Assigned”变为“Fixed”的条目,对应的author就是执行该操作的用户:
# 遍历所有历史变更条目 for history in issue.changelog.histories: for item in history.items: # 匹配状态变更:从Assigned到Fixed if item.field == 'status' and item.fromString == 'Assigned' and item.toString == 'Fixed': print(f"执行状态变更的用户:{history.author.displayName}") print(f"用户账号:{history.author.name}") print(f"变更时间:{history.created}")
可能的注意事项
- 如果你的python-jira版本较旧,
fromString和toString可能会变成from_和to_,可以打印item的属性来确认:print(dir(item)) - 如果你还是获取不到变更历史,需要确认你的账号在JIRA系统中拥有查看工单历史的权限(比如“View Issue History”权限)——既然网页能看,这个权限应该是有的,但可以联系管理员确认。
内容的提问来源于stack exchange,提问作者Sachin Myneni
相关产品推荐
相关产品推荐

