diff --git a/core/search_indexes.py b/core/search_indexes.py index b365d030..ce96884e 100644 --- a/core/search_indexes.py +++ b/core/search_indexes.py @@ -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 diff --git a/core/views/site.py b/core/views/site.py index 6f1fd0ae..9a6355a4 100644 --- a/core/views/site.py +++ b/core/views/site.py @@ -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 []