我有一個門戶用戶可以訪問構建在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的可以填充頁面呈現後的提交列表?