Skip to content

Commit 307bfc6

Browse files
authored
Display the resolved_to_package as link in the dependencies tab (#1314)
Signed-off-by: tdruez <tdruez@nexb.com>
1 parent cff76dd commit 307bfc6

File tree

4 files changed

+26
-7
lines changed

4 files changed

+26
-7
lines changed

CHANGELOG.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ v34.7.1 (unreleased)
1111
This is an advanced feature and should we used with caution.
1212
https://github.com/nexB/scancode.io/issues/1303
1313

14+
- Display the resolved_to_package as link in the dependencies tab.
15+
https://github.com/nexB/scancode.io/pull/1314
16+
1417
v34.7.0 (2024-07-02)
1518
--------------------
1619

scanpipe/models.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2908,6 +2908,13 @@ def with_resources_count(self):
29082908
)
29092909
return self.annotate(resources_count=count_subquery)
29102910

2911+
def only_purl_fields(self):
2912+
"""
2913+
Only select and return the UUID and PURL fields.
2914+
Minimum requirements to render a Package link in the UI.
2915+
"""
2916+
return self.only("uuid", *PURL_FIELDS)
2917+
29112918

29122919
class AbstractPackage(models.Model):
29132920
"""These fields should be kept in line with `packagedcode.models.PackageData`."""

scanpipe/templates/scanpipe/tabset/tab_dependencies.html

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<thead>
44
<tr>
55
<th>Package URL</th>
6+
<th>Resolved to package</th>
67
<th>Type</th>
78
<th>Scope</th>
89
<th>Datasource ID</th>
@@ -12,7 +13,14 @@
1213
{% for dependency in tab_data.fields.declared_dependencies.value %}
1314
<tr>
1415
<td title="{{ dependency.dependency_uid }}">
15-
<a href="{{ dependency.get_absolute_url }}">{{ dependency.purl }}</a>
16+
{# CAUTION: Avoid relying on get_absolute_url to prevent unnecessary query triggers #}
17+
<a href="{% url 'dependency_detail' project.slug dependency.dependency_uid %}">{{ dependency.purl }}</a>
18+
</td>
19+
<td>
20+
{% if dependency.resolved_to_package %}
21+
{# CAUTION: Avoid relying on get_absolute_url to prevent unnecessary query triggers #}
22+
<a href="{% url 'package_detail' project.slug dependency.resolved_to_package.uuid %}">{{ dependency.resolved_to_package.purl }}</a>
23+
{% endif %}
1624
</td>
1725
<td>{{ dependency.type }}</td>
1826
<td class="break-normal">{{ dependency.scope }}</td>

scanpipe/views.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1370,7 +1370,7 @@ class CodebaseResourceListView(
13701370
prefetch_related = [
13711371
Prefetch(
13721372
"discovered_packages",
1373-
queryset=DiscoveredPackage.objects.only("uuid", *PURL_FIELDS),
1373+
queryset=DiscoveredPackage.objects.only_purl_fields(),
13741374
)
13751375
]
13761376
table_columns = [
@@ -1509,12 +1509,10 @@ class DiscoveredDependencyListView(
15091509
template_name = "scanpipe/dependency_list.html"
15101510
paginate_by = settings.SCANCODEIO_PAGINATE_BY.get("dependency", 100)
15111511
prefetch_related = [
1512-
Prefetch(
1513-
"for_package", queryset=DiscoveredPackage.objects.only("uuid", *PURL_FIELDS)
1514-
),
1512+
Prefetch("for_package", queryset=DiscoveredPackage.objects.only_purl_fields()),
15151513
Prefetch(
15161514
"resolved_to_package",
1517-
queryset=DiscoveredPackage.objects.only("uuid", *PURL_FIELDS),
1515+
queryset=DiscoveredPackage.objects.only_purl_fields(),
15181516
),
15191517
Prefetch(
15201518
"datafile_resource", queryset=CodebaseResource.objects.only("path", "name")
@@ -1853,7 +1851,10 @@ class DiscoveredPackageDetailsView(
18531851
"project_id",
18541852
),
18551853
),
1856-
"declared_dependencies__project",
1854+
Prefetch(
1855+
"declared_dependencies__resolved_to_package",
1856+
queryset=DiscoveredPackage.objects.only_purl_fields(),
1857+
),
18571858
]
18581859
tabset = {
18591860
"essentials": {

0 commit comments

Comments
 (0)