From ae96263a522921d45b09f922aff006c5e9ea179a Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Mon, 1 Jun 2020 04:57:29 +0530 Subject: [PATCH] refactor: Use OrderAmountInputSchema --- app/api/custom/orders.py | 5 +++-- app/api/custom/schema/order_amount.py | 12 ++++++++++++ app/api/helpers/order.py | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 app/api/custom/schema/order_amount.py diff --git a/app/api/custom/orders.py b/app/api/custom/orders.py index 595915c25a..5f0c90ca5a 100644 --- a/app/api/custom/orders.py +++ b/app/api/custom/orders.py @@ -18,6 +18,7 @@ from app.api.helpers.order import calculate_order_amount, create_pdf_tickets_for_holder from app.api.helpers.permission_manager import has_access from app.api.helpers.storage import UPLOAD_PATHS, generate_hash +from app.api.custom.schema.order_amount import OrderAmountInputSchema from app.api.schema.attendees import AttendeeSchema from app.api.schema.orders import OrderSchema from app.extensions.limiter import limiter @@ -115,8 +116,8 @@ def resend_emails(): @order_blueprint.route('/calculate-amount', methods=['POST']) def calculate_amount(): - data = request.get_json() - return jsonify(calculate_order_amount(data['tickets'], data.get('discount-code'))) + data, errors = OrderAmountInputSchema().load(request.get_json()) + return jsonify(calculate_order_amount(data['tickets'], data.get('discount_code'))) @order_blueprint.route('/create-order', methods=['POST']) diff --git a/app/api/custom/schema/order_amount.py b/app/api/custom/schema/order_amount.py new file mode 100644 index 0000000000..262dceed2c --- /dev/null +++ b/app/api/custom/schema/order_amount.py @@ -0,0 +1,12 @@ +from marshmallow import Schema, fields + + +class TicketSchema(Schema): + id = fields.Integer(required=True) + quantity = fields.Integer(default=1) + price = fields.Float() + + +class OrderAmountInputSchema(Schema): + tickets = fields.Nested(TicketSchema, many=True) + discount_code = fields.Integer(load_from='discount-code') diff --git a/app/api/helpers/order.py b/app/api/helpers/order.py index 33afe584da..ab5dac8c59 100644 --- a/app/api/helpers/order.py +++ b/app/api/helpers/order.py @@ -278,7 +278,7 @@ def calculate_order_amount(tickets, discount_code=None): included=tax_included, amount=round(total_tax, 2), percent=tax.rate if tax else 0.0, - name=tax.name + name=tax.name, ) return dict(