From 93f4dede3ef2c3e7f99e85f139d77b9c5fc5f24f Mon Sep 17 00:00:00 2001 From: thomas girod Date: Wed, 25 Sep 2024 12:08:11 +0200 Subject: [PATCH] Put users that never logged in at the end --- core/api.py | 5 ++++- core/tests/test_user.py | 14 ++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) 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