diff --git a/registrasion/controllers/product.py b/registrasion/controllers/product.py index b49d5569c3dab6a84c4c0d4ce13d57e0c4ca5754..4e9e6cab64895ceb38beb6779565b946bbce7c73 100644 --- a/registrasion/controllers/product.py +++ b/registrasion/controllers/product.py @@ -23,18 +23,25 @@ class ProductController(object): if category is not None: all_products = rego.Product.objects.filter(category=category) + all_products = all_products.select_related("category") else: all_products = [] if products is not None: - all_products = itertools.chain(all_products, products) + all_products = set(itertools.chain(all_products, products)) + + cat_quants = dict( + ( + category, + CategoryController(category).user_quantity_remaining(user), + ) + for category in set(product.category for product in all_products) + ) passed_limits = set( product for product in all_products - if CategoryController(product.category).user_quantity_remaining( - user - ) > 0 + if cat_quants[product.category] > 0 if cls(product).user_quantity_remaining(user) > 0 )