Exemple #1
0
    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