def post(self): """Create a new menu item""" args = self.parser.parse_args() name = args.get("name", "") description = args.get("description", "") price = args.get("price", "") if empty(name) or empty(description) or empty(price): return { "message": "You have to specify all" " details of an item" " such as name, price, description" }, 403 if not valid_name(name): return {"message": "Please specify a valid name for item"}, 403 if not valid_price(price): return { "message": "Please specify a valid price" " for the item" }, 403 if not valid_description(description): return { "message": "Please specify a valid description " "for the item" } menu_item = Menu(name, description, price) saved = menu_item.save() if saved: return { "message": "The menu item was successfully saved", "data": menu_item.json1 }, 201 return {"message": "There was problem saving the item. Try again"}, 403
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): args = self.parser.parse_args() fullnames = args.get("fullnames", "") username = args.get("username", "") email = args.get("email", "") password = args.get("password", "") confirm_pass = args.get("confirm_pass", "") if empty(fullnames) or empty(username) or empty(email) or empty( password) or empty(confirm_pass): return {"message": "All the fields are required"}, 400 if not validate_fullname(fullnames): return { "message": "Please enter a valid full name" " it should contain first and last name which" " start with capital letters" }, 400 if not validate_username(username): return { "message": "Please specify a valid username " " a username should contain lowercase" " letters only and be between 6 to 12 letters" }, 400 if not validate_email(email): return {"message": "Please enter a valid email address"}, 400 if not validate_password(password): return { "message": "Please enter a valid password" " it must contain atleast one" " lowercase, uppercase special character and a" " number" }, 400 user = User(fullnames, username, password, email) if not check_password_hash(user.password, confirm_pass): return { "message": "The password and the verifications don't" " match" }, 400 saved = user.save() if not saved: return {"message": "The username or email is already in use"}, 400 return { "message": "You successfully signed up you can now login", "data": user.json1 }
def put(self, menu_id): """Update a menu item""" menu = Menu.find_by_id(meal_id=menu_id) if menu is None: return { "message": "The menu item with an id number %s doesn't" " exist" % menu_id }, 404 args = self.parser.parse_args() name = args.get("name", "") description = args.get("description", "") price = args.get("price", "") if empty(name) or empty(description) or empty(price): return { "message": "You have to specify all" " details of an item" " such as name, price, description" }, 403 if not valid_name(name): return {"message": "Please specify a valid name for item"}, 403 if not valid_price(price): return { "message": "Please specify a valid price" " for the item" }, 403 if not valid_description(description): return { "message": "Please specify a valid description " "for the item" } menu_item = Menu(name, description, 200) menu_item.id = menu.id updated = menu_item.update() if updated: return { "message": "The menu item was successfully updated", "menu_item": menu_item.json }, 200 else: return { "message": "There was a problem updating the menu item" " maybe you provided a name already taken by" " another menu item" }, 400
def post(self): details = get_details_from_token(claims) args = self.parser.parse_args() town = args.get("town", "") street = args.get("street", "") phone = args.get("phone", "") if empty(phone) or empty(town) or empty(street): return {"message": "Please provide a phone, street and town"}, 400 if not validate_phone(phone): return {"message": "Invalid phone number please provide a valid phone number starting with 07"}, 400 address = Address(town, street, phone) if not details.get("id", ""): return {"message": "We could not verify your token please try again"}, 403 saved = address.save(user_id=details.get("id", "")) if saved: return {"message": "The address was successfully saved", "data": address.json}, 200 return {"message": "There was a problem saving the address to the database"}, 400
def put(self, order_id=None): """Update the status of an order by cancelling it""" args = self.parser.parse_args() status = args.get("status", "") if order_id is None: return {"message": "Missing order_id in your url"}, 400 if empty(status): return { "message": "Please provide a status to change the order %s's status to" % order_id }, 403 order = Order.find_by_id(ids=order_id) if order is None: return { "message": "The order with order_id %s was not " "found" % order_id }, 404 order.status = status return order