Skip to content

Commit 0a44f2b

Browse files
committed
Rewrite for clarity, add test, edit news
1 parent cec91ce commit 0a44f2b

File tree

3 files changed

+26
-15
lines changed

3 files changed

+26
-15
lines changed

news/1954.bugfix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Fix search handler remove/ignore sort_order if present. @mamico
1+
In the `@search` service, fix a case where the `sort_order` parameter was ignored. @mamico, @davisagli

src/plone/restapi/search/handler.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -131,21 +131,19 @@ def filter_query(self, query):
131131
bits = query["path"]["query"].split("/")[len(vhm_physical_path) :]
132132
query["path"]["query"] = "/".join(bits) or "/"
133133

134-
default_sort_on = search_settings.sort_on
135-
134+
# Get default sort_on from registry if not specified in query
136135
if "sort_on" not in query:
137-
if default_sort_on != "relevance":
138-
query["sort_on"] = self.default_sort_on
139-
elif query["sort_on"] == "relevance":
140-
del query["sort_on"]
141-
142-
if not query.get("sort_order") and (
143-
query.get("sort_on", "") == "Date"
144-
or query.get("sort_on", "") == "effective" # compatibility with Volto
145-
):
146-
query["sort_order"] = "reverse"
147-
148-
if "sort_order" in query and not query["sort_order"]:
136+
query["sort_on"] = search_settings.sort_on
137+
# To rank by relevance, sort_on must be omitted
138+
if query["sort_on"] == "relevance":
139+
del query["sort_on"]
140+
141+
sort_on = query.get("sort_on")
142+
# Remove sort_order if sort_on is not set
143+
if not sort_on and "sort_order" in query:
149144
del query["sort_order"]
145+
# Default to reverse sort_order if sort_on is a date
146+
elif sort_on in ("Date", "effective") and not query.get("sort_order"):
147+
query["sort_order"] = "reverse"
150148

151149
return query

src/plone/restapi/tests/test_search.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -765,6 +765,19 @@ def test_search_use_site_search_settings_for_default_sort_order(self):
765765
"Other Document",
766766
)
767767

768+
response = self.api_session.get(
769+
"/@search",
770+
params={
771+
"use_site_search_settings": 1,
772+
"sort_on": "effective",
773+
"sort_order": "reverse",
774+
},
775+
).json()
776+
self.assertEqual(
777+
[item["title"] for item in response["items"]][0],
778+
"Other Document",
779+
)
780+
768781
def test_search_use_site_search_settings_with_navigation_root(self):
769782

770783
alsoProvides(self.folder, INavigationRoot)

0 commit comments

Comments
 (0)