def post(cls): data = request.get_json() items = [] item_id_quantities = Counter(data["item_ids"]) customer_id = get_jwt_identity() if OrderModel.find_customer_pending_order(customer_id): return {"message": HAS_ONE_ORDER_ALREADY}, 400 for _id, count in item_id_quantities.most_common(): item = ItemModel.find_by_id(_id) if not item: return {"message": ITEM_ID_NOT_FOUND.format(_id)}, 404 items.append(ItemsInOrder(item_id=_id, quantity=count)) message = data['message'] order = OrderModel(items=items, status="pending", customer_id=customer_id, message=message) order.charge_with_stripe(data["token"]) order.save_to_db() return order_schema.dump(order)
def get(cls): customer_id = get_jwt_identity() order = OrderModel.find_customer_pending_order(customer_id) store_order = StoreOrderModel.find_by_order_id(order.id) store = StoreModel.find_by_id(store_order.store_id) store_data = {"email": store.email, "phone1": store.phone1} if store.phone2: store_data['phone2'] = store.phone2 return store_data, 200
def delete(cls): customer_id = get_jwt_identity() order = OrderModel.find_customer_pending_order(customer_id) if not order: return {"message": ORDER_NOT_FOUND}, 404 try: order.delete_from_db() except: return {"message": ERROR_DELETING_ORDER}, 500 return {"message": SUCCESS_DELETING_ORDER}, 200
def put(cls): customer_id = get_jwt_identity() order = OrderModel.find_customer_pending_order(customer_id) if not order: return {"message": ORDER_NOT_FOUND}, 404 order.set_status("delivered") try: order.save_to_db() except: return {"message": ERROR_UPDATING_ORDER}, 500 return {"message": SUCCESS_UPDATING_ORDER}, 200
def get(cls): customer_id = get_jwt_identity() order = OrderModel.find_customer_pending_order(customer_id) if not order: return {"message": ORDER_NOT_FOUND}, 404 items = fetching_order(order.order_items) message = order.message return { 'id': order.id, 'status': order.status, 'items': items, 'message': message }, 200