Skip to content

Commit 3d00e87

Browse files
authored
Fix the validity of SPDX outputs #180 (#186)
Signed-off-by: tdruez <[email protected]>
1 parent 47a4d14 commit 3d00e87

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

CHANGELOG.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ Release notes
66
- Fix the models documentation navigation.
77
https://github.com/aboutcode-org/dejacode/issues/182
88

9+
- Fix the validity of SPDX outputs.
10+
https://github.com/aboutcode-org/dejacode/issues/180
11+
912
### Version 5.2.0
1013

1114
- Add visual indicator in hierarchy views, when an object on the far left or far right

component_catalog/models.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,6 +1357,10 @@ def aboutcode_data(self):
13571357

13581358
return without_empty_values(component_data)
13591359

1360+
@property
1361+
def spdx_id(self):
1362+
return f"SPDXRef-dejacode-{self._meta.model_name}-{self.uuid}"
1363+
13601364
def as_spdx(self, license_concluded=None):
13611365
"""
13621366
Return this Component as an SPDX Package entry.
@@ -1375,7 +1379,7 @@ def as_spdx(self, license_concluded=None):
13751379

13761380
return spdx.Package(
13771381
name=self.name,
1378-
spdx_id=f"dejacode-{self._meta.model_name}-{self.uuid}",
1382+
spdx_id=self.spdx_id,
13791383
supplier=self.owner.as_spdx() if self.owner else "",
13801384
license_concluded=license_concluded or self.concluded_license_expression_spdx,
13811385
license_declared=self.declared_license_expression_spdx,
@@ -2248,6 +2252,10 @@ def get_about_files(self):
22482252

22492253
return about_files
22502254

2255+
@property
2256+
def spdx_id(self):
2257+
return f"SPDXRef-dejacode-{self._meta.model_name}-{self.uuid}"
2258+
22512259
def as_spdx(self, license_concluded=None):
22522260
"""
22532261
Return this Package as an SPDX Package entry.
@@ -2281,7 +2289,7 @@ def as_spdx(self, license_concluded=None):
22812289

22822290
return spdx.Package(
22832291
name=self.name or self.filename,
2284-
spdx_id=f"dejacode-{self._meta.model_name}-{self.uuid}",
2292+
spdx_id=self.spdx_id,
22852293
download_location=self.download_url,
22862294
license_concluded=license_concluded or self.concluded_license_expression_spdx,
22872295
license_declared=self.declared_license_expression_spdx,

dje/tests/test_outputs.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ def test_outputs_get_attachment_response(self):
4343
self.assertEqual("application/json", response["Content-Type"])
4444

4545
def test_outputs_get_spdx_document(self):
46+
package = make_package(self.dataspace, package_url="pkg:type/name")
47+
make_product_package(self.product1, package)
48+
4649
document = outputs.get_spdx_document(self.product1, self.super_user)
4750
document.creation_info.created = "2000-01-01T01:02:03Z"
4851
expected = {
@@ -60,8 +63,24 @@ def test_outputs_get_spdx_document(self):
6063
],
6164
"licenseListVersion": "3.18",
6265
},
63-
"packages": [],
64-
"documentDescribes": [],
66+
"packages": [
67+
{
68+
"name": "name",
69+
"SPDXID": f"SPDXRef-dejacode-package-{package.uuid}",
70+
"downloadLocation": "NOASSERTION",
71+
"licenseConcluded": "NOASSERTION",
72+
"copyrightText": "NOASSERTION",
73+
"filesAnalyzed": False,
74+
"externalRefs": [
75+
{
76+
"referenceCategory": "PACKAGE-MANAGER",
77+
"referenceType": "purl",
78+
"referenceLocator": "pkg:type/name",
79+
}
80+
],
81+
}
82+
],
83+
"documentDescribes": [f"SPDXRef-dejacode-package-{package.uuid}"],
6584
}
6685
self.assertEqual(expected, document.as_dict())
6786

0 commit comments

Comments
 (0)