Enable partial matching on images index view where available (#10215)

Fixes #10213
pull/10207/head
Mng 2023-03-09 04:36:54 +02:00 zatwierdzone przez Matt Westcott
rodzic fff70ad2f9
commit a51f9250b3
2 zmienionych plików z 20 dodań i 1 usunięć

Wyświetl plik

@ -78,6 +78,13 @@ class TestImageIndexView(WagtailTestUtils, TestCase):
self.assertContains(response, "a cute kitten")
self.assertNotContains(response, "a cute puppy")
def test_search_partial_match(self):
response = self.get({"q": "kit"})
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context["query_string"], "kit")
self.assertContains(response, "a cute kitten")
self.assertNotContains(response, "a cute puppy")
def test_collection_query_search(self):
root_collection = Collection.get_first_root_node()
child_collection = [

Wyświetl plik

@ -26,6 +26,7 @@ from wagtail.images.models import Filter, SourceImageIOError
from wagtail.images.permissions import permission_policy
from wagtail.images.utils import generate_signature
from wagtail.models import Collection, Site
from wagtail.search.backends import get_search_backend
permission_checker = PermissionPolicyChecker(permission_policy)
@ -104,7 +105,18 @@ class BaseListingView(TemplateView):
if self.form.is_valid():
query_string = self.form.cleaned_data["q"]
if query_string:
images = images.search(query_string)
search_backend = get_search_backend()
if images.model.get_autocomplete_search_fields():
try:
images = search_backend.autocomplete(query_string, images)
except NotImplementedError:
images = search_backend.search(
query_string, images, partial_match=True
)
else:
images = search_backend.search(
query_string, images, partial_match=True
)
else:
self.form = SearchForm(placeholder=_("Search images"))