From a33e9bd571dfaf1bd2a719df0a80e66f0c33cc2e Mon Sep 17 00:00:00 2001 From: Kevin Morris Date: Thu, 11 Nov 2021 19:14:08 -0800 Subject: [PATCH] feat(fastapi): add Replaces field to package details Signed-off-by: Kevin Morris --- aurweb/routers/packages.py | 6 +++++- templates/partials/packages/details.html | 8 ++++++++ test/test_packages_routes.py | 13 ++++++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/aurweb/routers/packages.py b/aurweb/routers/packages.py index fb91a8e3..f03be217 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, PROVIDES_ID +from aurweb.models.relation_type import CONFLICTS_ID, PROVIDES_ID, REPLACES_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 @@ -262,6 +262,10 @@ async def package(request: Request, name: str) -> Response: models.PackageRelation.RelTypeID == PROVIDES_ID) context["provides"] = provides + replaces = pkg.package_relations.filter( + models.PackageRelation.RelTypeID == REPLACES_ID) + context["replaces"] = replaces + return render_template(request, "packages/show.html", context) diff --git a/templates/partials/packages/details.html b/templates/partials/packages/details.html index 70636926..7516b324 100644 --- a/templates/partials/packages/details.html +++ b/templates/partials/packages/details.html @@ -85,6 +85,14 @@ {% endif %} + {% if show_package_details and replaces and replaces.count() %} + + {{ "Replaces" | tr }}: + + {{ replaces.all() | join(', ', attribute='RelName') }} + + + {% endif %} {{ "Submitter" | tr }}: diff --git a/test/test_packages_routes.py b/test/test_packages_routes.py index 464a7f60..b00844c2 100644 --- a/test/test_packages_routes.py +++ b/test/test_packages_routes.py @@ -24,7 +24,7 @@ from aurweb.models.package_notification import PackageNotification from aurweb.models.package_relation import PackageRelation from aurweb.models.package_request import ACCEPTED_ID, REJECTED_ID, PackageRequest from aurweb.models.package_vote import PackageVote -from aurweb.models.relation_type import PROVIDES_ID, RelationType +from aurweb.models.relation_type import PROVIDES_ID, REPLACES_ID, RelationType from aurweb.models.request_type import DELETION_ID, MERGE_ID, RequestType from aurweb.models.user import User from aurweb.testing import setup_test_db @@ -226,6 +226,13 @@ def test_package(client: TestClient, package: Package): RelTypeID=PROVIDES_ID, RelName="test_provider2") + db.create(PackageRelation, PackageID=package.ID, + RelTypeID=REPLACES_ID, + RelName="test_replacer1") + db.create(PackageRelation, PackageID=package.ID, + RelTypeID=REPLACES_ID, + RelName="test_replacer2") + with client as request: resp = request.get(package_endpoint(package)) assert resp.status_code == int(HTTPStatus.OK) @@ -250,6 +257,10 @@ def test_package(client: TestClient, package: Package): expected = ["test_provider1", "test_provider2"] assert provides[0].text.strip() == ", ".join(expected) + replaces = root.xpath('//tr[@id="replaces"]/td') + expected = ["test_replacer1", "test_replacer2"] + assert replaces[0].text.strip() == ", ".join(expected) + def test_package_comments(client: TestClient, user: User, package: Package): now = (datetime.utcnow().timestamp())