def get(self, address_id=None): if address_id is None: users = db.get_item("users") else: address = Address.find_by_id(address_id) if address is None: return { "code": "404", "message": "The address was not found in our database" }, 200 return {"ok": True, "code": "200", "data": address.json}, 200 res = [] if users == []: return { "code": "404", "message": "No addresses were found in the database" }, 200 for user in users: res += users[user].addresses if len(res) == 0: return { "code": "404", "message": "No addresses were found in the database" }, 200 return {"ok": True, "data": [address.json for address in res]}, 200
def get(self, address_id=None): user_id = get_details_from_token(claims).get("id", "0") if address_id is None: addresses = Address.all(user_id=user_id) if not addresses: return {"message": "You currently don't have any addresses. Add one first"}, 404 res = [address.json1 for address in addresses] return {"message":"success", "addresses":res}, 200 address = Address.find_by_id(user_id=user_id) if not address: return {"message": "The address with id %s was not found in your addresses" % ( address_id )} return {"message": "success", "address": address.json1}
def post(self): """Create a new order""" args = self.parser.parse_args() address_id = args.get("address", "") items = args.get("items", "") customer_id = details(claims).get("id", "0") if empty(address_id) or empty(items): return { "message": "Please specify an address and a list of" " items" }, 400 address = Address.find_by_id(address_id=address_id, user_id=customer_id) if not address or len(address) == 0: return { "message": "The address you provided is not valid" " please check your addresses and give a" " valid id" }, 400 items = items.split(",") new_items = [int(item) for item in items if item.strip() != ''] copy_items = set(new_items) new_items = list(new_items) ordered_items = [] total = 0.00 for item in copy_items: item_object = Menu.find_by_id(meal_id=item) if item_object is None: return { "message": "The item with id %s does not exist." ". Try another" % item }, 404 item_object.quantity = new_items.count(item) total += float(item_object.price * item_object.quantity) ordered_items.append(item_object) order = Order(customer_id, address_id, ordered_items) order.total = total saved = order.save() if not saved: return { "message": "There was a problem placing the order please try again" }, 400 return { "message": "The order was successfully placed", "order": order.json1 }, 200
def post(self, order_id=None): empty = lambda x: len(x.strip()) == 0 if order_id is None: self.parser.add_argument( "user_id", required=True, help="You cannot place an order anonymously") self.parser.add_argument( "address", required=True, help="Please specify an address to ship your order to") self.parser.add_argument( "items", required=True, help="You cannot order nothing please specify some items") args = self.parser.parse_args() user_id = args.get("user_id") address = args.get("address") items = args.get("items") if empty(user_id) or empty(address) or empty(items): return { "ok": False, "code": "400", "message": "Please make sure you have no missing requirements for an order" }, 200 user = User.get_by_id(int(user_id)) if user is None: return { "ok": False, "code": "400", "message": "Could not recognize the person who's trying to place the order" }, 200 add = Address.find_by_id(address) print(add) if add is None: return { "ok": False, "code": "404", "message": "Could not find the specified address first add an address" }, 200 items = items.split(",") products = [Product.get_by_id(int(item)) for item in items] else: self.parser.add_argument( "status", required=True, help= "Please specify whether to accept, reject or mark order as complete" ) order = Order.get_by_id(order_id) if order is None: return { "code": "404", "ok": False, "message": "Couldn't find the order specified try another" }, 200