Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion app/api/v1/__init__.py
Original file line number Diff line number Diff line change
@@ -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")

Expand All @@ -12,3 +12,4 @@
api.add_resource(DeliveryOrderUpdate, '/parcels/<parcelId>/cancel')
api.add_resource(DeliveryOrderDeliveryUpdate, '/parcels/<parcelId>/change-delivery')
api.add_resource(UserOrders, '/users/<int:userId>/parcels')
api.add_resource(UserDeliveredOrders, '/users/<int:userId>/delivered')
12 changes: 12 additions & 0 deletions app/api/v1/models/orders_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
13 changes: 13 additions & 0 deletions app/api/v1/views/users_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}))
4 changes: 2 additions & 2 deletions app/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down