diff --git a/store/models.py b/store/models.py index ce39bbdb4be2a9a1a177d0671ccd9cb682e0a837..de0a120379f1ea2972d764cd9faae638e24c677c 100644 --- a/store/models.py +++ b/store/models.py @@ -74,7 +74,7 @@ class ItemSet(db.Model): return len(self.items) def __repr__(self): - return f"id: {self.id}, description: {self.description}, items: {self.items}, quantity: {self.price}, price: { self.calculate_price() }" # TODO: Rename price to quantity + return f"id: {self.id}, description: {self.description}, items: {self.items}, quantity: {self.price}, price: { self.price() }" # TODO: Rename price to quantity class User(db.Model, UserMixin): diff --git a/store/routes.py b/store/routes.py index e28e5edd42fb51d01776c7e17aef0f84774fe689..3597e5f00bab99de0de2ae00a429edafcdd8ee5e 100644 --- a/store/routes.py +++ b/store/routes.py @@ -559,12 +559,19 @@ def add_to_basket(): "price": item_obj.price, "is_item_set": False, } + if "basket" not in session: session["basket"] = {} + item_sets = get_itemsets_by_item_id(item_id) + is_in_basket = False + for item_set in item_sets: + if item_set.id in session["basket"]: + is_in_basket = True + flash("Item already in basket in set") if item_id in session["basket"]: flash("Item already in basket") - else: + elif not is_in_basket: session["basket"][item_id] = item_dict flash("Item added to basket: " + item_obj.description) @@ -574,7 +581,6 @@ def add_to_basket(): @app.route("/add_to_basket_set", methods=["POST"]) def add_to_basket_set(): item_id = request.form["item_id"] - item_obj = get_item_set_by_id(item_id) item_dict = { @@ -585,11 +591,14 @@ def add_to_basket_set(): } if "basket" not in session: session["basket"] = {} - + is_in_basket = False + for item in item_obj.items: + if item.id in session["basket"]: + is_in_basket = True + flash("Item already in basket in item set.") if item_id in session["basket"]: flash("Item already in basket") - - else: + elif not is_in_basket: session["basket"][item_id] = item_dict flash("Item added to basket: " + item_obj.description) print(session["basket"]) diff --git a/store/utility.py b/store/utility.py index 8c7d8bbbe252e08ca405e18715395f9195dca98f..6f3ec9a8f5b20d72d9206b1b4e09f4279b35aa04 100644 --- a/store/utility.py +++ b/store/utility.py @@ -103,6 +103,12 @@ def get_item_by_id(id): return Item.query.get(id) +def get_items_by_itemset_id(item_set_id): + item_set = get_item_set_by_id(item_set_id) + items = item_set.items + return items + + def add_item(description, price, date_sold=None): item = Item(description=description, price=price, date_sold=date_sold) db.session.add(item)