提问人: 提问时间:12/15/2022 更新时间:12/16/2022 访问量:63
在Azure Boards中返回工作流类别状态的用户
Return user for workflow category states in Azure Boards
问:
我有一个python项目,我正在尝试获取用户详细信息,这些详细信息在Azure Board中设置工作流类别状态。
为此,我通过 REST API 请求加载工作项历史记录并返回一个 json 文件。json 文件如下所示 (->请参阅“示例响应”https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/updates/get?view=azure-devops-rest-6.0&tabs=HTTP)
我想返回用户的详细信息,该用户将 System.State 设置为值“New”、“Approved”、“Committed”或“Resolved”。如果System.Tags的值为“MYVALUE”,我想返回将System.State设置为“New”的用户。
为此,我尝试了:
def find_user(updates):
for update in updates:
uniqueName = ''
displayName = ''
if 'fields' in update and \
'System.State' in update['fields']:
if update['fields']['System.Tags']['newValue'] == 'MYVALUE' and \
update['fields']['System.State']['newValue'] == 'New':
continue
elif update['fields']['System.State']['newValue'] == 'New' or \
update['fields']['System.State']['newValue'] == 'Approved' or \
update['fields']['System.State']['newValue'] == 'Committed' or \
update['fields']['System.State']['newValue'] == 'Resolved':
return update['revisedBy']['uniqueName'], update['revisedBy']['displayName']
return uniqueName, displayName
如果我的工作项具有 System.Tags 'MYVALUE' 和 System.State 'New',我将获取将 System.Tags 设置为“Approved”、“Committed”或“Resolved”的人员的用户详细信息。 问题是,如果我没有System.Tags'MYVALUE',我的程序不会返回任何内容,尽管四个System.State中的一个可用。
有谁知道我该如何解决这个问题?
提前致谢!
答:
0赞
Ceeno Qi-MSFT
12/16/2022
#1
在我的测试中,我发现我们可以用你的脚本正确地得到回报,下面是我们稍微编辑的内容。我们还建议您可以设置断点,以逐行检查响应,以便进一步进行故障排除。
import os
import json
import requests
def get_jsons(org,proj,workitem_id,pat):
url = "https://dev.azure.com/"+org+"/"+proj+"/_apis/wit/workItems/"+workitem_id+"/updates?api-version=6.0"
payload={}
headers = {
'Authorization': 'Basic '+pat,
}
response = requests.request("GET", url, headers=headers, data=payload)
json_response = json.loads(response.text)
return json_response['value']
def find_user(updates):
for update in updates:
uniqueName = ''
displayName = ''
if 'fields' in update and \
'System.State' in update['fields']:
if update['fields']['System.Tags']['newValue'] == 'MYVALUE' and \
update['fields']['System.State']['newValue'] == 'New':
continue
elif update['fields']['System.State']['newValue'] == 'New' or \
update['fields']['System.State']['newValue'] == 'Approved' or \
update['fields']['System.State']['newValue'] == 'Committed' or \
update['fields']['System.State']['newValue'] == 'Resolved':
return update['revisedBy']['uniqueName'], update['revisedBy']['displayName']
return uniqueName, displayName
org = '{org}'
proj = '{proj}'
workitem_id = '{id}'
base64encoded_pat = '{pat}'
updates = get_jsons(org,proj,workitem_id,base64encoded_pat)
print(find_user(updates))
``
评论
0赞
12/20/2022
我不知道为什么,但你是对的,我的代码正在工作。我还有一个问题。例如,当我的 elif-part 中只有一个语句时,当我只想返回名称(如果 System.State 为“New”)时,我会得到一个异常“System.Tags”。你可能知道为什么会这样吗?
评论