Skip to content

Commit 0ebd214

Browse files
committed
devel: Fix filtering reports on username
Regression introduced in 5d80f07.
1 parent 8e42dce commit 0ebd214

2 files changed

Lines changed: 37 additions & 9 deletions

File tree

devel/tests/test_reports.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from django.contrib.auth.models import User
22
from django.test import TransactionTestCase
33

4+
from packages.models import PackageRelation
5+
46

57
class DeveloperReport(TransactionTestCase):
68
fixtures = ['main/fixtures/arches.json', 'main/fixtures/repos.json',
@@ -73,3 +75,26 @@ def test_reports_pkgbases_with_username(self):
7375
def test_reports_pkgbases_invalid_report(self):
7476
response = self.client.get('/devel/reports/nonexistent/pkgbases/')
7577
self.assertEqual(response.status_code, 404)
78+
79+
def test_report_filtered_by_maintainer(self):
80+
PackageRelation.objects.create(
81+
pkgbase='linux',
82+
user=self.user,
83+
type=PackageRelation.MAINTAINER,
84+
)
85+
response = self.client.get(
86+
f'/devel/reports/old/{self.user.username}/', follow=True)
87+
self.assertEqual(response.status_code, 200)
88+
pkgbases = {pkg.pkgbase for pkg in response.context['packages']}
89+
self.assertEqual(pkgbases, {'linux'})
90+
91+
def test_report_pkgbases_filtered_by_maintainer(self):
92+
PackageRelation.objects.create(
93+
pkgbase='linux',
94+
user=self.user,
95+
type=PackageRelation.MAINTAINER,
96+
)
97+
response = self.client.get(
98+
f'/devel/reports/old/{self.user.username}/pkgbases/')
99+
self.assertEqual(response.status_code, 200)
100+
self.assertEqual(response.content.decode().strip(), 'linux')

devel/views.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -279,14 +279,10 @@ def change_profile(request):
279279
'profile_form': profile_form})
280280

281281

282-
def get_report_packages(report, username):
283-
packages = Package.objects.normal()
282+
def get_report_packages(report, packages, username):
284283
if report.slug in ('uncompressed-man', 'uncompressed-info'):
285-
packages = report.packages(packages, username)
286-
else:
287-
packages = report.packages(packages)
288-
289-
return packages
284+
return report.packages(packages, username)
285+
return report.packages(packages)
290286

291287

292288
@login_required
@@ -295,7 +291,14 @@ def report_pkgbases(request, report_name: str, username: str | None = None) -> H
295291
if report is None:
296292
raise Http404
297293

298-
packages = get_report_packages(report, username)
294+
packages = Package.objects.normal()
295+
if username:
296+
user = get_object_or_404(User, username=username, is_active=True)
297+
maintained = PackageRelation.objects.filter(
298+
user=user, type=PackageRelation.MAINTAINER).values('pkgbase')
299+
packages = packages.filter(pkgbase__in=maintained)
300+
301+
packages = get_report_packages(report, packages, username)
299302
pkgbases = sorted({pkg.pkgbase for pkg in packages})
300303
return HttpResponse('\n'.join(pkgbases), content_type='text/plain')
301304

@@ -318,7 +321,7 @@ def report(request, report_name, username=None):
318321
maints = User.objects.filter(id__in=PackageRelation.objects.filter(
319322
type=PackageRelation.MAINTAINER).values('user'))
320323

321-
packages = get_report_packages(report, username)
324+
packages = get_report_packages(report, packages, username)
322325
arches = {pkg.arch for pkg in packages}
323326
repos = {pkg.repo for pkg in packages}
324327
context = {

0 commit comments

Comments
 (0)