Esempio n. 1
0
    def post(self):
        now = datetime.datetime.now()
        arguments = self.json_arguments
        form = OrderForm(**arguments)

        if form.validate():
            cart_ids = self.get_arguments("cart_ids", [])
            cart_ids = list(set(cart_ids))
            consignee = self.get_argument("consignee", None)
            phone_num = self.get_argument("phone_num", None)
            address = self.get_argument("address", None)
            carts = [CartDAO.byID(self.db_session, cart_id) for cart_id in cart_ids]

            # Create Order
            total = 0
            for cart in carts:
                food = FoodDAO.byID(self.db_session, cart.food_id)
                total += food.price * cart.amount

            order = OrderDAO()
            order.user_id = self.current_user_id
            order.consignee = consignee 
            order.phone_num = phone_num
            order.address = address
            order.total = total
            order.state = ORDER_STATE["created"] 
            order.created_at = now

            order = order.add(self.db_session)

            for cart in carts:
                food = FoodDAO.byID(self.db_session, cart.food_id)
                # add order detail
                order_detail = OrderDetailDAO()
                order_detail.order_id = order.id
                order_detail.food_id = cart.food_id
                order_detail.amount = cart.amount
                order_detail.price = food.price
                order_detail.created_at = now
                order_detail.add(self.db_session)
                # delete cart detail
                cart.delete(self.db_session, cart.id)

            self._data = json_order(self.db_session, order)
            self.make_response()
            return

        self._errors["message"] = "request failed, validate parameters try again"
        raise HTTPError(422, self._errors["message"])
Esempio n. 2
0
 def get(self):
     offset = self.get_argument("offset", 0)
     limit = self.get_argument("limit", 50)
     foods = FoodDAO.get_all(self.db_session, offset=offset, limit=limit)
     self._data = [food.to_dict() for food in foods]
     self.make_response()
     return
Esempio n. 3
0
    def post(self):
        user_id = self.current_user_id
        now = datetime.datetime.now()
        arguments = self.json_arguments
        arguments["user_id"] = user_id
        form = CartForm(**arguments)
        if form.validate():
            food_id = self.get_argument("food_id", None)
            amount = self.get_argument("amount", 0)
            cart = CartDAO.get_by_user_and_food(self.db_session, user_id,
                                                food_id)
            # TODO check amount == 0
            if cart:
                cart.amount = amount
            else:
                cart = CartDAO(**arguments)
                cart.created_at = now
            cart.has_ordered = 0
            cart.updated_at = now
            try:
                cart = cart.add(self.db_session).to_dict()
                cart["food"] = FoodDAO.byID(self.db_session,
                                            cart.food_id).to_dict()
                self._data = cart
                self.make_response()
                return
            except Exception as e:
                print(e)

        self._errors[
            "message"] = "request failed, validate parameters try again"
        raise HTTPError(422, self._errors["message"])
Esempio n. 4
0
    def post(self):
        user_id = self.current_user_id
        now = datetime.datetime.now()
        arguments = self.json_arguments
        arguments["user_id"] = user_id
        form = CartForm(**arguments)
        if form.validate():
            food_id = self.get_argument("food_id", None)
            amount = self.get_argument("amount", 0)
            cart = CartDAO.get_by_user_and_food(self.db_session, user_id, food_id)
            # TODO check amount == 0
            if cart:
                cart.amount = amount
            else:
                cart = CartDAO(**arguments)
                cart.created_at = now
            cart.has_ordered = 0
            cart.updated_at = now
            try:
                cart = cart.add(self.db_session).to_dict()
                cart["food"] = FoodDAO.byID(self.db_session, cart.food_id).to_dict()
                self._data = cart
                self.make_response()
                return
            except Exception as e:
                print(e)

        self._errors["message"] = "request failed, validate parameters try again"
        raise HTTPError(422, self._errors["message"])
Esempio n. 5
0
 def prepare(self):
     super(FoodDetailHandler, self).prepare()
     try:
         self.food_id = self.path_args[0]
         self.food = FoodDAO.byID(self.db_session, self.food_id)
     except Exception as e:
         self._errors[
             "message"] = "request failed, the specified resource does not exist"
         raise HTTPError(404, self._errors["message"])
         return
     self.owner_id = self.post.owner_id
Esempio n. 6
0
    def post(self):
        now = datetime.datetime.now()
        arguments = self.json_arguments
        form = FoodForm(**arguments)
        user_id = self.current_user_id
        arguments["records"] = 0

        if form.validate():
            post = FoodDAO(**arguments)
            post.created_at = now
            try:
                post = post.add(self.db_session)
                self._data = post.to_dict()
                self.make_response()
                return
            except Exception as e:
                print(e)

        self._errors[
            "message"] = "request failed, validate parameters try again"
        raise HTTPError(422, self._errors["message"])
Esempio n. 7
0
def json_order(db_session, order):
    _order = order.to_dict() 
    _order["foods"] = []

    order_detail_list = OrderDetailDAO.by_order_id(db_session, order.id)
    for detail in order_detail_list:
        food  = FoodDAO.byID(db_session, detail.food_id)
        _food = detail.to_dict()
        _food["name"] = food.name
        _food["cover"] = food.cover
        _order["foods"].append(_food)
    return _order
Esempio n. 8
0
    def get(self):
        user_id = self.current_user_id
        offset = self.get_argument("offset", 0)
        limit = self.get_argument("limit", 50)
        cart_list = CartDAO.get_all_by_user(self.db_session, user_id, offset=offset, limit=limit)

        cart_list = [cart.to_dict() for cart in cart_list]
        for cart in cart_list:
            cart["food"] = FoodDAO.byID(self.db_session, cart["food_id"]).to_dict()

        self._data = cart_list
        self.make_response()
        return
Esempio n. 9
0
    def delete(self):
        user_id = self.current_user_id
        cart_id = self.get_argument("cart_id", 0)
        cart= CartDAO.byID(self.db_session, cart_id)

        # Authorized
        if cart.user_id == user_id:
            self.make_response()
            cart.delete(self.db_session, cart_id)
            cart["food"] = FoodDAO.byID(self.db_session, cart.food_id).to_dict()
            self._data = cart.to_dict()
            self.make_response()
            return

        self._errors["message"] = "request not authorized, provided credentials do not provide access to specified resource" 
        raise HTTPError(403, self._errors["message"])
Esempio n. 10
0
    def get(self):
        user_id = self.current_user_id
        offset = self.get_argument("offset", 0)
        limit = self.get_argument("limit", 50)
        cart_list = CartDAO.get_all_by_user(self.db_session,
                                            user_id,
                                            offset=offset,
                                            limit=limit)

        cart_list = [cart.to_dict() for cart in cart_list]
        for cart in cart_list:
            cart["food"] = FoodDAO.byID(self.db_session,
                                        cart["food_id"]).to_dict()

        self._data = cart_list
        self.make_response()
        return
Esempio n. 11
0
    def delete(self):
        user_id = self.current_user_id
        cart_id = self.get_argument("cart_id", 0)
        cart = CartDAO.byID(self.db_session, cart_id)

        # Authorized
        if cart.user_id == user_id:
            self.make_response()
            cart.delete(self.db_session, cart_id)
            cart["food"] = FoodDAO.byID(self.db_session,
                                        cart.food_id).to_dict()
            self._data = cart.to_dict()
            self.make_response()
            return

        self._errors[
            "message"] = "request not authorized, provided credentials do not provide access to specified resource"
        raise HTTPError(403, self._errors["message"])