summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Löthberg <johannes@kyriasis.com>2019-11-17 14:05:30 +0100
committerjelle van der Waa <jelle@vdwaa.nl>2019-11-17 17:19:24 +0100
commita55ab7de7e05819534542d5298598563741d63f5 (patch)
tree1c6c26bce5f76d9c63be53fb7c8f02805b9c3b84
parent4443a1c159df5ccdd379562d77e2aa115a0f7305 (diff)
downloadarchweb-a55ab7de7e05819534542d5298598563741d63f5.tar.gz
archweb-a55ab7de7e05819534542d5298598563741d63f5.zip
Add support for searching by package provides
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
-rw-r--r--packages/views/search.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/packages/views/search.py b/packages/views/search.py
index be60e890..b8f18ed5 100644
--- a/packages/views/search.py
+++ b/packages/views/search.py
@@ -106,9 +106,17 @@ def parse_form(form, packages):
(Q(pkgname__icontains=q) for q in query.split()))
q_pkgdesc = reduce(operator.__and__,
(Q(pkgdesc__icontains=q) for q in query.split()))
- packages = packages.filter(q_pkgname | q_pkgdesc)
+ qs_provide = []
+ for query_term in query.split():
+ term_parts = query_term.rsplit('=', 2)
+ qs_provide.append(Q(provides__name__icontains=term_parts[0]))
+ if len(term_parts) == 2:
+ qs_provide.append(Q(provides__version__exact=term_parts[1]))
+ q_provides = reduce(operator.__and__, qs_provide)
- return packages
+ packages = packages.filter(q_pkgname | q_pkgdesc | q_provides)
+
+ return packages.distinct()
class SearchListView(ListView):