From b31e16eb9848e928f45c2375b704e596590743fb Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 5 Aug 2025 14:37:01 +1000 Subject: [PATCH] Helper tweaks (#10131) * Enhance report tags * Update docs --- docs/docs/report/helpers.md | 5 ++++- .../InvenTree/report/templatetags/report.py | 16 ++++++++-------- src/backend/InvenTree/report/test_tags.py | 5 +++++ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/docs/docs/report/helpers.md b/docs/docs/report/helpers.md index a128fa56cb..ec42fc8056 100644 --- a/docs/docs/report/helpers.md +++ b/docs/docs/report/helpers.md @@ -280,10 +280,13 @@ Simple mathematical operators are available, as demonstrated in the example temp {% add 1 3 %} {% subtract 4 3 %} {% multiply 1.2 3.4 %} -{% divide 10 2 as division_result %} + + +{% divide 10 2 as division_result %} Division Result: {{ division_result }} + {% endraw %} ``` diff --git a/src/backend/InvenTree/report/templatetags/report.py b/src/backend/InvenTree/report/templatetags/report.py index ed6b5c3da8..2977f950da 100644 --- a/src/backend/InvenTree/report/templatetags/report.py +++ b/src/backend/InvenTree/report/templatetags/report.py @@ -393,27 +393,27 @@ def internal_link(link, text) -> str: @register.simple_tag() -def add(x, y, *args, **kwargs): +def add(x: float, y: float, *args, **kwargs) -> float: """Add two numbers together.""" - return x + y + return float(x) + float(y) @register.simple_tag() -def subtract(x, y): +def subtract(x: float, y: float) -> float: """Subtract one number from another.""" - return x - y + return float(x) - float(y) @register.simple_tag() -def multiply(x, y): +def multiply(x: float, y: float) -> float: """Multiply two numbers together.""" - return x * y + return float(x) * float(y) @register.simple_tag() -def divide(x, y): +def divide(x: float, y: float) -> float: """Divide one number by another.""" - return x / y + return float(x) / float(y) @register.simple_tag diff --git a/src/backend/InvenTree/report/test_tags.py b/src/backend/InvenTree/report/test_tags.py index ade3a5832c..3928124525 100644 --- a/src/backend/InvenTree/report/test_tags.py +++ b/src/backend/InvenTree/report/test_tags.py @@ -197,10 +197,15 @@ class ReportTagTest(PartImageTestMixin, InvenTreeTestCase): def test_maths_tags(self): """Simple tests for mathematical operator tags.""" self.assertEqual(report_tags.add(1, 2), 3) + self.assertEqual(report_tags.add('-33', '33'), 0) self.assertEqual(report_tags.subtract(10, 4.2), 5.8) self.assertEqual(report_tags.multiply(2.3, 4), 9.2) + self.assertEqual(report_tags.multiply('-2', 4), -8.0) self.assertEqual(report_tags.divide(100, 5), 20) + with self.assertRaises(ZeroDivisionError): + report_tags.divide(100, 0) + def test_number_tags(self): """Simple tests for number formatting tags.""" fn = report_tags.format_number