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
9 changes: 5 additions & 4 deletions app/api/v1/__init__.py
Original file line number Diff line number Diff line change
@@ -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/<parcelId>')
api.add_resource(DeliveryOrders, '/parcels')
api.add_resource(DeliveryOrder, '/parcels/<parcelId>')
api.add_resource(UserOrders, '/users/<int:userId>/parcels')
Empty file added app/api/v1/models/__init__.py
Empty file.
26 changes: 13 additions & 13 deletions app/api/v1/models.py → app/api/v1/models/orders_model.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from datetime import date
from .users_model import UsersModel
orders = [{
"order id": 1,
"order no": "678356",
Expand All @@ -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()

Expand All @@ -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']:
Expand All @@ -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
return result

def get_user_orders(self, user_id):
user_orders = [order for order in orders if order['sender'] == user_id]

return user_orders
32 changes: 32 additions & 0 deletions app/api/v1/models/users_model.py
Original file line number Diff line number Diff line change
@@ -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]
16 changes: 0 additions & 16 deletions app/api/v1/views.py

This file was deleted.

Empty file added app/api/v1/views/__init__.py
Empty file.
37 changes: 37 additions & 0 deletions app/api/v1/views/orders_view.py
Original file line number Diff line number Diff line change
@@ -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))


17 changes: 17 additions & 0 deletions app/api/v1/views/users_view.py
Original file line number Diff line number Diff line change
@@ -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}))
15 changes: 15 additions & 0 deletions app/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -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()