unify eboutic and regular counter price selection

This commit is contained in:
imperosol
2026-03-08 16:29:48 +01:00
parent 3183304815
commit d481b6ae88
6 changed files with 73 additions and 59 deletions

View File

@@ -22,7 +22,7 @@ from typing import Self
from dict2xml import dict2xml
from django.conf import settings
from django.db import DataError, models
from django.db.models import F, OuterRef, Q, Subquery, Sum
from django.db.models import F, OuterRef, Subquery, Sum
from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
@@ -39,30 +39,6 @@ from counter.models import (
)
def get_eboutic_prices(user: User) -> list[Price]:
return list(
Price.objects.filter(
Q(is_always_shown=True, groups__in=user.all_groups)
| Q(
id=Subquery(
Price.objects.filter(
product_id=OuterRef("product_id"), groups__in=user.all_groups
)
.order_by("amount")
.values("id")[:1]
)
),
product__product_type__isnull=False,
product__archived=False,
product__limit_age__lte=user.age,
product__counters=get_eboutic(),
)
.select_related("product", "product__product_type")
.order_by("product__product_type__order", "product_id", "amount")
.distinct()
)
class BillingInfoState(Enum):
VALID = 1
EMPTY = 2