base: group binary packages by repo

since it's not obvious which package name prefix belongs
to which repo/env
This commit is contained in:
Christoph Reiter 2024-06-30 15:31:15 +02:00
parent 4102481fc1
commit f0d1065951
2 changed files with 22 additions and 7 deletions

View File

@ -112,14 +112,21 @@
<dt class="col-sm-3 text-sm-end"></dt>
<dd class="col-sm-9"><hr></dd>
<dt class="col-sm-3 text-sm-end">Binary Packages:</dt>
<dt class="col-sm-3 text-sm-end mb-2">Binary Packages:</dt>
<dd class="col-sm-9">
<ul class="list-unstyled">
{% for k, p in s.packages|dictsort(false) %}
<dl class="row">
{% for repo, packages in s.packages|group_by_repo|dictsort(false) %}
<dt>{{ repo }}</dt>
<dd>
<ul class="list-unstyled mb-0">
{% for p in packages %}
<li><a href="{{ package_url(p) }}">{{ p.name }}</a></li>
{% endfor %}
</ul>
</dd>
{% endfor %}
</dl>
</dd>
</dl>
</div>
</div>

View File

@ -21,7 +21,7 @@ from fastapi_etag import Etag
from fastapi.staticfiles import StaticFiles
from fastapi_etag import add_exception_handler as add_etag_exception_handler
from .appstate import state, get_repositories, Package, Source, DepType, SrcInfoPackage, get_base_group_name, Vulnerability, Severity
from .appstate import state, get_repositories, Package, Source, DepType, SrcInfoPackage, get_base_group_name, Vulnerability, Severity, PackageKey
from .appconfig import DEFAULT_REPO
from .utils import extract_upstream_version, version_is_newer_than
@ -197,6 +197,14 @@ def filter_filesize(d: int) -> str:
return "%.2f MB" % (d / (1024 ** 2))
@template_filter("group_by_repo")
def group_by_repo(packages: dict[PackageKey, Package]) -> dict[str, list[Package]]:
res: dict[str, list[Package]] = {}
for _, p in sorted(packages.items()):
res.setdefault(p.repo, []).append(p)
return res
@router.get('/robots.txt')
async def robots() -> Response:
data = """\