Skip to content

Commit

Permalink
Display the full Package URL including qualifiers and subpath #115
Browse files Browse the repository at this point in the history
Signed-off-by: tdruez <tdruez@nexb.com>
  • Loading branch information
tdruez committed May 21, 2024
1 parent e900168 commit d1e8716
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 13 deletions.
5 changes: 3 additions & 2 deletions component_catalog/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1843,7 +1843,7 @@ def identifier(self):
Provide a unique value to identify each Package.
It is the Package URL if one exists; otherwise it is the Package Filename.
"""
return self.plain_package_url or self.filename
return self.package_url or self.filename

@classmethod
def identifier_help(cls):
Expand Down Expand Up @@ -1888,7 +1888,8 @@ def get_url(self, name, params=None, include_identifier=False):
if not params:
params = [self.dataspace.name, quote_plus(str(self.uuid))]
if include_identifier:
params.insert(1, self.identifier)
# For the URL, using plain_package_url for simplification
params.insert(1, self.plain_package_url or self.filename)
return super().get_url(name, params)

def get_absolute_url(self):
Expand Down
2 changes: 1 addition & 1 deletion component_catalog/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1196,7 +1196,7 @@ def test_api_package_endpoint_create(self):
for field_name, value in data.items():
self.assertEqual(str(value), str(getattr(package, field_name)))

expected = 'Added Package: "pkg:deb/debian/curl@7.50.3-1"'
expected = f'Added Package: "{package.package_url}"'
self.assertEqual(expected, mail.outbox[0].subject)
body = mail.outbox[0].body
self.assertIn(package.get_admin_url(), body)
Expand Down
6 changes: 3 additions & 3 deletions component_catalog/tests/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ def sorted_results(qs):
data = {"q": ""}
filterset = PackageFilterSet(dataspace=self.nexb_dataspace, data=data)
expected = [
"pkg:deb/debian/curl@7.50.3-1",
"pkg:deb/debian/curl@7.50.3-1?arch=i386#googleapis/api/annotations",
"pkg:git/curl",
"pkg:deb/curl",
"setup.exe",
Expand All @@ -321,7 +321,7 @@ def sorted_results(qs):
filterset = PackageFilterSet(dataspace=self.nexb_dataspace, data=data)
expected = [
"pkg:deb/curl",
"pkg:deb/debian/curl@7.50.3-1",
"pkg:deb/debian/curl@7.50.3-1?arch=i386#googleapis/api/annotations",
]
self.assertEqual(sorted(expected), sorted_results(filterset.qs))
data = {"q": "pkg:deb/curl"}
Expand All @@ -331,7 +331,7 @@ def sorted_results(qs):
data = {"q": "deb/debian/curl@7.50.3-1"}
filterset = PackageFilterSet(dataspace=self.nexb_dataspace, data=data)
expected = [
"pkg:deb/debian/curl@7.50.3-1",
"pkg:deb/debian/curl@7.50.3-1?arch=i386#googleapis/api/annotations",
]
self.assertEqual(sorted(expected), sorted_results(filterset.qs))
data = {"q": "pkg:deb/debian/curl@7.50.3-1"}
Expand Down
9 changes: 3 additions & 6 deletions component_catalog/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1706,15 +1706,12 @@ def test_package_model_package_str_repr(self):
dataspace=self.dataspace,
)

# 1. Plain Package URL
expected = "pkg:deb/debian/curl@7.50.3-1"
self.assertEqual(expected, str(package))

# 2. Full Package URL
# 1. Full Package URL
expected = "pkg:deb/debian/curl@7.50.3-1?arch=i386#googleapis/api/annotations"
self.assertEqual(expected, str(package))
self.assertEqual(expected, str(package.package_url))

# 3. Filename
# 2. Filename
package.type = ""
package.save()
self.assertFalse(package.package_url)
Expand Down
4 changes: 3 additions & 1 deletion component_catalog/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -1185,10 +1185,12 @@ def test_package_views_urls(self):
expected = "/packages/Dataspace/0c895367-e565-426b-9a63-589432fffa8c/"
self.assertEqual(expected, url)

args = [p2.dataspace.name, p2.identifier, p2.uuid]
args = [p2.dataspace.name, p2.plain_package_url, p2.uuid]
url = reverse("component_catalog:package_details", args=args)
expected = "/packages/Dataspace/pkg:pypi/django@1.0/0c895367-e565-426b-9a63-589432fffa8c/"
self.assertEqual(expected, url)
self.assertEqual(expected, p2.details_url)
self.assertEqual(expected, p2.get_absolute_url())

def test_package_list_view_content(self):
self.client.login(username=self.super_user.username, password="secret")
Expand Down

0 comments on commit d1e8716

Please sign in to comment.