From e793d2719cfb8a26f57356d216a8582d159d3620 Mon Sep 17 00:00:00 2001 From: mrsaicharan1 Date: Tue, 2 Jul 2019 11:10:11 +0530 Subject: [PATCH 1/2] Removed multi-row error Add try except block for other cases --- app/api/helpers/order.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/api/helpers/order.py b/app/api/helpers/order.py index 4b0d3015fb..c5fd267609 100644 --- a/app/api/helpers/order.py +++ b/app/api/helpers/order.py @@ -2,6 +2,7 @@ from datetime import timedelta, datetime, timezone from flask import render_template +from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound from app.settings import get_settings from app.api.helpers import ticketing @@ -73,7 +74,14 @@ def create_pdf_tickets_for_holder(order): save_to_db(holder) # create order invoices pdf - order_ticket_info = OrderTicket.query.filter_by(order_id=order.id).one() + order_ticket_info_object = OrderTicket.query.filter_by(order_id=order.id) + try: + order_ticket_info = order_ticket_info_object.one() + except MultipleResultsFound: + order_ticket_info = order_ticket_info_object.first() + except NoResultFound: + raise UnprocessableEntity({'pointer': ''}, 'Order Ticket Info missing.') + create_save_pdf(render_template('pdf/order_invoice.html', order=order, event=order.event, tax=order.event.tax, tickets=order.tickets, order_tickets_info=order_ticket_info), UPLOAD_PATHS['pdf']['order'], dir_path='/static/uploads/pdf/tickets/', From f26c4226130cf6347459eafcaf3c8bafa5775411 Mon Sep 17 00:00:00 2001 From: mrsaicharan1 Date: Tue, 2 Jul 2019 16:02:36 +0530 Subject: [PATCH 2/2] Refactored order invoice & fixed multiple entries bug Used order_ticket.ticket --- app/api/helpers/order.py | 11 ++--------- app/templates/pdf/order_invoice.html | 14 +++++++------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/app/api/helpers/order.py b/app/api/helpers/order.py index c5fd267609..e1806efa17 100644 --- a/app/api/helpers/order.py +++ b/app/api/helpers/order.py @@ -2,7 +2,6 @@ from datetime import timedelta, datetime, timezone from flask import render_template -from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound from app.settings import get_settings from app.api.helpers import ticketing @@ -74,16 +73,10 @@ def create_pdf_tickets_for_holder(order): save_to_db(holder) # create order invoices pdf - order_ticket_info_object = OrderTicket.query.filter_by(order_id=order.id) - try: - order_ticket_info = order_ticket_info_object.one() - except MultipleResultsFound: - order_ticket_info = order_ticket_info_object.first() - except NoResultFound: - raise UnprocessableEntity({'pointer': ''}, 'Order Ticket Info missing.') + order_tickets = OrderTicket.query.filter_by(order_id=order.id, deleted_at=None).all() create_save_pdf(render_template('pdf/order_invoice.html', order=order, event=order.event, - tax=order.event.tax, tickets=order.tickets, order_tickets_info=order_ticket_info), + tax=order.event.tax, order_tickets=order_tickets), UPLOAD_PATHS['pdf']['order'], dir_path='/static/uploads/pdf/tickets/', identifier=order.identifier, upload_dir='generated/invoices/') save_to_db(order) diff --git a/app/templates/pdf/order_invoice.html b/app/templates/pdf/order_invoice.html index 16b810d8e2..1a7279444e 100644 --- a/app/templates/pdf/order_invoice.html +++ b/app/templates/pdf/order_invoice.html @@ -180,23 +180,23 @@

{{ ("Order Invoice") }}

- {% for ticket in tickets %} + {% for order_ticket in order_tickets %} - {{ ticket.name }} - {{ event.payment_currency | currency_symbol }}{{ ticket.price }} - {{ order_tickets_info.quantity }} - {{ event.payment_currency | currency_symbol }}{{ order_tickets_info.quantity*ticket.price }} + {{ order_ticket.ticket.name }} + {{ event.payment_currency | currency_symbol }}{{ order_ticket.ticket.price }} + {{ order_ticket.quantity }} + {{ event.payment_currency | currency_symbol }}{{ order_ticket.quantity*order_ticket.ticket.price }} {% if tax %} {{ tax.rate }}% {% else %} {{ ("0%") }} {% endif %} {% if tax %} - {{ event.payment_currency | currency_symbol }}{{ tax.rate*ticket.price/100 }} + {{ event.payment_currency | currency_symbol }}{{ tax.rate*order_ticket.ticket.price/100 }} {% else %} {{ event.payment_currency | currency_symbol }}0 {% endif %} - + {% endfor %}