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())
|