From 1e8845cf0883da8392216c34c27afb999804b52b Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Thu, 8 Nov 2018 17:19:27 +0300 Subject: [PATCH] [finish #161698868] get the number of orders in transit for user --- .travis.yml | 13 +++++++++++++ app/__init__.py | 1 + app/api/v1/__init__.py | 3 ++- app/api/v1/models/orders_model.py | 14 ++++++-------- app/api/v1/views/users_view.py | 12 ++++++++++++ app/config.py | 4 ++++ config.py | 0 requirements.txt | 8 ++++++++ 8 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 .travis.yml create mode 100644 app/config.py delete mode 100644 config.py diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..6f63ace --- /dev/null +++ b/.travis.yml @@ -0,0 +1,13 @@ +language: python + +python: + - "3.6.7" + +install: + - pip install -r requirements.txt + +script: + - pytest + +after_success: +- coveralls \ No newline at end of file diff --git a/app/__init__.py b/app/__init__.py index fdee732..a9f4256 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -4,6 +4,7 @@ def create_app(): app = Flask(__name__) + app.config.from_pyfile('config.py') app.register_blueprint(v1) return app diff --git a/app/api/v1/__init__.py b/app/api/v1/__init__.py index abc58f9..a029bf0 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, UserDeliveredOrders +from app.api.v1.views.users_view import UserOrders, UserDeliveredOrders, UserOrdersInTransit version1 = Blueprint('sendit', __name__, url_prefix="/api/v1") @@ -13,3 +13,4 @@ api.add_resource(DeliveryOrderDeliveryUpdate, '/parcels//change-delivery') api.add_resource(UserOrders, '/users//parcels') api.add_resource(UserDeliveredOrders, '/users//delivered') +api.add_resource(UserOrdersInTransit, '/users//in-transit') diff --git a/app/api/v1/models/orders_model.py b/app/api/v1/models/orders_model.py index 026bf20..a1396e1 100644 --- a/app/api/v1/models/orders_model.py +++ b/app/api/v1/models/orders_model.py @@ -108,13 +108,11 @@ def get_user_orders(self, user_id): 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) + user_orders = [order for order in orders if (order['sender'] == user_id and order['status'] == 'delivered')] + + return len(user_orders) + + def get_orders_in_transit(self, user_id): + user_orders = [order for order in orders if (order['sender'] == user_id and order['status'] == 'in transit')] return len(user_orders) diff --git a/app/api/v1/views/users_view.py b/app/api/v1/views/users_view.py index 75a9a77..aca78aa 100644 --- a/app/api/v1/views/users_view.py +++ b/app/api/v1/views/users_view.py @@ -28,3 +28,15 @@ def get(self, userId): result = self.orders.get_delivered_orders(userId) return make_response(jsonify({"Delivered orders for " + user['username'] : result})) + +class UserOrdersInTransit(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_orders_in_transit(userId) + + return make_response(jsonify({"Orders in-transit for " + user['username'] : result})) diff --git a/app/config.py b/app/config.py new file mode 100644 index 0000000..555e977 --- /dev/null +++ b/app/config.py @@ -0,0 +1,4 @@ +class Config(object): + DEBUG = True # Turns on debugging features in Flask + CSRF_ENABLED = True + SECRET_KEY = "mnswalehsentit" \ No newline at end of file diff --git a/config.py b/config.py deleted file mode 100644 index e69de29..0000000 diff --git a/requirements.txt b/requirements.txt index 3536796..222500a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,9 +3,15 @@ astroid==2.0.4 atomicwrites==1.2.1 attrs==18.2.0 autopep8==1.4.2 +certifi==2018.10.15 +chardet==3.0.4 Click==7.0 +coverage==4.5.1 +coveralls==1.5.1 +docopt==0.6.2 Flask==1.0.2 Flask-RESTful==0.3.6 +idna==2.7 isort==4.3.4 itsdangerous==1.1.0 Jinja2==2.10 @@ -19,7 +25,9 @@ pycodestyle==2.4.0 pylint==2.1.1 pytest==3.10.0 pytz==2018.7 +requests==2.20.0 six==1.11.0 typed-ast==1.1.0 +urllib3==1.24.1 Werkzeug==0.14.1 wrapt==1.10.11