Skip to content

Commit

Permalink
Merge pull request #41 from sw360/gernot/project_update_release_patch
Browse files Browse the repository at this point in the history
feat: `update_project_releases` uses SW360 PATCH API call now
  • Loading branch information
tngraf authored Feb 7, 2025
2 parents 78e1607 + 164befb commit e9a7056
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 19 deletions.
5 changes: 5 additions & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@

# SW360 Base Library for Python

## UNRELEASED

* use SW360 support for `update_project_releases(..., add=True)` instead of our own code.
This allows to pass a dict with release details (e.g. project mainline state or relation).

## V1.8.1

* `delete_project` now works properly. Before it could have happened the you get a `JSONDecodeError`.
Expand Down
18 changes: 5 additions & 13 deletions sw360/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -367,21 +367,13 @@ def update_project_releases(
if not project_id:
raise SW360Error(message="No project id provided!")

url = self.url + "resource/api/projects/" + project_id + "/releases"
if add:
old_releases = self.get_project_releases(project_id)
if (old_releases is not None and "_embedded" in old_releases
and "sw360:releases" in old_releases["_embedded"]):
old_releases = old_releases["_embedded"]["sw360:releases"]
old_releases = [r["_links"]["self"]["href"] for r in old_releases]
old_releases = [r.split("/")[-1] for r in old_releases]
releases = old_releases + list(releases)
self.api_patch(url, json=releases)
else:
self.api_post(url, json=releases)

url = self.url + "resource/api/projects/" + project_id + "/releases"
response = self.api_post(url, json=releases)
if response is not None:
if response.ok:
return True
return None
return True # api_*() will raise an exception if something goes wrong

def update_project_external_id(self, ext_id_name: str, ext_id_value: str,
project_id: str, update_mode: str = "none") -> Any:
Expand Down
12 changes: 6 additions & 6 deletions tests/test_sw360_projects.py
Original file line number Diff line number Diff line change
Expand Up @@ -1004,7 +1004,7 @@ def test_update_project_releases_fresh_prj(self) -> None:
json={},
)
responses.add(
responses.POST,
responses.PATCH,
url=self.MYURL + "resource/api/projects/123/releases",
status=202,
)
Expand All @@ -1016,7 +1016,7 @@ def test_update_project_releases_fresh_prj(self) -> None:
json={'_embedded': {'sw360:projects': []}},
)
responses.add(
responses.POST,
responses.PATCH,
url=self.MYURL + "resource/api/projects/124/releases",
status=202,
)
Expand All @@ -1036,9 +1036,9 @@ def test_update_project_releases(self) -> None:
)

responses.add(
responses.POST,
responses.PATCH,
url=self.MYURL + "resource/api/projects/123/releases",
body="4",
body="",
status=202,
)

Expand All @@ -1059,9 +1059,9 @@ def test_update_project_releases_failed(self) -> None:
)

responses.add(
responses.POST,
responses.PATCH,
url=self.MYURL + "resource/api/projects/123/releases",
body="4",
body="",
status=404,
)

Expand Down

0 comments on commit e9a7056

Please sign in to comment.