使用python JIRA库检索JIRA sprint的开始日期和结束日期

使用python JIRA库检索JIRA sprint的开始日期和结束日期,jira,python-jira,Jira,Python Jira,有没有办法使用pythonjira库获取JIRA中sprint的开始和结束日期?我可以使用jira.sprint(jira.boards()[].id)获得一个包含感兴趣的板中所有sprint的jira.client.ResultList。列表如下所示: [<JIRA Sprint: name='LSD Sprint 1', id=1>, ... <JIRA Sprint: name='LSD Sprint 14', id=14>] [,, ... ] 我是否可以使用

有没有办法使用pythonjira库获取JIRA中sprint的开始和结束日期?我可以使用
jira.sprint(jira.boards()[].id)
获得一个包含感兴趣的板中所有sprint的
jira.client.ResultList
。列表如下所示:

[<JIRA Sprint: name='LSD Sprint 1', id=1>,
...
<JIRA Sprint: name='LSD Sprint 14', id=14>]
[,,
...
]

我是否可以使用类似于
问题.fields
的东西访问每个sprint的开始和结束日期,它返回我
jira.resources.PropertyHolder
,我可以从中访问其他数据?

对于测试,我使用了
jirashell
pythonjira 1.0.10
),
jira 6.3.11
jira7.2.3
jiraagilerestapiv1.0
。我在jirashell中运行了以下代码:

dir(jira.sprints(jira.boards()[0].id)[0])
它打印
sprint
对象的所有方法和属性:

['AGILE_BASE_REST_PATH',
 'AGILE_BASE_URL',
 'AGILE_EXPERIMENTAL_REST_PATH',
 'GREENHOPPER_REST_PATH',
 'JIRA_BASE_URL',
 '_READABLE_IDS',
 '__class__',
 '__delattr__',
 '__dict__',
 '__doc__',
 '__format__',
 '__getattr__',
 '__getattribute__',
 '__hash__',
 '__init__',
 '__module__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 '_base_url',
 '_default_headers',
 '_get_url',
 '_load',
 '_options',
 '_parse_raw',
 '_resource',
 '_session',
 'delete',
 'find',
 'id',
 'linkedPagesCount',
 'name',
 'raw',
 'self',
 'sequence',
 'state',
 'update']
如您所见,列表不包含
startDate
endDate
属性。尽管如此,sprint的快速谷歌搜索显示API确实支持这些属性。但事实证明,
pythonjira
使用了旧版本的jiraagilerestapi。例如,当我运行
jira.sprint(jira.boards()[0].id)[0].self
时,我会得到
https://[jira_URL]/rest/greenhopper/1.0/sprint/[id]
(而不是agile/1.0,正如回答中提到的API支持开始日期和结束日期属性)。另外
pythonjira
抛出一条消息
如果使用旧的私有GreenHopper API,所有参数都将被忽略


因此,我假设不可能使用
python jira
获得
startDate
endDate
,因为它使用的是旧版本的jira敏捷API。

使用python
请求
库为我的问题找到了解决方法。以下是它的链接:

我使用以下方法来确定感兴趣的冲刺的开始和结束日期:

import requests
jiraResponse     = requests.get('https://<YOUR ATLASSIAN DOMAIN>.atlassian.net/rest/agile/1.0/board/<BOARD ID OF INTEREST>/sprint', auth=(<YOUR JIRA CREDENTIALS>))
jiraResponseJSON = jiraResponse.json()
找到sprint的开始和结束日期后,可以在python jira查询中进一步使用这两个日期作为变量,例如:

jira.search\u问题(“+startDate+”、“+endDate+”、maxResults=100”期间,项目=和问题类型=错误和状态更改为关闭)
使用sprint\u信息(线路板id、sprint\u id)

这将返回sprint信息的dict。我希望将日期作为日期格式返回,因此我有一些代码处理下面的转换,并处理返回的None值。我花了很长时间才找到这个,所以我想我的第一个关于堆栈溢出的答案应该是回复

    for board in boards:

        jira_sprints = jira.sprints(board.board_id)

        for jira_sprint in jira_sprints:

            sprint_info = jira.sprint_info(board.board_id, jira_sprint.id)

            board_id = board.board_id
            board_name = board.board_name
            name = sprint_info['name']
            id = sprint_info['id']


            if sprint_info['startDate'] != 'None':
                date_from = datetime.datetime.strptime(sprint_info['startDate'], "%d/%b/%y %I:%M %p").date()
            else:
                date_from = None
            if sprint_info['endDate'] != 'None':
                date_to = datetime.datetime.strptime(sprint_info['endDate'], "%d/%b/%y %I:%M %p").date()
            else:
                date_to = None
            state = sprint_info['state']

现在可以使用敏捷rest路径作为选项:
jira=jira(“https://myjira.com,auth=(用户,密码),options={“agile\u rest\u path”:GreenHopperResource.agile\u BASE\u rest\u path})
有关详细信息,请参见
jira.resources.GreenHopperResource
。我知道这是Python的,但在
bash
中,您可以使用此脚本获得它:这完全符合预期-谢谢!
    for board in boards:

        jira_sprints = jira.sprints(board.board_id)

        for jira_sprint in jira_sprints:

            sprint_info = jira.sprint_info(board.board_id, jira_sprint.id)

            board_id = board.board_id
            board_name = board.board_name
            name = sprint_info['name']
            id = sprint_info['id']


            if sprint_info['startDate'] != 'None':
                date_from = datetime.datetime.strptime(sprint_info['startDate'], "%d/%b/%y %I:%M %p").date()
            else:
                date_from = None
            if sprint_info['endDate'] != 'None':
                date_to = datetime.datetime.strptime(sprint_info['endDate'], "%d/%b/%y %I:%M %p").date()
            else:
                date_to = None
            state = sprint_info['state']