diff --git a/core/search_indexes.py b/core/search_indexes.py index 4d1c2045..3d8b1bb1 100644 --- a/core/search_indexes.py +++ b/core/search_indexes.py @@ -33,6 +33,9 @@ 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") + last_login = indexes.DateTimeField( + model_attr="last_login", default="1970-01-01T00:00:00Z" + ) def get_model(self): return User diff --git a/core/tests/test_user.py b/core/tests/test_user.py index e119412d..589755f6 100644 --- a/core/tests/test_user.py +++ b/core/tests/test_user.py @@ -37,6 +37,8 @@ class TestSearchUsers(TestCase): # restore the index call_command("update_index", "core", "--remove") + +class TestSearchUsersAPI(TestSearchUsers): def test_order(self): """Test that users are ordered by last login date.""" self.client.force_login(subscriber_user.make()) @@ -83,3 +85,13 @@ class TestSearchUsers(TestCase): response = self.client.get(reverse("api:search_users") + "?search=bél") assert response.status_code == 200 assert [r["id"] for r in response.json()["results"]] == [belix.id] + + +class TestSearchUsersView(TestSearchUsers): + """Test the search user view (`GET /search`).""" + + def test_page_ok(self): + """Just test that the page loads.""" + self.client.force_login(subscriber_user.make()) + response = self.client.get(reverse("core:search")) + assert response.status_code == 200 diff --git a/core/views/site.py b/core/views/site.py index b016b9af..37300414 100644 --- a/core/views/site.py +++ b/core/views/site.py @@ -85,7 +85,8 @@ def search_user(query): SearchQuerySet() .models(User) .autocomplete(auto=query) - .order_by("-last_login")[:20] + .order_by("-last_login") + .load_all()[:20] ) return [r.object for r in res] except TypeError: