From bf99a07153e5319dee47f22e244dbad7bbc4e638 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 28 Jul 2021 13:29:24 -0700 Subject: [PATCH 1/3] Automatically search remote endpoints if a local search is empty --- bookwyrm/views/search.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index d15fc6a87..7e0c8fee7 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -67,12 +67,14 @@ class Search(View): def book_search(query, _, min_confidence, search_remote=False): """the real business is elsewhere""" - if search_remote: - return connector_manager.search(query, min_confidence=min_confidence) - results = connector_manager.local_search(query, min_confidence=min_confidence) - if not results: - return None - return [{"results": results}] + # try a local-only search + if not search_remote: + results = connector_manager.local_search(query, min_confidence=min_confidence) + if results: + # gret, we found something + return [{"results": results}] + # if there weere no local results, or the request was for remote, search all sources + return connector_manager.search(query, min_confidence=min_confidence) def user_search(query, viewer, *_): From d5c36dbc285e9f17e150c46accbad10ae5a6d17c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 28 Jul 2021 13:52:16 -0700 Subject: [PATCH 2/3] Updates search remote value --- bookwyrm/views/search.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index 7e0c8fee7..673de23ad 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -53,7 +53,7 @@ class Search(View): "remote": search_remote, } if query: - results = endpoints[search_type]( + results, search_remote = endpoints[search_type]( query, request.user, min_confidence, search_remote ) if results: @@ -61,6 +61,7 @@ class Search(View): request.GET.get("page") ) data["results"] = paginated + data["remote"] = search_remote return TemplateResponse(request, "search/{:s}.html".format(search_type), data) @@ -72,9 +73,9 @@ def book_search(query, _, min_confidence, search_remote=False): results = connector_manager.local_search(query, min_confidence=min_confidence) if results: # gret, we found something - return [{"results": results}] + return [{"results": results}], False # if there weere no local results, or the request was for remote, search all sources - return connector_manager.search(query, min_confidence=min_confidence) + return connector_manager.search(query, min_confidence=min_confidence), True def user_search(query, viewer, *_): @@ -100,7 +101,7 @@ def user_search(query, viewer, *_): similarity__gt=0.5, ) .order_by("-similarity")[:10] - ) + ), None def list_search(query, viewer, *_): @@ -121,4 +122,4 @@ def list_search(query, viewer, *_): similarity__gt=0.1, ) .order_by("-similarity")[:10] - ) + ), None From 0ed0f45b329de4aaf89395e2bdb0e4fa875b69a4 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 28 Jul 2021 16:43:49 -0700 Subject: [PATCH 3/3] Fixes logged out state for user search --- bookwyrm/views/search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index 673de23ad..cdea86631 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -82,7 +82,7 @@ def user_search(query, viewer, *_): """cool kids members only user search""" # logged out viewers can't search users if not viewer.is_authenticated: - return models.User.objects.none() + return models.User.objects.none(), None # use webfinger for mastodon style account@domain.com username to load the user if # they don't exist locally (handle_remote_webfinger will check the db)