From 5bcd1077a9a05a21f1b62609d0455ff55a307e29 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 6 Nov 2024 23:10:20 +0000 Subject: [PATCH 1/3] Bug fix for PurchaseOrder filter --- order_history/version.py | 2 +- order_history/views.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/order_history/version.py b/order_history/version.py index cd52540..3d1aa2e 100644 --- a/order_history/version.py +++ b/order_history/version.py @@ -1,3 +1,3 @@ """Version information for the Order History plugin.""" -PLUGIN_VERSION = "0.3.1" +PLUGIN_VERSION = "0.3.2" diff --git a/order_history/views.py b/order_history/views.py index 0ea6ad6..5e3e453 100644 --- a/order_history/views.py +++ b/order_history/views.py @@ -127,7 +127,7 @@ def generate_purchase_order_history(self): # Filter by part if self.part: parts = self.part.get_descendants(include_self=True) - lines = lines.filter(part__in=parts) + lines = lines.filter(part__part__in=parts) # Filter by supplier part if self.supplier_part: From 84e061cccbdaf7a651a41c2c605564a568e63673 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Fri, 8 Nov 2024 02:05:27 +0000 Subject: [PATCH 2/3] Handle missing or deleted parts --- order_history/version.py | 2 +- order_history/views.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/order_history/version.py b/order_history/version.py index 3d1aa2e..51395e9 100644 --- a/order_history/version.py +++ b/order_history/version.py @@ -1,3 +1,3 @@ """Version information for the Order History plugin.""" -PLUGIN_VERSION = "0.3.2" +PLUGIN_VERSION = "0.3.3" diff --git a/order_history/views.py b/order_history/views.py index 5e3e453..860b9df 100644 --- a/order_history/views.py +++ b/order_history/views.py @@ -94,6 +94,10 @@ def generate_build_order_history(self): for build in builds: part = build.part + if not part: + # Skip builds which do not map to a part (may have been deleted, for example) + continue + if part.pk not in parts: parts[part.pk] = part @@ -156,6 +160,11 @@ def generate_purchase_order_history(self): parts = {} for line in lines: + + if not line.part or not line.part.part: + # Skip lines which do not map to a part (may have been deleted, for example) + continue + part = line.part.part part_history = history_items.get(part.pk, None) or {} @@ -215,6 +224,10 @@ def generate_sales_order_history(self): for line in lines: part = line.part + if not part: + # Skip lines which do not map to a part (may have been deleted, for example) + continue + # Extract the date key for the line item part_history = history_items.get(part.pk, None) or {} @@ -268,6 +281,10 @@ def generate_return_order_history(self): for line in lines: part = line.item.part + if not part: + # Skip lines which do not map to a part (may have been deleted, for example) + continue + # Extract the date key for the line item part_history = history_items.get(part.pk, None) or {} From 0b70d072a41c2ace74b00284ffe508d652fb9246 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Fri, 8 Nov 2024 02:07:43 +0000 Subject: [PATCH 3/3] Add error message if loading fails --- frontend/src/OrderHistoryPanel.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/frontend/src/OrderHistoryPanel.tsx b/frontend/src/OrderHistoryPanel.tsx index 3fbf331..a945134 100644 --- a/frontend/src/OrderHistoryPanel.tsx +++ b/frontend/src/OrderHistoryPanel.tsx @@ -30,6 +30,8 @@ function OrderHistoryPanel({context}: {context: any}) { const [ loading, setLoading ] = useState(true); + const [ error, setError ] = useState(false); + // Plugin settings object const pluginSettings = useMemo(() => context?.context?.settings ?? {}, [context]); @@ -197,7 +199,7 @@ function OrderHistoryPanel({context}: {context: any}) { // Ensure that the selected order type is valid for the current context useEffect(() => { - if (!validOrderTypes.find((type) => type.value == orderType)) { + if (!validOrderTypes.find((type: any) => type.value == orderType)) { setOrderType(validOrderTypes[0]?.value ?? null); } }, [orderType, validOrderTypes]); @@ -240,10 +242,12 @@ function OrderHistoryPanel({context}: {context: any}) { }).then((response: any) => { setHistoryData(response.data); setLoading(false); + setError(false); }).catch(() => { console.error("ERR: Failed to fetch history data"); setHistoryData([]); setLoading(false); + setError(true); }); } @@ -391,6 +395,11 @@ function OrderHistoryPanel({context}: {context: any}) { + {error && ( + + Failed to load order history data from the server + + )} {(hasData || loading) ? (