From 499c4e3267d06f738be989dd0d42fea9027f37c9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 19:56:29 -0700 Subject: [PATCH] Don't search remote sources by default --- bookwyrm/templates/search/book.html | 69 ++++++++++++++++++++++++++- bookwyrm/templates/search/layout.html | 6 ++- bookwyrm/views/search.py | 21 +++++--- 3 files changed, 86 insertions(+), 10 deletions(-) diff --git a/bookwyrm/templates/search/book.html b/bookwyrm/templates/search/book.html index 5d66ef90..9d42dd7f 100644 --- a/bookwyrm/templates/search/book.html +++ b/bookwyrm/templates/search/book.html @@ -1,9 +1,74 @@ {% extends 'search/layout.html' %} +{% load i18n %} {% block panel %} -{% for result in results %} -hi +{% if results %} +{% with results|first as local_results %} + +{% endwith %} + +
+{% for result_set in results|slice:"1:" %} + {% if result_set.results %} +
+ {% if not result_set.connector.local %} +
+ +
+ {% trans "Show" as button_text %} + {% include 'snippets/toggle/open_button.html' with text=button_text small=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier class="is-small" icon="arrow-down" pressed=forloop.first %} +
+
+ {% endif %} + +
+
+
+ {% trans "Close" as button_text %} + {% include 'snippets/toggle/toggle_button.html' with label=button_text class="delete" nonbutton=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier pressed=forloop.first %} +
+ +
    + {% for result in result_set.results %} +
  • + {% include 'snippets/search_result_text.html' with result=result remote_result=True %} +
  • + {% endfor %} +
+
+
+
+ {% endif %} + {% endfor %} +
+ + +{% endif %} + +{% if not remote %} +

+ {% if request.user.is_authenticated %} + + {% trans "Load results from other catalogues" %} + + {% else %} + + {% trans "Log in to import or add books." %} + + {% endif %} +

+{% endif %} {% endblock %} diff --git a/bookwyrm/templates/search/layout.html b/bookwyrm/templates/search/layout.html index b122d7e2..17e14f0f 100644 --- a/bookwyrm/templates/search/layout.html +++ b/bookwyrm/templates/search/layout.html @@ -39,9 +39,11 @@ {% trans "Books" %} + {% if request.user.is_authenticated %} {% trans "Users" %} + {% endif %} {% trans "Lists" %} @@ -49,13 +51,13 @@
- {% block panel %} - {% endblock %} {% if not results %}

{% blocktrans %}No results found for "{{ query }}"{% endblocktrans %}

{% endif %} + {% block panel %} + {% endblock %}
{% endif %} diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index 603ed211..9fa07e2e 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -23,6 +23,7 @@ class Search(View): query = request.GET.get("q") min_confidence = request.GET.get("min_confidence", 0.1) search_type = request.GET.get("type") + search_remote = request.GET.get("remote", False) if is_api_request(request): # only return local book results via json so we don't cascade @@ -41,23 +42,31 @@ class Search(View): } if not search_type in endpoints: search_type = "book" - endpoint = endpoints[search_type] data = { "query": query or "", "type": search_type, - "results": endpoint(query, request.user, min_confidence) if query else {}, + "remote": search_remote, } + if query: + data["results"] = endpoints[search_type]( + query, request.user, min_confidence, search_remote + ) return TemplateResponse(request, "search/{:s}.html".format(search_type), data) -def book_search(query, _, min_confidence): +def book_search(query, _, min_confidence, search_remote=False): """the real business is elsewhere""" - return connector_manager.search(query, min_confidence=min_confidence) + 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}] -def user_search(query, viewer, _): +def user_search(query, viewer, *_): """cool kids members only user search""" # logged out viewers can't search users if not viewer.is_authenticated: @@ -83,7 +92,7 @@ def user_search(query, viewer, _): ) -def list_search(query, viewer, _): +def list_search(query, viewer, *_): """any relevent lists?""" return ( privacy_filter(