我有一个门户用户可以访问构建在cherrypy上,它具有一些可以提交的格式,可以通过REST api发送给JIRA进行跟踪。一旦提交,我就会从用户提供的信息中获取有关表单和JIRA问题ID的信息,并将它们发送到oracle数据库。通过REST API查询JIRA以及查询中可能的错误值
然后,我扩展了门户的功能,以便能够通过列表页面查看用户提交的内容,然后选择一条记录查看数据库中提交的内容。我有想法然后使用JIRA的REST API来获取JIRA中的问题的状态和受让人。将我的代码转换为提交给API以使用必要的JQL语句来查询它非常简单,可以在下面看到。
def jira_status_check(jira_id):
if jira_id != "No JIRA Issue":
try:
search_url = "https://myjirainstance.atlassian.net/rest/api/2/search/?jql=issue=" + jira_id + "&fields=status,assignee,resolution"
print search_url
username = 'some_user'
password = 'some_password'
request = urllib2.Request(search_url)
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
request.add_header("Content-Type", "application/json")
result = urllib2.urlopen(request).read()
json_results = json.loads(result)
print json_results
jira_status = json_results["issues"][0]["fields"]["status"]["name"]
if json_results["issues"][0]["fields"]["resolution"] is None:
tmp = "tmp"
if json_results["issues"][0]["fields"]["resolution"] is not None:
jira_status = jira_status + " - " + json_results["issues"][0]["fields"]["resolution"]["name"]
# assignee_name = "TEST"
# assignee_NT = "TEST"
if json_results["issues"][0]["fields"]["assignee"] is None:
assignee_name = "Unassigned"
assignee_NT = "Unassigned"
if json_results["issues"][0]["fields"]["assignee"] is not None:
assignee_name = json_results["issues"][0]["fields"]["assignee"]["displayName"]
assignee_NT = json_results["issues"][0]["fields"]["assignee"]["name"]
# if json_results["issues"][0]["fields"]["assignee"]["displayName"] is not None:
# assignee_name = json_results["issues"][0]["fields"]["assignee"]["displayName"]
# if json_results["issues"][0]["fields"]["assignee"] is None:
# assignee_NT = "Unassigned"
# if json_results["issues"][0]["fields"]["assignee"]["name"] is not None:
# assignee_NT = json_results["issues"][0]["fields"]["assignee"]["name"]
print jira_status
print assignee_name
print assignee_NT
output = [jira_status, assignee_name, assignee_NT]
except:
jira_status = "No JIRA Issue by that number or JIRA inaccessible"
assignee_name = "No JIRA Issue by that number or JIRA inaccessible"
assignee_NT = "No JIRA Issue by that number or JIRA inaccessible"
output = [jira_status, assignee_name, assignee_NT]
else:
jira_status = "No JIRA Issue"
assignee_name = "No JIRA Issue"
assignee_NT = "No JIRA Issue"
output = [jira_status, assignee_name, assignee_NT]
return output
但它仅限于搜索,在一次一个记录,当你只查看单个记录其工作原理,但我希望有可能扩展,以我的列表页面,并立即用一个搜索多api查询而不是单一问题查询。我有能力使用jql和其他API在这样的链接上搜索多个问题编号https://myjirainstance.atlassian.net/rest/api/2/search/?jql=Issue%3DSPL-3284%20OR%20Issue%3DSPL-3285&fields=status,assignee,resolution
但是后来我在想如果以某种方式将不良问题ID保存并作为大量查询的一部分进行查询。以前,它是在我的jira_status_check
函数中使用except语句处理的,因为它是单个记录查询。当我尝试查询与像共享的最后一个环节的REST API我反而得到
{"errorMessages":["An issue with key 'SPL-6666' does not exist for field 'Issue'."],"warningMessages":[]}
我试图从一个高级搜索的问题,建立一个查询,但是当我这样做Issue=SPL-3284 OR Issue=SPL-3285 OR Issue=SPL-6666
我得到的回应An issue with key 'SPL-6666' does not exist for field 'Issue'.
是否有正确的方式通过JQL搜索多个问题编号,并为没有匹配问题编号的字段返回没有值?
还是我坚持做一吨单一问题查询的API来覆盖我的基地?这可能不太理想,并且可能会导致我仅限于查看单个记录时的api查询,而不是可用性列表页面。
我会更好的移动我的函数来查询JIRA的JavaScript/jQuery的可以填充页面呈现后的提交列表?