From 9d5b9c4795b4772852440d4ad31efd7e94ec1aa7 Mon Sep 17 00:00:00 2001 From: moson Date: Wed, 22 Nov 2023 19:30:43 +0100 Subject: [PATCH] feat: Add "groups" to package details page Signed-off-by: moson --- aurweb/routers/packages.py | 2 ++ templates/partials/packages/details.html | 6 ++++++ test/test_templates.py | 22 ++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/aurweb/routers/packages.py b/aurweb/routers/packages.py index 0f11b302..30d0d896 100644 --- a/aurweb/routers/packages.py +++ b/aurweb/routers/packages.py @@ -200,6 +200,8 @@ async def package( context["licenses"] = pkg.package_licenses + context["groups"] = pkg.package_groups + conflicts = pkg.package_relations.filter( models.PackageRelation.RelTypeID == CONFLICTS_ID ).order_by(models.PackageRelation.RelName.asc()) diff --git a/templates/partials/packages/details.html b/templates/partials/packages/details.html index 697ef724..5f242414 100644 --- a/templates/partials/packages/details.html +++ b/templates/partials/packages/details.html @@ -68,6 +68,12 @@ {{ licenses.all() | join(', ', attribute='License.Name') }} {% endif %} + {% if show_package_details and groups and groups.count() %} + + {{ "Groups" | tr }}: + {{ groups.all() | join(', ', attribute='Group.Name') }} + + {% endif %} {% if show_package_details and conflicts and conflicts.count() %} {{ "Conflicts" | tr }}: diff --git a/test/test_templates.py b/test/test_templates.py index 2a3dac28..11927715 100644 --- a/test/test_templates.py +++ b/test/test_templates.py @@ -8,8 +8,10 @@ from aurweb import config, db, templates, time from aurweb.filters import as_timezone, number_format, timestamp_to_datetime as to_dt from aurweb.models import Package, PackageBase, User from aurweb.models.account_type import USER_ID +from aurweb.models.group import Group from aurweb.models.license import License from aurweb.models.package_base import popularity +from aurweb.models.package_group import PackageGroup from aurweb.models.package_license import PackageLicense from aurweb.models.package_relation import PackageRelation from aurweb.models.relation_type import PROVIDES_ID, REPLACES_ID @@ -88,6 +90,12 @@ def create_license(pkg: Package, license_name: str) -> PackageLicense: return pkglic +def create_group(pkg: Package, group_name: str) -> PackageLicense: + grp = db.create(Group, Name=group_name) + pkggrp = db.create(PackageGroup, Group=grp, Package=pkg) + return pkggrp + + def test_register_function_exists_key_error(): """Most instances of register_filter are tested through module imports or template renders, so we only test failures here.""" @@ -219,6 +227,15 @@ def check_package_details(content: str, pkg: Package) -> None: else: assert "Licenses" not in content + groups = pkg.package_groups.all() + if groups: + i += 1 + expected = ", ".join([p.Group.Name for p in groups]) + group_markup = rows[i].xpath("./td")[0] + assert group_markup.text.strip() == expected + else: + assert "Groups" not in content + provides = pkg.package_relations.filter( PackageRelation.RelTypeID == PROVIDES_ID ).all() @@ -319,6 +336,10 @@ def test_package_details_filled(user: User, package: Package): create_license(package, "TPL") # Testing Public License create_license(package, "TPL2") # Testing Public License 2 + # Create two groups. + create_group(package, "GRP") + create_group(package, "GRP2") + # Add provides. create_pkgrel(package, PROVIDES_ID, "test-provider") @@ -337,6 +358,7 @@ def test_package_details_filled(user: User, package: Package): "package": package, "comaintainers": [], "licenses": package.package_licenses, + "groups": package.package_groups, "provides": package.package_relations.filter( PackageRelation.RelTypeID == PROVIDES_ID ),