search: sort by User.last_update

This commit is contained in:
tleb 2020-04-21 15:36:13 +02:00 committed by Skia
parent 30091ef69c
commit a38ab57ddf
2 changed files with 9 additions and 3 deletions

View File

@ -34,6 +34,7 @@ from forum.models import ForumMessage, ForumMessageMeta
class UserIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
auto = indexes.EdgeNgramField(use_template=True)
last_update = indexes.DateTimeField(model_attr="last_update")
def get_model(self):
return User

View File

@ -75,12 +75,17 @@ def notification(request, notif_id):
def search_user(query, as_json=False):
try:
# slugify turns everything into ascii and every whitespace into -
# it ends by removing duplicate - (so '- - ' will turn into '-')
# it ends by removing duplicate - (so ' - ' will turn into '-')
# replace('-', ' ') because search is whitespace based
query = slugify(query).replace("-", " ")
# is this necessary? it's not done when indexing users
# TODO: is this necessary?
query = html.escape(query)
res = SearchQuerySet().models(User).autocomplete(auto=query)[:20]
res = (
SearchQuerySet()
.models(User)
.autocomplete(auto=query)
.order_by("-last_update")[:20]
)
return [r.object for r in res]
except TypeError:
return []