0

我一直在努力备份我团队的 Rally 项目中的所有附件。我一直在使用 python,主要是 pyral 的混合物,只是通过 Rally 文档中的 python requests 包调用 API,但我仍在学习。我已经能够下载附加到用户故事的所有附件,但不能下载任务。我一直在使用我在这里找到的这段代码,但我无法让它适用于任务。

我可以通过使用 WSAPI 来提取用户故事的所有任务(请求任务,然后从工件调用中获取附件的 ObjectID)。我可以获取附件的 ObjectID 并将其输入到上面链接中用于故事的代码中(使用 pyral 跳过获取工件,因为它无法正常工作,并从 _getResourceByOID 开始 - RallyRESTResponse 调用返回 422 错误)。我再次检查了针对 UI 输入的 ObjectID,它匹配。我尝试使用 attachmentcontent WSAPI 端点,在那里我也遇到了 422 错误。

for task in tasks:

  #print(task.keys())

  formattedId = task["FormattedID"]

  print(formattedId)

  query=f'(FormattedID = {formattedId})'

  url = f'https://rally1.rallydev.com/slm/webservice/v2.0/artifact?workspace={ws[1]}&query={query}&fetch=true&start=1&pagesize=20'

  req = requests.get(url,headers=None, auth=auth)


  resp = json.loads(req.content)

  if resp["QueryResult"]["Results"][0]["Attachments"]["Count"]> 0:

    attachmenturl = resp["QueryResult"]["Results"][0]["Attachments"]["_ref"]

    req = requests.get(attachmenturl,headers=None, auth=auth)

    attachments = json.loads(req.content)["QueryResult"]["Results"]


    context, augments = rally.contextHelper.identifyContext()


    for att in attachments:

      url = f'https://rally1.rallydev.com/slm/webservice/v2.0/attachmentcontent/{att["ObjectID"]}/{att["_refObjectName"]}'

      req = requests.get(url,headers=None, auth=auth)

我可能遗漏了一些明显的东西,但这似乎是不可能的。任何帮助/建议表示赞赏。

4

0 回答 0