diff options
author | Dan McGee <dan@archlinux.org> | 2014-10-18 18:28:26 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2014-10-18 18:28:26 -0500 |
commit | 061805aa73d3d5b418a61fa6d6591d1a7d03d9ed (patch) | |
tree | b7cd8cca5eba3c358a000b399cc2cd756b88b6a1 /packages/views | |
parent | 4def86ec76d9975be8a357b6fc06104cc2b31fed (diff) |
FS#30773: put exact matches at top
There have been a few proposed solutions to this, but there really isn't
anything without a drawback. Things break pagination, require loading
the entire result set from the database, etc.
Just plop a new table on the page if someone did a so-called "simple"
search and we have a match. Only show on the first page of the search
results. This results in a relatively fast experience for someone doing
something like searching for the "perl" package.
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'packages/views')
-rw-r--r-- | packages/views/search.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/packages/views/search.py b/packages/views/search.py index b3778172..0b776d79 100644 --- a/packages/views/search.py +++ b/packages/views/search.py @@ -45,6 +45,12 @@ class PackageSearchForm(forms.Form): [('', 'All'), ('unknown', 'Unknown')] + \ [(m.username, m.get_full_name()) for m in maints] + def exact_matches(self): + # only do exact match search if 'q' is sole parameter + if self.changed_data != ['q']: + return [] + return Package.objects.normal().filter(pkgname=self.cleaned_data['q']) + def parse_form(form, packages): if form.cleaned_data['repo']: |