diff --git a/store/models.py b/store/models.py index a5d31d2abb3f47455ce87dd71546d3b1c800055e..d84ac9d95150c9e744dda6b44d4136443525f74f 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 fa669fbf69d8d874509315797063ecd4c1084057..fd157b035b9d4faeab29c967189690397f61e830 100644 --- a/store/routes.py +++ b/store/routes.py @@ -575,11 +575,10 @@ def order_summary(): if "basket" in session: address = session.get("address", "") for item_id, item in session["basket"].items(): - items.append(item) total_price = total_price + item["price"] session.clear() - + return render_template( "order_summary.html", items=items, address=address, total_price=total_price ) @@ -643,14 +642,21 @@ def add_to_basket(): "id": item_obj.id, "description": item_obj.description, "price": item_obj.price, - "is_item_set" : False + "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) @@ -660,22 +666,24 @@ 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 = { "id": item_obj.id, "description": item_obj.description, - "price": item_obj.price, - "is_item_set" : True + "price": item_obj.price, + "is_item_set": True, } 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 8029ff9f8a9c6c99dbad6313104db14acb3d95e6..8100bee533c651ca87165a5157e2f21c1e990efa 100644 --- a/store/utility.py +++ b/store/utility.py @@ -102,6 +102,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)