使用Python调用Jama API为Item添加附件遇问题求助
解决Jama API添加附件的问题
要完成创建Item并附加zip文件的自动化流程,核心是先生成Attachment类型Item的ID(即attachment_id),再上传文件并关联到目标Item,具体步骤如下:
1. 创建Attachment类型的Item
你需要先调用Jama API创建一个类型为Attachment的Item,这个操作会返回该Item的ID,也就是后续要用的attachment_id。
如果使用py_jama_rest_client,可以用create_item方法实现,示例代码:
def create_attachment_item(client, project_id, attachment_name): # 替换为你Jama系统中Attachment类型的Item ID attachment_item_type_id = 123 # 构造Attachment Item的基础数据 item_data = { "project": project_id, "itemType": {"id": attachment_item_type_id}, "fields": { "name": attachment_name # 根据你的Jama配置补充其他必填字段 } } # 创建Attachment Item并返回其ID response = client.create_item(item_data) return response["id"]
注:Attachment类型的Item ID可在Jama的「Item类型管理」页面查看。
2. 上传zip文件到Attachment Item
拿到attachment_id后,直接调用你提供的put_attachments_file函数上传文件:
# 替换为你的项目ID和文件路径 project_id = 456 file_path = "/local/path/your_file.zip" # 生成attachment_id attachment_id = create_attachment_item(client, project_id, "目标附件.zip") # 上传文件 status_code = client.put_attachments_file(attachment_id, file_path) if status_code == 200: print("文件上传成功") else: print(f"文件上传失败,状态码:{status_code}")
3. 将Attachment Item关联到目标Item
最后需要把Attachment Item和你的目标业务Item建立关联,使用create_relationship方法实现:
def link_attachment_to_target(client, target_item_id, attachment_id): # 替换为你Jama系统中「附件关联」类型的关系ID attachment_relation_type_id = 789 # 构造关系数据 relation_data = { "fromItem": target_item_id, "toItem": attachment_id, "relationshipType": {"id": attachment_relation_type_id} } client.create_relationship(relation_data) # 替换为你的目标业务Item ID target_item_id = 101112 # 建立关联 link_attachment_to_target(client, target_item_id, attachment_id)
关键注意事项
- 必须使用Jama中专门的Attachment类型Item,普通Item无法作为附件载体。
- 关联关系类型需匹配Jama中配置的「附件」关系,否则控制台无法正常显示附件。
- 确保你的API账号拥有创建Item、上传文件、创建关系的权限。
内容的提问来源于stack exchange,提问作者Laurent Cesaro
相关产品推荐
相关产品推荐

