From 69a5a818ea6b071392e27408dcd5a52130d44619 Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Thu, 8 Nov 2018 13:15:23 +0300 Subject: [PATCH] [finish #161698887] get the number of delivered orders for specific user --- app/api/v1/__init__.py | 3 ++- app/api/v1/models/orders_model.py | 12 ++++++++++++ app/api/v1/views/users_view.py | 13 +++++++++++++ app/tests/test_views.py | 4 ++-- 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/app/api/v1/__init__.py b/app/api/v1/__init__.py index 5929448..abc58f9 100644 --- a/app/api/v1/__init__.py +++ b/app/api/v1/__init__.py @@ -1,7 +1,7 @@ from flask_restful import Api, Resource from flask import Blueprint from app.api.v1.views.orders_view import DeliveryOrders, DeliveryOrder, DeliveryOrderUpdate, DeliveryOrderDeliveryUpdate -from app.api.v1.views.users_view import UserOrders +from app.api.v1.views.users_view import UserOrders, UserDeliveredOrders version1 = Blueprint('sendit', __name__, url_prefix="/api/v1") @@ -12,3 +12,4 @@ api.add_resource(DeliveryOrderUpdate, '/parcels//cancel') api.add_resource(DeliveryOrderDeliveryUpdate, '/parcels//change-delivery') api.add_resource(UserOrders, '/users//parcels') +api.add_resource(UserDeliveredOrders, '/users//delivered') diff --git a/app/api/v1/models/orders_model.py b/app/api/v1/models/orders_model.py index 036f4e6..026bf20 100644 --- a/app/api/v1/models/orders_model.py +++ b/app/api/v1/models/orders_model.py @@ -106,3 +106,15 @@ def get_user_orders(self, user_id): user_orders.append(order) return user_orders + + def get_delivered_orders(self, user_id): + user_orders = [] + for order in orders: + if order['sender'] == user_id and order['status'] == 'delivered': + for user in self.users: + if user['user id'] == order['sender']: + order['sender'] = user['username'] + break + user_orders.append(order) + + return len(user_orders) diff --git a/app/api/v1/views/users_view.py b/app/api/v1/views/users_view.py index bf93914..75a9a77 100644 --- a/app/api/v1/views/users_view.py +++ b/app/api/v1/views/users_view.py @@ -15,3 +15,16 @@ def get(self, userId): result = self.orders.get_user_orders(userId) return make_response(jsonify({"Title": "Delivery orders by " + user['username'], "Delivery orders list": result})) + + +class UserDeliveredOrders(Resource, UsersModel, OrdersModel): + + def __init__(self): + self.db = UsersModel() + self.orders = OrdersModel() + + def get(self, userId): + user = self.db.get_user(userId) + result = self.orders.get_delivered_orders(userId) + + return make_response(jsonify({"Delivered orders for " + user['username'] : result})) diff --git a/app/tests/test_views.py b/app/tests/test_views.py index 3bf0d2d..6ef4252 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -108,11 +108,11 @@ def test_get_delivered_orders_for_user(self): self.assertEqual(response.status_code, 201) response = self.app.get( - '/api/v1/users/1/parcels', content_type='application/json') + '/api/v1/users/1/delivered', content_type='application/json') self.assertEqual(response.status_code, 200) result = json.loads(response.data) - self.assertIn('delivered', str(result)) + self.assertIn('Delivered', str(result)) def test_get_in_transit_orders_for_user(self): response = self.app.post(