From 7ce55f4195bd0450d9d93791a66ea41217ce0434 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 12 Jan 2022 11:57:33 +1100 Subject: [PATCH] Add try/except blocks for calls to conert_money --- InvenTree/part/models.py | 9 ++++++++- InvenTree/part/views.py | 13 +++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 604d384a67..fde9c80720 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -29,6 +29,8 @@ from markdownx.models import MarkdownxField from django_cleanup import cleanup +from djmoney.contrib.exchange.exceptions import MissingRate + from mptt.models import TreeForeignKey, MPTTModel from mptt.exceptions import InvalidMove from mptt.managers import TreeManager @@ -1832,9 +1834,14 @@ class Part(MPTTModel): def get_purchase_price(self, quantity): currency = currency_code_default() - prices = [convert_money(item.purchase_price, currency).amount for item in self.stock_items.all() if item.purchase_price] + try: + prices = [convert_money(item.purchase_price, currency).amount for item in self.stock_items.all() if item.purchase_price] + except MissingRate: + prices = None + if prices: return min(prices) * quantity, max(prices) * quantity + return None @transaction.atomic diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index 4304d2a95d..dc6b8a9632 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -20,6 +20,7 @@ from django.contrib import messages from moneyed import CURRENCIES from djmoney.contrib.exchange.models import convert_money +from djmoney.contrib.exchange.exceptions import MissingRate from PIL import Image @@ -425,7 +426,11 @@ class PartDetail(InvenTreeRoleMixin, DetailView): continue # convert purchase price to current currency - only one currency in the graph - price = convert_money(stock_item.purchase_price, default_currency) + try: + price = convert_money(stock_item.purchase_price, default_currency) + except MissingRate: + continue + line = { 'price': price.amount, 'qty': stock_item.quantity @@ -487,7 +492,11 @@ class PartDetail(InvenTreeRoleMixin, DetailView): if None in [sale_item.purchase_price, sale_item.quantity]: continue - price = convert_money(sale_item.purchase_price, default_currency) + try: + price = convert_money(sale_item.purchase_price, default_currency) + except MissingRate: + continue + line = { 'price': price.amount if price else 0, 'qty': sale_item.quantity,