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"])
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
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"])
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"])
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
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"])
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
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
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"])
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"])