diff --git a/app/api/v1/__init__.py b/app/api/v1/__init__.py index 5e4afb6..7998fdb 100644 --- a/app/api/v1/__init__.py +++ b/app/api/v1/__init__.py @@ -1,6 +1,6 @@ from flask_restful import Api, Resource from flask import Blueprint -from app.api.v1.views.orders_view import DeliveryOrders, DeliveryOrder +from app.api.v1.views.orders_view import DeliveryOrders, DeliveryOrder, DeliveryOrderUpdate from app.api.v1.views.users_view import UserOrders version1 = Blueprint('sendit', __name__, url_prefix="/api/v1") @@ -9,4 +9,5 @@ api.add_resource(DeliveryOrders, '/parcels') api.add_resource(DeliveryOrder, '/parcels/') +api.add_resource(DeliveryOrderUpdate, '/parcels//cancel') api.add_resource(UserOrders, '/users//parcels') diff --git a/app/api/v1/models/orders_model.py b/app/api/v1/models/orders_model.py index 5c90d3f..82ec466 100644 --- a/app/api/v1/models/orders_model.py +++ b/app/api/v1/models/orders_model.py @@ -13,6 +13,7 @@ "sender": 1 }] + class OrdersModel(object): def __init__(self): @@ -60,6 +61,17 @@ def get_order(self, order_id): return result + def cancel_order(self, order_id): + result = {"message": "order unknown"} + + for order in orders: + if order['order no'] == order_id: + order['status'] = "canceled" + result = order + break + + return result + def get_user_orders(self, user_id): user_orders = [order for order in orders if order['sender'] == user_id] diff --git a/app/api/v1/views/orders_view.py b/app/api/v1/views/orders_view.py index c8161f0..07d71be 100644 --- a/app/api/v1/views/orders_view.py +++ b/app/api/v1/views/orders_view.py @@ -33,5 +33,20 @@ def get(self, parcelId): result = self.db.get_order(parcelId) return make_response(jsonify(result)) + + def put(self, parcelId): + result = self.db.cancel_order(parcelId) + + return make_response(jsonify(result)) + +class DeliveryOrderUpdate(Resource, OrdersModel): + + def __init__(self): + self.db = OrdersModel() + + def put(self, parcelId): + result = self.db.cancel_order(parcelId) + + return make_response(jsonify({"message": "order " + parcelId + " is canceled!", "Order " + parcelId: result}))