diff --git a/core/api.py b/core/api.py index 21f9818c..7df689bc 100644 --- a/core/api.py +++ b/core/api.py @@ -2,6 +2,7 @@ from typing import Annotated import annotated_types from django.conf import settings +from django.db.models import F from django.http import HttpResponse from ninja import Query from ninja_extra import ControllerBase, api_controller, paginate, route @@ -56,7 +57,9 @@ class UserController(ControllerBase): ) @paginate(PageNumberPaginationExtra, page_size=20) def search_users(self, filters: Query[UserFilterSchema]): - return filters.filter(User.objects.order_by("-last_login")) + return filters.filter( + User.objects.order_by(F("last_login").desc(nulls_last=True)) + ) DepthValue = Annotated[int, annotated_types.Ge(0), annotated_types.Le(10)] diff --git a/core/tests/test_user.py b/core/tests/test_user.py index 88a318c6..e119412d 100644 --- a/core/tests/test_user.py +++ b/core/tests/test_user.py @@ -5,6 +5,7 @@ from django.test import TestCase from django.urls import reverse from django.utils.timezone import now from model_bakery import baker, seq +from model_bakery.recipe import Recipe from core.baker_recipes import subscriber_user from core.models import User @@ -14,15 +15,20 @@ class TestSearchUsers(TestCase): @classmethod def setUpTestData(cls): User.objects.all().delete() - cls.users = baker.make( + user_recipe = Recipe( User, - _quantity=11, first_name=seq("First", suffix="Name"), last_name=seq("Last", suffix="Name"), nick_name=seq("Nick", suffix="Name"), - last_login=seq(now() - timedelta(days=30), timedelta(days=1)), - _bulk_create=True, ) + cls.users = [ + user_recipe.make(last_login=None), + *user_recipe.make( + last_login=seq(now() - timedelta(days=30), timedelta(days=1)), + _quantity=10, + _bulk_create=True, + ), + ] call_command("update_index", "core", "--remove") @classmethod