@@ -265,6 +265,27 @@ def change_profile(request):
265265 'profile_form' : profile_form })
266266
267267
268+ def get_report_packages (report , username ):
269+ packages = Package .objects .normal ()
270+ if report .slug in ('uncompressed-man' , 'uncompressed-info' ):
271+ packages = report .packages (packages , username )
272+ else :
273+ packages = report .packages (packages )
274+
275+ return packages
276+
277+
278+ @login_required
279+ def report_pkgbases (request , report_name : str , username : str | None = None ) -> HttpResponse :
280+ report = {report .slug : report for report in available_reports ()}.get (report_name , None )
281+ if report is None :
282+ raise Http404
283+
284+ packages = get_report_packages (report , username )
285+ pkgbases = sorted ({pkg .pkgbase for pkg in packages })
286+ return HttpResponse ('\n ' .join (pkgbases ), content_type = 'text/plain' )
287+
288+
268289@login_required
269290def report (request , report_name , username = None ):
270291 available = {report .slug : report for report in available_reports ()}
@@ -283,11 +304,7 @@ def report(request, report_name, username=None):
283304 maints = User .objects .filter (id__in = PackageRelation .objects .filter (
284305 type = PackageRelation .MAINTAINER ).values ('user' ))
285306
286- if report .slug == 'uncompressed-man' or report .slug == 'uncompressed-info' :
287- packages = report .packages (packages , username )
288- else :
289- packages = report .packages (packages )
290-
307+ packages = get_report_packages (report , username )
291308 arches = {pkg .arch for pkg in packages }
292309 repos = {pkg .repo for pkg in packages }
293310 context = {
0 commit comments