From c659cab5f5975fa3622632c542f30e65b91e969b Mon Sep 17 00:00:00 2001 From: Sumit Chaturvedi Date: Sat, 19 Apr 2025 12:32:48 +0530 Subject: [PATCH] Fix: Use sw360python's batch method to restore project mainline states Replaces per-release update loop with sw360python's update_project_release_relationships_batch() method to reduce API calls and follow project guidelines. --- capycli/project/create_project.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/capycli/project/create_project.py b/capycli/project/create_project.py index bf1b4da..b32ec39 100644 --- a/capycli/project/create_project.py +++ b/capycli/project/create_project.py @@ -115,18 +115,22 @@ def update_project(self, project_id: str, project: Optional[Dict[str, Any]], print_red(" Error updating project!") if pms and project: - print_text(" Restoring original project mainline states...") + print_text(" Restoring original project mainline states using batch update...") + + relationships = [] for pms_entry in pms: - update_release = False - for r in project.get("linkedReleases", []): - if r["release"] == pms_entry["release"]: - update_release = True - break - - if update_release: - rid = self.client.get_id_from_href(pms_entry["release"]) - self.client.update_project_release_relationship( - project_id, rid, pms_entry["mainlineState"], pms_entry["new_relation"], "") + rid = self.client.get_id_from_href(pms_entry["release"]) + relationships.append({ + "releaseId": rid, + "mainlineState": pms_entry["mainlineState"], + "releaseRelation": pms_entry["new_relation"] + }) + + if relationships: + success = self.client.update_project_release_relationships_batch(project_id, relationships) + if not success: + print_red(" Failed to batch restore mainline states") + except SW360Error as swex: if swex.response is None: