Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
    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()
Ejemplo n.º 10
0
    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()
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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."
        }
Ejemplo n.º 14
0
    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
Ejemplo n.º 15
0
    def get(cls,order_id):

        return order_schema.dump(OrderModel.find_by_id(order_id)), 200
Ejemplo n.º 16
0
 def get(self, _id):
     order = OrderModel.find_by_id(_id)
     if order:
         return order.json()
     return {'message': 'Item not found'}, 404
Ejemplo n.º 17
0
 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)
Ejemplo n.º 18
0
 def test_amount(self):
     with self.app_context():
         order1 = OrderModel.find_by_id(1)
         self.assertEqual(11527, order1.amount)
Ejemplo n.º 19
0
 def test_set_status(self):
     with self.app_context():
         order1 = OrderModel.find_by_id(1)
         order1.set_status("failed")
         self.assertEqual("failed", order1.status)
Ejemplo n.º 20
0
    def delete(self, id):
        order = OrderModel.find_by_id(id)
        if order:
            order.delete_from_db()

        return {'message': 'Order deleted'}