From e546b7d8147055329e1558555a521c35f9f79beb Mon Sep 17 00:00:00 2001 From: James Polley Date: Fri, 29 Sep 2017 09:25:01 +1000 Subject: [PATCH] Fix qhasuery modification so that conditions are combined Borrowed from the pyconau-2017 fork To explain the impact of this - without this patch, if a user has their invoice refunded, they are able to buy a new ticket; but t-shirts, dinner tickets and so on do not become available to them again because they are listed has already been in a cart for them. Applying the patch now correctly checks to see if they currently have a ticket. From 731eee0a4c42a5013ee312b1ff50548e4d89a2ff Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Sun, 4 Jun 2017 13:22:34 +1000 Subject: [PATCH] Fix query modification so that conditions are combined Previously it was checking if the user has a product from the category in a cart, and if there is no cart that is released (refunded). Not *if the user has a product in a cart that is not released*. This patch combines them. In the absence of a __ne operation in the joining syntax, a double equality check is needed. Signed-off-by: Richard Jones --- .../registrasion/controllers/conditions.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor/registrasion/registrasion/controllers/conditions.py b/vendor/registrasion/registrasion/controllers/conditions.py index 87fb9cfb..e86a9d71 100644 --- a/vendor/registrasion/registrasion/controllers/conditions.py +++ b/vendor/registrasion/registrasion/controllers/conditions.py @@ -152,16 +152,16 @@ class CategoryConditionController(IsMetByFilter, ConditionController): product from a category invoking that item's condition in one of their carts. ''' + active = commerce.Cart.STATUS_ACTIVE + paid = commerce.Cart.STATUS_PAID in_user_carts = Q( - enabling_category__product__productitem__cart__user=user - ) - released = commerce.Cart.STATUS_RELEASED - in_released_carts = Q( - enabling_category__product__productitem__cart__status=released + enabling_category__product__productitem__cart__user=user, + enabling_category__product__productitem__cart__status=active + ) | Q( + enabling_category__product__productitem__cart__user=user, + enabling_category__product__productitem__cart__status=paid ) queryset = queryset.filter(in_user_carts) - queryset = queryset.exclude(in_released_carts) - return queryset