def put(self, _id, owner): parser = reqparse.RequestParser() parser.add_argument('description', type=str, required=False, help="Field name cannot be empty") parser.add_argument('quantity', type=int, required=False, help="Field name cannot be empty") parser.add_argument('price', type=float, required=False, help="Field name cannot be empty") parser.add_argument('status', type=int, required=False, help="Field name cannot be empty") parser.add_argument('owner_id', type=int, required=False, help="Field name cannot be empty") order = OrderModel.find_by_id(_id, owner) if order: payload = parser.parse_args() if payload.get('description') is not None: order.description = payload['description'] if payload.get('quantity') is not None: order.quantity = payload['quantity'] if payload.get('price') is not None: order.price = payload['price'] if payload.get('status') is not None: order.status = payload['status'] if payload.get('owner_id') is not None: order.owner_id = payload['owner_id'] order.changed = dt.datetime.now() order.save() return { 'message' : f'Order {_id} changed.', 'record' : order.json() } else: return { 'message' : f'Order {_id} not found - owner : {owner}'}, 404
def put(self, _id): claims = get_jwt_claims() if not claims['is_admin']: return {'message': 'Admin privilege required.'}, 401 parser = reqparse.RequestParser() parser.add_argument('food_id', type=list, required=True, location='json', help="every order need a list of food id!") data = Order.parser.parse_args() order = OrderModel.find_by_id(_id) if order: foods = [ FoodModel.find_by_id(food).json() for food in data['food_id'] ] total_price = sum([food['price'] for food in foods]) order.total_price = total_price order.updated_at = datetime.now() else: return {'message': 'Order not found'}, 404 try: order.save_to_db() except: return {"message": "An error occurred inserting the food."}, 500 return order.json(), 201
def get(self, _id, owner): order = OrderModel.find_by_id(_id, owner) if order: return order.json() else: return { 'message' : f'Order {_id} not found - owner : {owner}'}, 404
def get(self): data = self.parser.parse_args() this_order = OrderModel.find_by_id(data['oid']) if not this_order: return {'message': NOT_FOUND_ERROR.format(data['oid'])}, 404 return this_order.json(), 200
def put(cls): data = request.get_json() order = OrderModel.find_by_id(data['id']) order.set_status("stumbled") try: order.save_to_db() except: return {"message": ERROR_UPDATING_ORDER}, 500 return {"message": SUCCESS_UPDATING_ORDER}, 200
def get(self, id): try: order = OrderModel.find_by_id(id) except: return {'message': 'An error occured searching the order'}, 500 if order: return order.json() return {'message': 'Order not found'}, 404 # not-found
def delete(self, _id, owner): order = OrderModel.find_by_id(_id, owner) if order: order.delete() return { 'message' : f'Order {_id} deleted - owner : {owner}'} else: return { 'message' : f'Order {_id} not found - owner : {owner}'}, 404
def delete(self, _id): claims = get_jwt_claims() if not claims['is_admin']: return {'message': 'Admin privilege required.'}, 401 order = OrderModel.find_by_id(_id) if order: order.delete_from_db() return {'message': 'Order deleted'} return {'message': 'order not found.'}, 404
def put(self, id): data = Order.parser.parse_args() order = OrderModel.find_by_id(id) if order is None: order = OrderModel(**data) else: order.order_date = data['order_date'] or order.order_date order.save_to_db() return order.json()
def get(self, order_id: int): """ Devuelve los detalles de un pedido, solo si el usuario quien lo realizó o es el vendedor del producto. """ order = OrderModel.find_by_id(order_id) if not order: return { "message": f"El pedido con ID {order_id!r} no ha sido encontrado." }, 404 if order.customer_id != current_identity.id and order.vendor_id != current_identity.id: return {"message": "No tiene permitido consultar el pedido."}, 401 return order.json()
def get(cls): store_id = get_jwt_identity() orders_id = StoreOrderModel.find_by_store_id(store_id) orders = [] for store_order in orders_id: order = OrderModel.find_by_id(store_order.id) items = fetching_order(order.order_items) message = order.message orders.append({ 'id': order.id, 'status': order.status, 'items': items, 'message': message }) return orders
def post(cls): store_id = get_jwt_identity() data = request.get_json() order = OrderModel.find_by_id(data['id']) if not order: return {"message": ORDER_NOT_FOUND}, 404 if order.status != "pending": return {"message": ORDER_PICKED_ALREADY}, 400 order.set_status("picked") store_order = StoreOrderModel(store_id=store_id, order_id=order.id) try: order.save_to_db() store_order.save_to_db() except: return {"message": ERROR_PICKING_ORDER}, 500 return {"message": SUCCESS_PICKING_ORDER}, 200
def delete(self, order_id: int): """ Permite eliminar el pedido de forma que este se cancele. """ order = OrderModel.find_by_id(order_id) if not order: return { "message": f"El pedido con ID {order_id!r} no ha sido encontrado." }, 404 if current_identity.id not in [order.customer_id, order.vendor_id]: return {"message": "No tiene permitido eliminar este pedido."}, 401 order.delete_from_db() return { "message": f"Pedido con ID {order_id!r} eliminado correctamente." }
def get(self, authorization, id_): # parse the token token = parse_jwt(authorization) if not token: return { 'success': False, 'messages': ['INVALID_TOKEN'] }, 401 # get the order from the database item = OrderModel.find_by_id(id_) if item and item.user_uuid == extract_uuid(token): return { 'success': True, 'data': item.to_json() } # if the id doesn't exist, return 404 # if the user is not permitted to access this order, return 404 return { 'success': False, 'messages': ['NOT_FOUND'] }, 404
def get(cls,order_id): return order_schema.dump(OrderModel.find_by_id(order_id)), 200
def get(self, _id): order = OrderModel.find_by_id(_id) if order: return order.json() return {'message': 'Item not found'}, 404
def test_description(self): with self.app_context(): order1 = OrderModel.find_by_id(1) self.assertListEqual(["3 x test_name1", "2 x test_name"], order1.description)
def test_amount(self): with self.app_context(): order1 = OrderModel.find_by_id(1) self.assertEqual(11527, order1.amount)
def test_set_status(self): with self.app_context(): order1 = OrderModel.find_by_id(1) order1.set_status("failed") self.assertEqual("failed", order1.status)
def delete(self, id): order = OrderModel.find_by_id(id) if order: order.delete_from_db() return {'message': 'Order deleted'}