diff --git a/aurweb/routers/packages.py b/aurweb/routers/packages.py index e227fe23..fb91a8e3 100644 --- a/aurweb/routers/packages.py +++ b/aurweb/routers/packages.py @@ -12,7 +12,7 @@ import aurweb.packages.util from aurweb import db, defaults, l10n, logging, models, util from aurweb.auth import auth_required from aurweb.models.package_request import ACCEPTED_ID, PENDING_ID, REJECTED_ID -from aurweb.models.relation_type import CONFLICTS_ID +from aurweb.models.relation_type import CONFLICTS_ID, PROVIDES_ID from aurweb.models.request_type import DELETION_ID, MERGE, MERGE_ID from aurweb.packages.search import PackageSearch from aurweb.packages.util import get_pkg_or_base, get_pkgbase_comment, query_notified, query_voted @@ -258,6 +258,10 @@ async def package(request: Request, name: str) -> Response: ) context["conflicts"] = conflicts + provides = pkg.package_relations.filter( + models.PackageRelation.RelTypeID == PROVIDES_ID) + context["provides"] = provides + return render_template(request, "packages/show.html", context) diff --git a/templates/partials/packages/details.html b/templates/partials/packages/details.html index da99cf1b..70636926 100644 --- a/templates/partials/packages/details.html +++ b/templates/partials/packages/details.html @@ -77,6 +77,14 @@ {% endif %} + {% if show_package_details and provides and provides.count() %} + + {{ "Provides" | tr }}: + + {{ provides.all() | join(', ', attribute='RelName') }} + + + {% endif %} {{ "Submitter" | tr }}: diff --git a/test/test_packages_routes.py b/test/test_packages_routes.py index 887945d9..464a7f60 100644 --- a/test/test_packages_routes.py +++ b/test/test_packages_routes.py @@ -217,8 +217,16 @@ def test_package_official_not_found(client: TestClient, package: Package): def test_package(client: TestClient, package: Package): """ Test a single / packages / {name} route. """ - with client as request: + with db.begin(): + db.create(PackageRelation, PackageID=package.ID, + RelTypeID=PROVIDES_ID, + RelName="test_provider1") + db.create(PackageRelation, PackageID=package.ID, + RelTypeID=PROVIDES_ID, + RelName="test_provider2") + + with client as request: resp = request.get(package_endpoint(package)) assert resp.status_code == int(HTTPStatus.OK) @@ -238,6 +246,10 @@ def test_package(client: TestClient, package: Package): pkgbase = row.find("./td/a") assert pkgbase.text.strip() == package.PackageBase.Name + provides = root.xpath('//tr[@id="provides"]/td') + expected = ["test_provider1", "test_provider2"] + assert provides[0].text.strip() == ", ".join(expected) + def test_package_comments(client: TestClient, user: User, package: Package): now = (datetime.utcnow().timestamp())