diff --git a/registrasion/controllers/conditions.py b/registrasion/controllers/conditions.py index 63362a28..7243737a 100644 --- a/registrasion/controllers/conditions.py +++ b/registrasion/controllers/conditions.py @@ -158,7 +158,7 @@ class CategoryConditionController(ConditionController): category=self.condition.enabling_category, ) products_count = rego.ProductItem.objects.filter( - cart=carts, + cart__in=carts, product__in=enabling_products, ).count() return products_count > 0 @@ -177,7 +177,7 @@ class ProductConditionController(ConditionController): carts = rego.Cart.objects.filter(user=user, released=False) products_count = rego.ProductItem.objects.filter( - cart=carts, + cart__in=carts, product__in=self.condition.enabling_products.all(), ).count() return products_count > 0 @@ -247,7 +247,7 @@ class TimeOrStockLimitConditionController(ConditionController): product_items = rego.ProductItem.objects.filter( product__in=self._products().all(), ) - product_items = product_items.filter(cart=reserved_carts) + product_items = product_items.filter(cart__in=reserved_carts) count = product_items.aggregate(Sum("quantity"))["quantity__sum"] or 0 diff --git a/registrasion/tests/test_cart.py b/registrasion/tests/test_cart.py index bc58d5fb..c203c9b7 100644 --- a/registrasion/tests/test_cart.py +++ b/registrasion/tests/test_cart.py @@ -72,6 +72,15 @@ class RegistrationCartTestCase(SetTimeMixin, TestCase): cls.PROD_4.price = Decimal("5.00") cls.PROD_4.save() + # Burn through some carts -- this made some past EC tests fail + current_cart = CartController.for_user(cls.USER_1) + current_cart.cart.active = False + current_cart.cart.save() + + current_cart = CartController.for_user(cls.USER_2) + current_cart.cart.active = False + current_cart.cart.save() + @classmethod def make_ceiling(cls, name, limit=None, start_time=None, end_time=None): limit_ceiling = rego.TimeOrStockLimitEnablingCondition.objects.create(