From 9354817dd7113c32983d5cd8b68be01cbcdc4bf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ho=CC=88rler?= Date: Tue, 27 Feb 2018 22:11:02 +0100 Subject: [PATCH] fix excepton if user has no orders. --- django/didgeridoo/webshop/views.py | 61 +++++++++++++++--------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/django/didgeridoo/webshop/views.py b/django/didgeridoo/webshop/views.py index f873d97..42df889 100644 --- a/django/didgeridoo/webshop/views.py +++ b/django/didgeridoo/webshop/views.py @@ -169,36 +169,37 @@ def profile(request): currency_name = "" person = Person.objects.get(user=request.user) orders = Order.objects.filter(user=request.user) - orders_list = list(orders) - for idx1, order in enumerate(orders_list): - # get all items in the Order: - order_positions = OrderPosition.objects.filter(order=order) - if (order_positions.count()) > 0: - order_position_list = list(order_positions) - for idx2, order_position in enumerate(order_position_list): - # get currencyname to display: - if order.exchange_rate is not None: - print('order.exchange_rate', order.exchange_rate, order.exchange_rate.id) - # get price of position in order and append to a list: - rate = ExchangeRate.objects.get(id=order.exchange_rate.id) - order_position.price_in_chf = round( - rate.exchange_rate_to_chf * order_position.price_in_chf, - 2) - currency_name = order.exchange_rate - else: - currency_name = 'CHF' - totalprice_list.append(order_position.price_in_chf) - order_position_list[idx2] = order_position - total = sum(totalprice_list) - currency_list.append(currency_name) - total_list.append(total) - order_positions_count = order_positions.count() - order_positions_count_list.append(order_positions_count) - orders_list[idx1] = order - order_list_zip = zip(orders_list, - order_positions_count_list, - total_list, - currency_list) + if orders: + orders_list = list(orders) + for idx1, order in enumerate(orders_list): + # get all items in the Order: + order_positions = OrderPosition.objects.filter(order=order) + if (order_positions.count()) > 0: + order_position_list = list(order_positions) + for idx2, order_position in enumerate(order_position_list): + # get currencyname to display: + if order.exchange_rate is not None: + print('order.exchange_rate', order.exchange_rate, order.exchange_rate.id) + # get price of position in order and append to a list: + rate = ExchangeRate.objects.get(id=order.exchange_rate.id) + order_position.price_in_chf = round( + rate.exchange_rate_to_chf * order_position.price_in_chf, + 2) + currency_name = order.exchange_rate + else: + currency_name = 'CHF' + totalprice_list.append(order_position.price_in_chf) + order_position_list[idx2] = order_position + total = sum(totalprice_list) + currency_list.append(currency_name) + total_list.append(total) + order_positions_count = order_positions.count() + order_positions_count_list.append(order_positions_count) + orders_list[idx1] = order + order_list_zip = zip(orders_list, + order_positions_count_list, + total_list, + currency_list) # assert False return render(request, 'registration/profile.html', {'person': person,