|
6 | 6 | from django.template.defaultfilters import filesizeformat
|
7 | 7 | from django.db import connection
|
8 | 8 | from django.utils.timezone import now
|
| 9 | +from django.utils.html import format_html |
9 | 10 | from main.models import Package, PackageFile, RebuilderdStatus
|
10 | 11 | from packages.models import Depend, PackageRelation
|
11 | 12 |
|
12 | 13 | from .models import DeveloperKey
|
13 | 14 |
|
14 | 15 |
|
| 16 | +# Helper object to be able to show links reports. |
| 17 | +class Linkify: |
| 18 | + def __init__(self, href, title, desc): |
| 19 | + self.href = href |
| 20 | + self.title = title |
| 21 | + self.desc = desc |
| 22 | + |
| 23 | + def __str__(self): |
| 24 | + link = '<a href="%s" title="%s">%s</a>' |
| 25 | + return format_html(link % (self.href, self.title, self.desc)) |
| 26 | + |
| 27 | + |
15 | 28 | class DeveloperReport(object):
|
16 | 29 | def __init__(self,
|
17 | 30 | slug,
|
@@ -170,8 +183,22 @@ def non_existing_dependencies(packages):
|
170 | 183 |
|
171 | 184 |
|
172 | 185 | def non_reproducible_packages(packages):
|
173 |
| - statuses = RebuilderdStatus.objects.filter(status=RebuilderdStatus.BAD).values('pkg__pkgname') |
174 |
| - return packages.filter(pkgname__in=statuses) |
| 186 | + pkgs = [] |
| 187 | + statuses = RebuilderdStatus.objects.select_related().filter(status=RebuilderdStatus.BAD, pkg__pkgname__in=packages.values('pkgname')) |
| 188 | + |
| 189 | + for status in statuses: |
| 190 | + pkg = status.pkg |
| 191 | + |
| 192 | + # Diffoscope url |
| 193 | + url = f'https://reproducible.archlinux.org/api/v0/builds/{status.build_id}/diffoscope' |
| 194 | + pkg.diffoscope = Linkify(url, 'Diffoscope of package', 'diffoscope') |
| 195 | + |
| 196 | + # Build log |
| 197 | + url = f'https://reproducible.archlinux.org/api/v0/builds/{status.build_id}/log' |
| 198 | + pkg.log = Linkify(url, 'Logs of package', 'log') |
| 199 | + pkgs.append(pkg) |
| 200 | + |
| 201 | + return pkgs |
175 | 202 |
|
176 | 203 |
|
177 | 204 | def orphan_dependencies(packages):
|
@@ -260,7 +287,9 @@ def orphan_dependencies(packages):
|
260 | 287 | 'non-reproducible-packages',
|
261 | 288 | 'Non Reproducible package',
|
262 | 289 | 'Packages that are not reproducible on our reproducible.archlinux.org test environment',
|
263 |
| - non_reproducible_packages) |
| 290 | + non_reproducible_packages, |
| 291 | + ['diffoscope', 'log'], |
| 292 | + ['diffoscope', 'log']) |
264 | 293 |
|
265 | 294 | REPORT_REQUIRED_ORPHAN = DeveloperReport(
|
266 | 295 | 'required-orphan',
|
|
0 commit comments