feat: switch requests filter for pkgname to "contains"

Use "contains" filtering instead of an exact match
when a package name filter is given.

This makes it easier to find requests for a "group" of packages.

Signed-off-by: moson-mo <mo-son@mailbox.org>
This commit is contained in:
moson-mo 2023-06-10 09:40:35 +02:00
parent 26b2566b3f
commit 1c11c901a2
No known key found for this signature in database
GPG key ID: 4A4760AB4EE15296
2 changed files with 19 additions and 5 deletions

View file

@ -99,9 +99,9 @@ async def requests(
in_filters.append(REJECTED_ID) in_filters.append(REJECTED_ID)
filtered = query.filter(PackageRequest.Status.in_(in_filters)) filtered = query.filter(PackageRequest.Status.in_(in_filters))
# Name filter # Name filter (contains)
if filter_pkg_name: if filter_pkg_name:
filtered = filtered.filter(PackageBase.Name == filter_pkg_name) filtered = filtered.filter(PackageBase.Name.like(f"%{filter_pkg_name}%"))
# Additionally filter for requests made from package maintainer # Additionally filter for requests made from package maintainer
if filter_maintainer_requests: if filter_maintainer_requests:

View file

@ -925,14 +925,28 @@ def test_requests_with_package_name_filter(
request.cookies = cookies request.cookies = cookies
resp = request.get( resp = request.get(
"/requests", "/requests",
params={"filter_pkg_name": packages[0].PackageBase.Name}, params={"filter_pkg_name": "kg_1"},
) )
assert resp.status_code == int(HTTPStatus.OK) assert resp.status_code == int(HTTPStatus.OK)
root = parse_root(resp.text) root = parse_root(resp.text)
rows = root.xpath('//table[@class="results"]/tbody/tr') rows = root.xpath('//table[@class="results"]/tbody/tr')
# We only expect 1 request for our first package # We expect 11 requests for all packages containing "kg_1"
assert len(rows) == 1 assert len(rows) == 11
# test as TU, no results
with client as request:
request.cookies = cookies
resp = request.get(
"/requests",
params={"filter_pkg_name": "x"},
)
assert resp.status_code == int(HTTPStatus.OK)
root = parse_root(resp.text)
rows = root.xpath('//table[@class="results"]/tbody/tr')
# We expect 0 requests since we don't have anything containing "x"
assert len(rows) == 0
# test as regular user, not related to our package # test as regular user, not related to our package
cookies = {"AURSID": user2.login(Request(), "testPassword")} cookies = {"AURSID": user2.login(Request(), "testPassword")}