示例#1
0
 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
示例#2
0
 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
示例#3
0
 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
     }
示例#4
0
 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
示例#6
0
 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