partials/packages/details.html: Add package request count

This was missed during the original implementation merge.

Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
Kevin Morris 2021-08-30 18:27:17 -07:00
parent 45fbf214b4
commit 55c29c4519
No known key found for this signature in database
GPG key ID: F7E46DED420788F3
3 changed files with 57 additions and 1 deletions

View file

@ -17,6 +17,7 @@ from aurweb.models.package_dependency import PackageDependency
from aurweb.models.package_license import PackageLicense from aurweb.models.package_license import PackageLicense
from aurweb.models.package_notification import PackageNotification from aurweb.models.package_notification import PackageNotification
from aurweb.models.package_relation import PackageRelation 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_source import PackageSource
from aurweb.models.package_vote import PackageVote from aurweb.models.package_vote import PackageVote
from aurweb.models.relation_type import CONFLICTS_ID 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( context["voted"] = request.user.package_votes.filter(
PackageVote.PackageBaseID == pkgbase.ID).scalar() PackageVote.PackageBaseID == pkgbase.ID).scalar()
context["requests"] = pkgbase.requests.filter(
PackageRequest.ClosedTS.is_(None)
).count()
return context return context

View file

@ -124,7 +124,13 @@
</a> </a>
</li> </li>
{% endif %} {% endif %}
<li><span class="flagged"></span></li> {% if requests %}
<li>
<span class="flagged">
{{ requests | tn("%d pending request", "%d pending requests") | format(requests) }}
</span>
</li>
{% endif %}
<li> <li>
{% if not request.user.is_authenticated() %} {% if not request.user.is_authenticated() %}
<a href="/login?next={{ '/pkgbase/%s/request' | format(result.Name) | urlencode }}"> <a href="/login?next={{ '/pkgbase/%s/request' | format(result.Name) | urlencode }}">

View file

@ -15,7 +15,9 @@ from aurweb.models.package_comment import PackageComment
from aurweb.models.package_dependency import PackageDependency from aurweb.models.package_dependency import PackageDependency
from aurweb.models.package_keyword import PackageKeyword from aurweb.models.package_keyword import PackageKeyword
from aurweb.models.package_relation import PackageRelation 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.relation_type import PROVIDES_ID, RelationType
from aurweb.models.request_type import DELETION_ID, RequestType
from aurweb.models.user import User from aurweb.models.user import User
from aurweb.testing import setup_test_db from aurweb.testing import setup_test_db
from aurweb.testing.html import parse_root 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 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, def test_package_authenticated(client: TestClient, user: User,
package: Package): package: Package):
""" We get the same here for either authenticated or not """ 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: for expected_text in expected:
assert expected_text in resp.text 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, def test_package_authenticated_maintainer(client: TestClient,
maintainer: User, maintainer: User,