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)
|
||||
|
||||
def get_ordering(self):
|
||||
ordering = self.request.GET.get("ordering", "-latest_revision_created_at")
|
||||
if ordering not in [
|
||||
valid_orderings = [
|
||||
"title",
|
||||
"-title",
|
||||
"content_type",
|
||||
"-content_type",
|
||||
"live",
|
||||
"-live",
|
||||
"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
|
||||
|
||||
|
@ -146,6 +158,7 @@ class BaseIndexView(PermissionCheckedMixin, BaseListingView):
|
|||
|
||||
self.ordering = self.get_ordering()
|
||||
|
||||
if not is_searching:
|
||||
if self.ordering == "ord":
|
||||
# preserve the native ordering from get_children()
|
||||
pass
|
||||
|
@ -180,6 +193,11 @@ class BaseIndexView(PermissionCheckedMixin, BaseListingView):
|
|||
pages = pages.annotate_site_root_state().annotate_approved_schedule()
|
||||
|
||||
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)
|
||||
|
||||
return pages
|
||||
|
|
Ładowanie…
Reference in New Issue