From 50a9690c2ddefeb3fe758ed998f2edbe3773d5f1 Mon Sep 17 00:00:00 2001 From: Kevin Morris Date: Thu, 11 Nov 2021 19:09:24 -0800 Subject: [PATCH] feat(fastapi): add Provides field in package details Signed-off-by: Kevin Morris --- aurweb/routers/packages.py | 6 +++++- templates/partials/packages/details.html | 8 ++++++++ test/test_packages_routes.py | 14 +++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) 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())