* Checklist.bonus_used as an absolute value

This commit is contained in:
Phil Zhitnikov 2024-05-21 01:15:55 +04:00
parent 490bc6b592
commit 9731181ce2

View File

@ -13,7 +13,7 @@ from django.core.files.base import ContentFile
from django.core.validators import MinValueValidator, MaxValueValidator from django.core.validators import MinValueValidator, MaxValueValidator
from django.db import models from django.db import models
from django.db.models import F, Case, When, DecimalField, Prefetch, Max, Q, Subquery, OuterRef from django.db.models import F, Case, When, DecimalField, Prefetch, Max, Q, Subquery, OuterRef
from django.db.models.functions import Ceil, Coalesce from django.db.models.functions import Ceil, Coalesce, Abs
from django.db.models.lookups import GreaterThan from django.db.models.lookups import GreaterThan
from django.db.transaction import atomic from django.db.transaction import atomic
from django.utils import timezone from django.utils import timezone
@ -215,7 +215,7 @@ class ChecklistQuerySet(models.QuerySet):
order_id=OuterRef('id')) order_id=OuterRef('id'))
.values('amount')) .values('amount'))
return self.annotate(_bonus_used=Coalesce(amount_subquery, 0)) return self.annotate(_bonus_used=Coalesce(Abs(amount_subquery), 0))
def default_ordering(self): def default_ordering(self):
return self.order_by(F('status_updated_at').desc(nulls_last=True)) return self.order_by(F('status_updated_at').desc(nulls_last=True))