exclude products over clic limit from eboutic

This commit is contained in:
imperosol
2026-05-14 12:28:59 +02:00
parent d4a2b7ec33
commit 186498d904
4 changed files with 10 additions and 16 deletions
+3 -11
View File
@@ -22,7 +22,7 @@ import string
from datetime import date, datetime, timedelta
from datetime import timezone as tz
from decimal import Decimal
from typing import TYPE_CHECKING, Literal, Self
from typing import Literal, Self
from dict2xml import dict2xml
from django.conf import settings
@@ -48,9 +48,6 @@ from core.utils import get_start_of_semester
from counter.fields import CurrencyField
from subscription.models import Subscription
if TYPE_CHECKING:
from collections.abc import Sequence
def get_eboutic() -> Counter:
return Counter.objects.filter(type="EBOUTIC").order_by("id").first()
@@ -773,10 +770,8 @@ class Counter(models.Model):
# but they share the same primary key
return self.type == "BAR" and any(b.pk == customer.pk for b in self.barmen_list)
def get_prices_for(
self, customer: Customer, *, order_by: Sequence[str] | None = None
) -> list[Price]:
qs = (
def get_prices_for(self, customer: Customer) -> PriceQuerySet:
return (
Price.objects.filter(
product__counters=self, product__product_type__isnull=False
)
@@ -784,9 +779,6 @@ class Counter(models.Model):
.select_related("product", "product__product_type")
.prefetch_related("groups")
)
if order_by:
qs = qs.order_by(*order_by)
return list(qs)
class CounterSellers(models.Model):
+1 -1
View File
@@ -596,7 +596,7 @@ class TestCounterClick(TestFullClickBase):
product=iter(_product_recipe.make(archived=False, _quantity=2)),
groups=[group],
)
customer_prices = counter.get_prices_for(customer)
customer_prices = list(counter.get_prices_for(customer))
assert unarchived_prices == customer_prices
+1 -1
View File
@@ -103,7 +103,7 @@ class CounterClick(
):
return redirect(obj) # Redirect to counter
self.prices = obj.get_prices_for(self.customer)
self.prices = list(obj.get_prices_for(self.customer))
return super().dispatch(request, *args, **kwargs)
+5 -3
View File
@@ -118,9 +118,11 @@ class EbouticMainView(LoginRequiredMixin, FormView):
@cached_property
def prices(self) -> list[Price]:
return get_eboutic().get_prices_for(
self.customer,
order_by=["product__product_type__order", "product_id", "amount"],
eboutic = get_eboutic()
return list(
eboutic.get_prices_for(self.customer)
.filter(product__in=eboutic.products.under_clic_limit())
.order_by("product__product_type__order", "product_id", "amount")
)
@cached_property