diff --git a/aurweb/pkgbase/util.py b/aurweb/pkgbase/util.py index 76b8a8c9..fbfcd869 100644 --- a/aurweb/pkgbase/util.py +++ b/aurweb/pkgbase/util.py @@ -25,6 +25,9 @@ def make_context(request: Request, pkgbase: PackageBase) -> Dict[str, Any]: context["git_clone_uri_anon"] = config.get("options", "git_clone_uri_anon") context["git_clone_uri_priv"] = config.get("options", "git_clone_uri_priv") context["pkgbase"] = pkgbase + context["comaintainers"] = pkgbase.comaintainers.order_by( + PackageComaintainer.Priority.asc() + ).all() context["packages_count"] = pkgbase.packages.count() context["keywords"] = pkgbase.keywords context["comments"] = pkgbase.comments.order_by( diff --git a/templates/partials/packages/details.html b/templates/partials/packages/details.html index 7467f9ba..1c4d01d6 100644 --- a/templates/partials/packages/details.html +++ b/templates/partials/packages/details.html @@ -105,13 +105,16 @@ {% endif %} - + {{ "Maintainer" | tr }}: {% if pkgbase.Maintainer %} {{ pkgbase.Maintainer.Username }} + {% if comaintainers %} + ({% for co in comaintainers %}{{ co.User }}{% endfor %}) + {% endif %} {% else %} {{ pkgbase.Maintainer.Username | default("None" | tr) }} {% endif %} diff --git a/test/test_pkgbase_routes.py b/test/test_pkgbase_routes.py index 17f69811..3f5a791a 100644 --- a/test/test_pkgbase_routes.py +++ b/test/test_pkgbase_routes.py @@ -253,6 +253,31 @@ def test_pkgbase(client: TestClient, package: Package): assert pkgs[i].text.strip() == name +def test_pkgbase_maintainer(client: TestClient, user: User, maintainer: User, + package: Package): + """ + Test that the Maintainer field is beind displayed correctly. + + Co-maintainers are displayed, if they exist, within a parens after + the maintainer. + """ + with db.begin(): + db.create(PackageComaintainer, User=user, + PackageBase=package.PackageBase, + Priority=1) + + with client as request: + resp = request.get(f"/pkgbase/{package.Name}") + assert resp.status_code == int(HTTPStatus.OK) + + root = parse_root(resp.text) + + maint = root.xpath('//table[@id="pkginfo"]/tr[@class="pkgmaint"]/td')[0] + maint, comaint = maint.xpath('./a') + assert maint.text.strip() == maintainer.Username + assert comaint.text.strip() == user.Username + + def test_pkgbase_voters(client: TestClient, tu_user: User, package: Package): pkgbase = package.PackageBase endpoint = f"/pkgbase/{pkgbase.Name}/voters"