diff --git a/bookwyrm/tests/test_views.py b/bookwyrm/tests/test_views.py index bb8a5ff2..cc621eba 100644 --- a/bookwyrm/tests/test_views.py +++ b/bookwyrm/tests/test_views.py @@ -211,6 +211,19 @@ class Views(TestCase): response.context_data['book_results'][0].title, 'Gideon the Ninth') + def test_search_html_response_users(self): + ''' searches remote connectors ''' + request = self.factory.get('', {'q': 'mouse'}) + with patch('bookwyrm.views.is_api_request') as is_api: + is_api.return_value = False + with patch('bookwyrm.connectors.connector_manager.search'): + response = views.search(request) + self.assertIsInstance(response, TemplateResponse) + self.assertEqual(response.template_name, 'search_results.html') + self.assertEqual( + response.context_data['user_results'][0], self.local_user) + + def test_import_page(self): ''' there are so many views, this just makes sure it LOADS ''' request = self.factory.get('') diff --git a/bookwyrm/views.py b/bookwyrm/views.py index b518c4fa..b823a1a5 100644 --- a/bookwyrm/views.py +++ b/bookwyrm/views.py @@ -5,6 +5,7 @@ from django.contrib.auth.decorators import login_required, permission_required from django.contrib.postgres.search import TrigramSimilarity from django.core.paginator import Paginator from django.db.models import Avg, Q +from django.db.models.functions import Greatest from django.http import HttpResponseNotFound, JsonResponse from django.core.exceptions import PermissionDenied from django.shortcuts import get_object_or_404, redirect @@ -234,7 +235,10 @@ def search(request): # do a local user search user_results = models.User.objects.annotate( - similarity=TrigramSimilarity('username', query), + similarity=Greatest( + TrigramSimilarity('username', query), + TrigramSimilarity('localname', query), + ) ).filter( similarity__gt=0.5, ).order_by('-similarity')[:10]