diff --git a/client/pizza_palace.py b/client/pizza_palace.py index 7f97ab927bb8f920ae22bd154cabb9d8b8f44f03..3e19b81e394b1bc68f6cadac47e32f3828d67a9d 100644 --- a/client/pizza_palace.py +++ b/client/pizza_palace.py @@ -118,6 +118,8 @@ def new_session(*arg): res_json = res.json() if (res_json != None and res_json["status"] == 200): cart_id, cart_key = res_json["id"], res_json["key"] + logger.debug("Cart ID: " + cart_id) + logger.debug("Cart Key: " + cart_key) return True else: return False @@ -136,6 +138,7 @@ def refresh_items(): return False def order_item(item, people, stuffed_crust): + global pizzas, cart_id, cart_key item_dict = {} for pizza in pizzas: if pizza["id"] == item: @@ -144,8 +147,9 @@ def order_item(item, people, stuffed_crust): if item_dict == {}: messagebox.showerror("Error", "Could not find pizza") return - res = requests.post(get_endpoint("/cart/add"), json={"id": cart_id, "key": cart_key, "type": item, "num_people": people, "stuffed_crust": stuffed_crust}) - print(res.text) + reqjson = {"id": cart_id, "key": cart_key, "type": item, "num_people": people, "stuffed_crust": stuffed_crust} + res = requests.post(get_endpoint("/cart/add"), json=reqjson) + logger.debug(res.text) if (res.status_code == 200): res_json = res.json() if (res_json != None and res_json["status"] == 200): @@ -158,7 +162,6 @@ def order_item(item, people, stuffed_crust): class OrderItem(): def __init__(self, pizza_dict, row): global order_frame - print(pizza_dict) self.id = pizza_dict["id"] self.row = row self.label1 = ttk.Label(order_frame, text=pizza_dict["name"]) @@ -183,7 +186,7 @@ class OrderItem(): if (validate_int(self.quantity.get())): order_item(self.id, int(self.quantity.get()), self.stuffed_crust.get()) -def refresh_order_items(*args): +def refresh_order_items(): global order_frame if(refresh_items()): # Remove all items @@ -196,6 +199,45 @@ def refresh_order_items(*args): row += 1 configure_grid(order_frame) +# Refresh cart screen items +class CartItem(): + def __init__(self, item_dict, row): + global cart_frame, pizzas + self.id = item_dict["id"] + self.pizza = None + for p in pizzas: + if p["id"] == self.id: + self.pizza = p + break + if self.pizza == None: + logger.error("Could not find pizza with ID " + self.id) + return + self.row = row + self.label1 = ttk.Label(cart_frame, text=self.pizza["name"]) + self.label1.grid(column=1, row=row, sticky=(W, E)) + self.label2 = ttk.Label(cart_frame, text=str(item_dict["num_people"])) + self.label2.grid(column=2, row=row, sticky=(W, E)) + self.stuffed_crust = BooleanVar(value=item_dict["stuffed_crust"]) + self.stuffed_display = ttk.Checkbutton(cart_frame, variable=self.stuffed_crust, state="disabled") + self.label3 = ttk.Label(cart_frame, text="£%.2f" % self.pizza["cost_pp"] * item_dict["num_people"]) + self.label3.grid(column=2, row=row, sticky=(W, E)) + def destroy(self): + self.label1.destroy() + self.label2.destroy() + self.stuffed_display.destroy() + +def refresh_citems(): + res = requests.get(get_endpoint("/cart/items")) + if (res.status_code == 200 and res.json() != None): + unused_todo = res.json() + return True + else: + connect_fail() + return False + +def refresh_cart_items(): + global cart_frame + ## Main program code # Window setup root.title("Pizza Palace") @@ -239,7 +281,21 @@ order_label_5.grid(column=5, row=1, sticky=(W, E)) configure_grid(order_frame) # Cart tab + cart_frame = create_tab("Cart") +cart_label_1 = ttk.Label(cart_frame, text="Name") +cart_label_1.grid(column=1, row=1, sticky=(W, E)) +cart_label_2 = ttk.Label(cart_frame, text="Number of People") +cart_label_2.grid(column=2, row=1, sticky=(W, E)) +cart_label_3 = ttk.Label(cart_frame, text="Stuffed Crust?") +cart_label_3.grid(column=3, row=1, sticky=(W, E)) +cart_label_4 = ttk.Label(cart_frame, text="Total Cost") +cart_label_4.grid(column=4, row=1, sticky=(W, E)) + +cart_order_button = ttk.Button(cart_frame, text="Order", command=lambda: tab_control.select(confirm_frame)) +cart_order_button.grid(column=1, row=2, sticky=(W, E)) # TODO edit this in when items are added + +configure_grid(cart_frame) # Confirm tab confirm_frame = create_tab("Confirm")