kopia lustrzana https://github.com/wagtail/wagtail
Support ordering on search results
rodzic
de59c75d10
commit
a7943bf83a
|
@ -117,19 +117,31 @@ class BaseIndexView(PermissionCheckedMixin, BaseListingView):
|
||||||
return super().get(request)
|
return super().get(request)
|
||||||
|
|
||||||
def get_ordering(self):
|
def get_ordering(self):
|
||||||
ordering = self.request.GET.get("ordering", "-latest_revision_created_at")
|
valid_orderings = [
|
||||||
if ordering not in [
|
|
||||||
"title",
|
"title",
|
||||||
"-title",
|
"-title",
|
||||||
"content_type",
|
|
||||||
"-content_type",
|
|
||||||
"live",
|
"live",
|
||||||
"-live",
|
"-live",
|
||||||
"latest_revision_created_at",
|
"latest_revision_created_at",
|
||||||
"-latest_revision_created_at",
|
"-latest_revision_created_at",
|
||||||
"ord",
|
]
|
||||||
]:
|
|
||||||
ordering = "-latest_revision_created_at"
|
if self.query_string:
|
||||||
|
# default to ordering by relevance
|
||||||
|
default_ordering = None
|
||||||
|
else:
|
||||||
|
default_ordering = "-latest_revision_created_at"
|
||||||
|
# ordering by page order is only available when not searching
|
||||||
|
valid_orderings.append("ord")
|
||||||
|
|
||||||
|
# ordering by content type not currently available when searching, due to
|
||||||
|
# https://github.com/wagtail/wagtail/issues/6616
|
||||||
|
valid_orderings.append("content_type")
|
||||||
|
valid_orderings.append("-content_type")
|
||||||
|
|
||||||
|
ordering = self.request.GET.get("ordering", default_ordering)
|
||||||
|
if ordering not in valid_orderings:
|
||||||
|
ordering = default_ordering
|
||||||
|
|
||||||
return ordering
|
return ordering
|
||||||
|
|
||||||
|
@ -146,6 +158,7 @@ class BaseIndexView(PermissionCheckedMixin, BaseListingView):
|
||||||
|
|
||||||
self.ordering = self.get_ordering()
|
self.ordering = self.get_ordering()
|
||||||
|
|
||||||
|
if not is_searching:
|
||||||
if self.ordering == "ord":
|
if self.ordering == "ord":
|
||||||
# preserve the native ordering from get_children()
|
# preserve the native ordering from get_children()
|
||||||
pass
|
pass
|
||||||
|
@ -180,6 +193,11 @@ class BaseIndexView(PermissionCheckedMixin, BaseListingView):
|
||||||
pages = pages.annotate_site_root_state().annotate_approved_schedule()
|
pages = pages.annotate_site_root_state().annotate_approved_schedule()
|
||||||
|
|
||||||
if is_searching:
|
if is_searching:
|
||||||
|
if self.ordering:
|
||||||
|
pages = pages.order_by(self.ordering).autocomplete(
|
||||||
|
self.query_string, order_by_relevance=False
|
||||||
|
)
|
||||||
|
else:
|
||||||
pages = pages.autocomplete(self.query_string)
|
pages = pages.autocomplete(self.query_string)
|
||||||
|
|
||||||
return pages
|
return pages
|
||||||
|
|
Ładowanie…
Reference in New Issue