diff --git a/store/routes.py b/store/routes.py index 8d426f6611773a8c1212500c93dd18713f05619d..f882b61a5b72662ef36358aea391efd983f49e40 100644 --- a/store/routes.py +++ b/store/routes.py @@ -542,14 +542,6 @@ def validate_cvv_2(form, field): raise ValidationError("CVV2 is incorrect") -# This type of validation does not work for some edge cases such as PO-boxes, post offices etc -# def validate_postcode(form, field): -# regex = "^[A-Z]{1,2}\d{1,2}[A-Z]?\s?\d[A-Z]{2}$" -# p = re.compile(regex) -# if not re.search(p, field.data): -# raise ValidationError("Postcode is not valid") - - def validate_address(form, field): # Uses the google maps geocoding api to check if a postcode or address exists @@ -612,14 +604,19 @@ class CheckoutForm(Form): def order_summary(): total_price = 0 items = [] - 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 - ) + 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 + ) + else: + return redirect(url_for("index")) @app.route("/checkout", methods=["POST", "GET"]) @@ -634,8 +631,12 @@ def checkout(): if request.method == "POST" and form.validate(): session["address"] = str(form.address.data + ", " + form.postcode.data) try: - # sell_items() - return redirect(url_for("order_summary")) + for item_id, item, is_item_set in session["basket"]: + if is_item_set == True: + sell_item(get_item_set_by_id(item_id)) + else: + sell_item(get_item_by_id(item_id)) + return redirect(url_for("order_summary")) except: flash("One or more items in basket have already been sold!") csrf_token = generate_csrf() @@ -674,6 +675,7 @@ def add_to_basket(): "id": item_obj.id, "description": item_obj.description, "price": item_obj.price, + "is_item_set" : False } if "basket" not in session: session["basket"] = {} @@ -696,7 +698,8 @@ def add_to_basket_set(): item_dict = { "id": item_obj.id, "description": item_obj.description, - "price": item_obj.price, + "price": item_obj.price, + "is_item_set" : True } if "basket" not in session: session["basket"] = {}