使用jira-python访问工作日志中的特定信息
我想知道怎么用jira-python这个库,从一个问题的工作日志中获取花费的分钟数。
我在jirashell中看到这个问题有一个属性叫做issue.fields.worklog,但当我在我的Python代码中尝试访问这个属性时,出现了错误:AttributeError: type object 'PropertyHolder' has no attribute 'worklog'
。
如果我创建一个jira客户端,然后在我的Python代码中用jira_client.worklogs(ticket.key),它会返回一个工作日志的列表和它们的ID,但我不知道该怎么处理这些。我在文档中看到有一个worklog()函数,它需要问题的ID和工作日志的ID,但我不太明白这个函数返回什么,以及我该如何使用它/这是否是我想要的。
1 个回答
我找到了一种绕弯子的方式来实现这个功能,通过客户端来操作。
在我遍历每个问题时,我通过执行 worklogs = jira_client.worklogs(issue.key)
来获取每个工单的工作日志列表,然后我会在这个工作日志列表中逐个查看每个工作日志项(这就需要用到嵌套的循环):
for worklog in worklogs:
totaltime += readtime(worklog.timeSpent)
使用 jirashell,我访问了一个特定工单的特定工作日志: wl = jira_client.worklog(<issue key>, <worklog id>)
,然后我输入 wl.
并按下 TAB 键,它列出了以下内容:
wl.author, wl.comment, wl.created, wl.delete, wl.find, wl.id, wl.raw, wl.self, wl.started, wl.timeSpent, wl.timeSpentSeconds, wl.update, wl.updateAuthor, wl.updated
(注意:在按下 TAB 键之前,你需要在 wl 后面加一个点)
在 jirashell 中运行 wl.timespent
会给我一个包含数字的 Unicode 字符串,后面跟着 h 或 m,表示小时或分钟(例如: u'6h'
)。然后我知道一旦在上面的循环中生成了工作日志对象,就可以通过使用 timepsent 属性来访问时间。
(注意:我的 readtime
函数会将字符串转换为整数,并将小时转换为分钟,这里没有展示)
jirashell 确实很有帮助,可以用来查找字段的属性等。(注意:你需要安装 jira-python,除了 jira 之外才能运行 jirashell。如果你在虚拟环境中安装了 jira-python,进入项目目录后需要从命令行运行 env/bin/jirashell
。)