diff --git a/aurweb/routers/packages.py b/aurweb/routers/packages.py
index 0ffcbfb9..0873bd9f 100644
--- a/aurweb/routers/packages.py
+++ b/aurweb/routers/packages.py
@@ -17,6 +17,7 @@ from aurweb.models.package_dependency import PackageDependency
from aurweb.models.package_license import PackageLicense
from aurweb.models.package_notification import PackageNotification
from aurweb.models.package_relation import PackageRelation
+from aurweb.models.package_request import PackageRequest
from aurweb.models.package_source import PackageSource
from aurweb.models.package_vote import PackageVote
from aurweb.models.relation_type import CONFLICTS_ID
@@ -54,6 +55,10 @@ async def make_single_context(request: Request,
context["voted"] = request.user.package_votes.filter(
PackageVote.PackageBaseID == pkgbase.ID).scalar()
+ context["requests"] = pkgbase.requests.filter(
+ PackageRequest.ClosedTS.is_(None)
+ ).count()
+
return context
diff --git a/templates/partials/packages/actions.html b/templates/partials/packages/actions.html
index 87db3a3f..346537be 100644
--- a/templates/partials/packages/actions.html
+++ b/templates/partials/packages/actions.html
@@ -124,7 +124,13 @@
{% endif %}
-
+ {% if requests %}
+
+
+ {{ requests | tn("%d pending request", "%d pending requests") | format(requests) }}
+
+
+ {% endif %}
{% if not request.user.is_authenticated() %}
diff --git a/test/test_packages_routes.py b/test/test_packages_routes.py
index 0c9d80e8..ad07ec17 100644
--- a/test/test_packages_routes.py
+++ b/test/test_packages_routes.py
@@ -15,7 +15,9 @@ from aurweb.models.package_comment import PackageComment
from aurweb.models.package_dependency import PackageDependency
from aurweb.models.package_keyword import PackageKeyword
from aurweb.models.package_relation import PackageRelation
+from aurweb.models.package_request import PackageRequest
from aurweb.models.relation_type import PROVIDES_ID, RelationType
+from aurweb.models.request_type import DELETION_ID, RequestType
from aurweb.models.user import User
from aurweb.testing import setup_test_db
from aurweb.testing.html import parse_root
@@ -173,6 +175,43 @@ def test_package_comments(client: TestClient, user: User, package: Package):
assert comments[i].strip() == row
+def test_package_requests_display(client: TestClient, user: User,
+ package: Package):
+ type_ = db.query(RequestType, RequestType.ID == DELETION_ID).first()
+ db.create(PackageRequest, PackageBase=package.PackageBase,
+ PackageBaseName=package.PackageBase.Name,
+ User=user, RequestType=type_,
+ Comments="Test comment.",
+ ClosureComment=str())
+
+ # Test that a single request displays "1 pending request".
+ with client as request:
+ resp = request.get(package_endpoint(package))
+ assert resp.status_code == int(HTTPStatus.OK)
+
+ root = parse_root(resp.text)
+ selector = '//div[@id="actionlist"]/ul/li/span[@class="flagged"]'
+ target = root.xpath(selector)[0]
+ assert target.text.strip() == "1 pending request"
+
+ type_ = db.query(RequestType, RequestType.ID == DELETION_ID).first()
+ db.create(PackageRequest, PackageBase=package.PackageBase,
+ PackageBaseName=package.PackageBase.Name,
+ User=user, RequestType=type_,
+ Comments="Test comment2.",
+ ClosureComment=str())
+
+ # Test that a two requests display "2 pending requests".
+ with client as request:
+ resp = request.get(package_endpoint(package))
+ assert resp.status_code == int(HTTPStatus.OK)
+
+ root = parse_root(resp.text)
+ selector = '//div[@id="actionlist"]/ul/li/span[@class="flagged"]'
+ target = root.xpath(selector)[0]
+ assert target.text.strip() == "2 pending requests"
+
+
def test_package_authenticated(client: TestClient, user: User,
package: Package):
""" We get the same here for either authenticated or not
@@ -196,6 +235,12 @@ def test_package_authenticated(client: TestClient, user: User,
for expected_text in expected:
assert expected_text in resp.text
+ # When no requests are up, make sure we don't see the display for them.
+ root = parse_root(resp.text)
+ selector = '//div[@id="actionlist"]/ul/li/span[@class="flagged"]'
+ target = root.xpath(selector)
+ assert len(target) == 0
+
def test_package_authenticated_maintainer(client: TestClient,
maintainer: User,