|
1 | | -from datetime import date |
| 1 | +from datetime import datetime |
| 2 | +import time |
2 | 3 |
|
3 | 4 | from app import db |
4 | | -from models.pizza import Pizza |
5 | 5 | from models.ingredient import Ingredient |
| 6 | +from models.pizza import Pizza |
6 | 7 | from models.dessert import Dessert |
7 | 8 | from models.drink import Drink |
8 | 9 | from models.menu_item import MenuItem |
@@ -86,17 +87,40 @@ def show_ingredients(name): |
86 | 87 |
|
87 | 88 |
|
88 | 89 | def save_new_order(address, customer_name, customer_number, order_items): |
89 | | - order_time = date.today() |
| 90 | + order_time = datetime.today() |
90 | 91 | new_order_items = [] |
91 | 92 | status = "Active" |
92 | 93 | for item in order_items: |
93 | 94 | new_order_items.append(OrderItem(menu_item=item['menu_item'], quantity=item['quantity'])) |
94 | | - new_order = Order(address=address, customer_name=customer_name, customer_number=customer_number, order_time=order_time, status=status, order_items=new_order_items) |
| 95 | + new_order = Order(address=address, |
| 96 | + customer_name=customer_name, |
| 97 | + customer_number=customer_number, |
| 98 | + order_time=order_time, |
| 99 | + status=status, |
| 100 | + order_items=new_order_items) |
95 | 101 | db.session.add(new_order) |
96 | 102 | db.session.commit() |
97 | 103 | return new_order |
98 | 104 |
|
99 | 105 |
|
| 106 | +def find_order(order_id): |
| 107 | + order = Order.query.filter_by(id=order_id).first_or_404(description='There is no order with id {}'.format(order_id)) |
| 108 | + return order |
| 109 | + |
| 110 | + |
| 111 | +def cancel_order(order_id): |
| 112 | + order = find_order(order_id) |
| 113 | + current_time = datetime.now() |
| 114 | + if order.status == "Cancelled": |
| 115 | + raise Exception("Order already cancelled.") |
| 116 | + if order.status == "Delivered": |
| 117 | + raise Exception("Order already delivered.") |
| 118 | + if ((current_time - order.order_time).seconds / 60) > 5: |
| 119 | + raise Exception("5 minutes have passed") |
| 120 | + order.status = "Cancelled" |
| 121 | + db.session.commit() |
| 122 | + |
| 123 | + |
100 | 124 | # show_ingredients("Margherita") |
101 | 125 | # delete_pizza("Margherita") |
102 | 126 | db.create_all() |
0 commit comments