Skip to content

Commit 313d7e5

Browse files
committed
feat: update_project_releases uses SW360 PATCH API call now
This removes our own patch handling for adding releases and also allows to pass a dict with release datails now, e.g. to set relation or project mainline state for a linked release.
1 parent 78e1607 commit 313d7e5

File tree

3 files changed

+18
-19
lines changed

3 files changed

+18
-19
lines changed

ChangeLog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55

66
# SW360 Base Library for Python
77

8+
## UNRELEASED
9+
10+
* use SW360 support for `update_project_releases(..., add=True)` instead of our own code.
11+
This allows to pass a dict with release details (e.g. project mainline state or relation).
12+
813
## V1.8.1
914

1015
* `delete_project` now works properly. Before it could have happened the you get a `JSONDecodeError`.

sw360/project.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -367,20 +367,14 @@ def update_project_releases(
367367
if not project_id:
368368
raise SW360Error(message="No project id provided!")
369369

370-
if add:
371-
old_releases = self.get_project_releases(project_id)
372-
if (old_releases is not None and "_embedded" in old_releases
373-
and "sw360:releases" in old_releases["_embedded"]):
374-
old_releases = old_releases["_embedded"]["sw360:releases"]
375-
old_releases = [r["_links"]["self"]["href"] for r in old_releases]
376-
old_releases = [r.split("/")[-1] for r in old_releases]
377-
releases = old_releases + list(releases)
378-
379370
url = self.url + "resource/api/projects/" + project_id + "/releases"
380-
response = self.api_post(url, json=releases)
381-
if response is not None:
382-
if response.ok:
383-
return True
371+
if add:
372+
self.api_patch(url, json=releases)
373+
else:
374+
response = self.api_post(url, json=releases)
375+
if response is not None:
376+
if response.ok:
377+
return True
384378
return None
385379

386380
def update_project_external_id(self, ext_id_name: str, ext_id_value: str,

tests/test_sw360_projects.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,7 +1004,7 @@ def test_update_project_releases_fresh_prj(self) -> None:
10041004
json={},
10051005
)
10061006
responses.add(
1007-
responses.POST,
1007+
responses.PATCH,
10081008
url=self.MYURL + "resource/api/projects/123/releases",
10091009
status=202,
10101010
)
@@ -1016,7 +1016,7 @@ def test_update_project_releases_fresh_prj(self) -> None:
10161016
json={'_embedded': {'sw360:projects': []}},
10171017
)
10181018
responses.add(
1019-
responses.POST,
1019+
responses.PATCH,
10201020
url=self.MYURL + "resource/api/projects/124/releases",
10211021
status=202,
10221022
)
@@ -1036,9 +1036,9 @@ def test_update_project_releases(self) -> None:
10361036
)
10371037

10381038
responses.add(
1039-
responses.POST,
1039+
responses.PATCH,
10401040
url=self.MYURL + "resource/api/projects/123/releases",
1041-
body="4",
1041+
body="",
10421042
status=202,
10431043
)
10441044

@@ -1059,9 +1059,9 @@ def test_update_project_releases_failed(self) -> None:
10591059
)
10601060

10611061
responses.add(
1062-
responses.POST,
1062+
responses.PATCH,
10631063
url=self.MYURL + "resource/api/projects/123/releases",
1064-
body="4",
1064+
body="",
10651065
status=404,
10661066
)
10671067

0 commit comments

Comments
 (0)