diff --git a/app/api/v1/__init__.py b/app/api/v1/__init__.py index 1662d67..5e4afb6 100644 --- a/app/api/v1/__init__.py +++ b/app/api/v1/__init__.py @@ -1,11 +1,12 @@ from flask_restful import Api, Resource from flask import Blueprint -from app.api.v1.views import DelieryOrders, DelieryOrder +from app.api.v1.views.orders_view import DeliveryOrders, DeliveryOrder +from app.api.v1.views.users_view import UserOrders version1 = Blueprint('sendit', __name__, url_prefix="/api/v1") api = Api(version1) -api.add_resource(DelieryOrders, '/parcels') - -api.add_resource(DelieryOrder, '/parcels/') +api.add_resource(DeliveryOrders, '/parcels') +api.add_resource(DeliveryOrder, '/parcels/') +api.add_resource(UserOrders, '/users//parcels') diff --git a/app/api/v1/models/__init__.py b/app/api/v1/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/models.py b/app/api/v1/models/orders_model.py similarity index 79% rename from app/api/v1/models.py rename to app/api/v1/models/orders_model.py index 5944f61..5c90d3f 100644 --- a/app/api/v1/models.py +++ b/app/api/v1/models/orders_model.py @@ -1,4 +1,5 @@ from datetime import date +from .users_model import UsersModel orders = [{ "order id": 1, "order no": "678356", @@ -12,19 +13,11 @@ "sender": 1 }] -users = [{ - "user id": 1, - "username": "tom", - "first name": "thomas", - "second name": "wakati", - "email": "email@gmail.com", - "gender": "male", - "location": "eldoret" -}] - - class OrdersModel(object): + def __init__(self): + self.user = UsersModel() + def create_order(self, order_no, pick_up, delivery, weight, price, sender): today = date.today() @@ -48,6 +41,7 @@ def create_order(self, order_no, pick_up, delivery, weight, price, sender): return order def get_orders(self): + users = self.user.get_users() for order in orders: for user in users: if user['user id'] == order['sender']: @@ -57,10 +51,16 @@ def get_orders(self): return orders def get_order(self, order_id): - result = {"message" : "order unknown"} + result = {"message": "order unknown"} + for order in orders: if order['order no'] == order_id: result = order break - return result \ No newline at end of file + return result + + def get_user_orders(self, user_id): + user_orders = [order for order in orders if order['sender'] == user_id] + + return user_orders diff --git a/app/api/v1/models/users_model.py b/app/api/v1/models/users_model.py new file mode 100644 index 0000000..f79e275 --- /dev/null +++ b/app/api/v1/models/users_model.py @@ -0,0 +1,32 @@ +users = [{ + "user id": 1, + "username": "tom", + "first name": "thomas", + "second name": "wakati", + "email": "email@gmail.com", + "gender": "male", + "location": "eldoret", + "password": "123456", + "type": "user" + }, + { + "user id": 2, + "username": "tosh", + "first name": "samwel", + "second name": "toroka", + "email": "tosh@gmail.com", + "gender": "male", + "location": "kisumu", + "password": "123456", + "type": "admin" + }] + + +class UsersModel(object): + + def get_users(self): + return users + + def get_user(self, user_id): + my_user = [user for user in users if user['user id'] == user_id] + return my_user[0] diff --git a/app/api/v1/views.py b/app/api/v1/views.py deleted file mode 100644 index 05238ef..0000000 --- a/app/api/v1/views.py +++ /dev/null @@ -1,16 +0,0 @@ -from flask import Flask, make_response, jsonify, request -from flask_restful import Resource -from app.api.v1.models import OrdersModel - - -class DelieryOrders(Resource, OrdersModel): - - def __init__(self): - pass - - -class DelieryOrder(Resource, OrdersModel): - - def __init__(self): - pass - diff --git a/app/api/v1/views/__init__.py b/app/api/v1/views/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/views/orders_view.py b/app/api/v1/views/orders_view.py new file mode 100644 index 0000000..c8161f0 --- /dev/null +++ b/app/api/v1/views/orders_view.py @@ -0,0 +1,37 @@ +from flask import Flask, make_response, jsonify, request +from flask_restful import Resource, reqparse +from app.api.v1.models.orders_model import OrdersModel +from app.api.v1.models.users_model import UsersModel + + +class DeliveryOrders(Resource, OrdersModel, UsersModel): + + def __init__(self): + self.db = OrdersModel() + + def get(self): + result = self.db.get_orders() + + return make_response(jsonify({"Title": "Delivery orders", "Delivery orders list": result})) + + def post(self): + + data = request.get_json(force = True) + + result = self.db.create_order(data['order no'], data['pick up location'], + data['delivery location'], data['weight'], data['price'], data['sender']) + + return make_response(jsonify(result), 201) + + +class DeliveryOrder(Resource, OrdersModel): + + def __init__(self): + self.db = OrdersModel() + + def get(self, parcelId): + result = self.db.get_order(parcelId) + + return make_response(jsonify(result)) + + diff --git a/app/api/v1/views/users_view.py b/app/api/v1/views/users_view.py new file mode 100644 index 0000000..bf93914 --- /dev/null +++ b/app/api/v1/views/users_view.py @@ -0,0 +1,17 @@ +from flask import Flask, make_response, jsonify, request +from flask_restful import Resource, reqparse +from app.api.v1.models.users_model import UsersModel +from app.api.v1.models.orders_model import OrdersModel + + +class UserOrders(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_user_orders(userId) + + return make_response(jsonify({"Title": "Delivery orders by " + user['username'], "Delivery orders list": result})) diff --git a/app/tests/test_views.py b/app/tests/test_views.py new file mode 100644 index 0000000..f28b4ce --- /dev/null +++ b/app/tests/test_views.py @@ -0,0 +1,15 @@ +# from app import create_app +# import unittest +# import json + +# class TestDeliveryOrders(unittest.TestCase): +# def setUp(self): +# create_app().testing = True +# self.app = create_app().test_client() +# self.data = {} + +# def test_get_orders(self): +# response = self.app.get() + +# if __name__ == '__main__': +# unittest.main() \ No newline at end of file