From 117e69c90671ec562a6366bfff1c659be88810ba Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Sun, 12 Sep 2021 22:31:06 +0300 Subject: [PATCH] return description from the search --- .../build-status/package-actions-script.jinja2 | 2 +- src/ahriman/web/views/service/search.py | 13 ++++++++++--- .../web/views/service/test_views_service_search.py | 3 ++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/package/share/ahriman/build-status/package-actions-script.jinja2 b/package/share/ahriman/build-status/package-actions-script.jinja2 index a0377183..25eb5416 100644 --- a/package/share/ahriman/build-status/package-actions-script.jinja2 +++ b/package/share/ahriman/build-status/package-actions-script.jinja2 @@ -34,7 +34,7 @@ success: function (resp) { const $options = resp.map(function (pkg) { const $option = document.createElement("option"); - $option.value = pkg; + $option.value = `${pkg.package} (${pkg.description})`; return $option; }); $knownPackages.empty().append($options); diff --git a/src/ahriman/web/views/service/search.py b/src/ahriman/web/views/service/search.py index b2e781a5..8374ec01 100644 --- a/src/ahriman/web/views/service/search.py +++ b/src/ahriman/web/views/service/search.py @@ -20,7 +20,7 @@ import aur # type: ignore from aiohttp.web import Response, json_response -from typing import Iterator +from typing import Callable, Iterator from ahriman.web.views.base import BaseView @@ -36,7 +36,7 @@ class SearchView(BaseView): search string (non empty) must be supplied as `for` parameter - :return: 200 with found package bases sorted by name + :return: 200 with found package bases and descriptions sorted by base """ search: Iterator[str] = filter(lambda s: len(s) > 3, self.request.query.getall("for", default=[])) search_string = " ".join(search) @@ -45,4 +45,11 @@ class SearchView(BaseView): return json_response(text="Search string must not be empty", status=400) packages = aur.search(search_string) - return json_response(sorted(package.package_base for package in packages)) + comparator: Callable[[aur.Package], str] = lambda item: str(item.package_base) + response = [ + { + "package": package.package_base, + "description": package.description, + } for package in sorted(packages, key=comparator) + ] + return json_response(response) diff --git a/tests/ahriman/web/views/service/test_views_service_search.py b/tests/ahriman/web/views/service/test_views_service_search.py index 4f248d72..944b9fc8 100644 --- a/tests/ahriman/web/views/service/test_views_service_search.py +++ b/tests/ahriman/web/views/service/test_views_service_search.py @@ -12,7 +12,8 @@ async def test_get(client: TestClient, aur_package_ahriman: aur.Package, mocker: response = await client.get("/service-api/v1/search", params={"for": "ahriman"}) assert response.ok - assert await response.json() == ["ahriman"] + assert await response.json() == [{"package": aur_package_ahriman.package_base, + "description": aur_package_ahriman.description}] async def test_get_exception(client: TestClient, mocker: MockerFixture) -> None: