Skip to content

Commit 5d407bd

Browse files
committed
Add simple package details view including all model fields #164
Signed-off-by: Thomas Druez <[email protected]>
1 parent 7d084c7 commit 5d407bd

File tree

6 files changed

+60
-4
lines changed

6 files changed

+60
-4
lines changed

scanpipe/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1756,6 +1756,9 @@ class Meta:
17561756
def __str__(self):
17571757
return self.package_url or str(self.uuid)
17581758

1759+
def get_absolute_url(self):
1760+
return reverse("package_detail", args=[self.project_id, self.pk])
1761+
17591762
@property
17601763
def purl(self):
17611764
"""
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{% extends "scanpipe/base.html" %}
2+
{% load static humanize %}
3+
4+
{% block title %}ScanCode.io: {{ project.name }} - {{ object.name }}{% endblock %}
5+
6+
{% block content %}
7+
<div class="container is-max-desktop">
8+
{% include 'scanpipe/includes/navbar_header.html' %}
9+
<div class="mx-5 mb-2">{% include 'scanpipe/includes/messages.html' %}</div>
10+
11+
<section class="mx-5 mb-3">
12+
<nav class="breadcrumb is-medium mb-1" aria-label="breadcrumbs">
13+
<ul>
14+
<li><a href="{% url 'project_list' %}">Projects</a></li>
15+
<li><a href="{{ project.get_absolute_url }}">{{ project.name }}</a></li>
16+
<li><a href="{% url 'project_packages' project.uuid %}">Discovered Packages</a></li>
17+
</ul>
18+
</nav>
19+
</section>
20+
21+
<section class="mx-5">
22+
<dl>
23+
{% for field, value in package_data.items %}
24+
<dt class="has-text-weight-semibold">
25+
{{ field }}
26+
</dt>
27+
<dd class="mb-4">
28+
<pre>{{ value|default_if_none:'' }}</pre>
29+
</dd>
30+
{% endfor %}
31+
</dl>
32+
</section>
33+
34+
</div>
35+
{% endblock %}

scanpipe/templates/scanpipe/package_list.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
{% for package in object_list %}
2929
<tr class="break-word">
3030
<td style="min-width: 500px;" title="{{ package.package_uid }}">
31-
{{ package.package_url }}
31+
<a href="{{ package.get_absolute_url }}">{{ package.package_url }}</a>
3232
</td>
3333
<td style="min-width: 300px; max-width: 400px;">
3434
{{ package.license_expression|linebreaksbr }}

scanpipe/templates/scanpipe/resource_detail.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
<section class="mx-5 mb-3">
1212
<nav class="breadcrumb is-medium mb-1" aria-label="breadcrumbs">
1313
<ul>
14-
<li><a href="{% url 'project_list' %}">Projects</a></li>
15-
<li><a href="{{ project.get_absolute_url }}">{{ project.name }}</a></li>
16-
<li><a href="{% url 'project_resources' project.uuid %}">Codebase Resources</a></li>
14+
<li><a href="{% url 'project_list' %}">Projects</a></li>
15+
<li><a href="{{ project.get_absolute_url }}">{{ project.name }}</a></li>
16+
<li><a href="{% url 'project_resources' project.uuid %}">Codebase Resources</a></li>
1717
</ul>
1818
</nav>
1919
</section>

scanpipe/urls.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@
3636
views.CodebaseResourceDetailsView.as_view(),
3737
name="resource_detail",
3838
),
39+
path(
40+
"project/<uuid:uuid>/packages/<int:pk>/",
41+
views.DiscoveredPackageDetailsView.as_view(),
42+
name="package_detail",
43+
),
3944
path(
4045
"project/<uuid:uuid>/resources/",
4146
views.CodebaseResourceListView.as_view(),

scanpipe/views.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343

4444
from scancodeio.auth import ConditionalLoginRequired
4545
from scancodeio.auth import conditional_login_required
46+
from scanpipe.api.serializers import DiscoveredPackageSerializer
4647
from scanpipe.filters import ErrorFilterSet
4748
from scanpipe.filters import PackageFilterSet
4849
from scanpipe.filters import ProjectFilterSet
@@ -664,6 +665,18 @@ def get_context_data(self, **kwargs):
664665
return context
665666

666667

668+
class DiscoveredPackageDetailsView(
669+
ConditionalLoginRequired, ProjectRelatedViewMixin, generic.DetailView
670+
):
671+
model = DiscoveredPackage
672+
template_name = "scanpipe/package_detail.html"
673+
674+
def get_context_data(self, **kwargs):
675+
context = super().get_context_data(**kwargs)
676+
context["package_data"] = DiscoveredPackageSerializer(self.object).data
677+
return context
678+
679+
667680
@conditional_login_required
668681
def run_detail_view(request, uuid):
669682
template = "scanpipe/includes/run_modal_content.html"

0 commit comments

Comments
 (0)