From f1f84faa7f2e9722185368b5e85b1f03812d046a Mon Sep 17 00:00:00 2001 From: Jason Novinger Date: Wed, 24 Jun 2026 17:31:13 +0200 Subject: [PATCH] Fixes #22441: Address claudebot review feedback - humanize_duration: guard on 'is None' instead of falsiness so timedelta(0) renders as '0s' rather than blank - execution_time filter: add label= for consistency with sibling filters --- netbox/core/filtersets.py | 4 +++- netbox/utilities/string.py | 4 ++-- netbox/utilities/tests/test_string.py | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/netbox/core/filtersets.py b/netbox/core/filtersets.py index c3fc6c7f7..c1d3cadbf 100644 --- a/netbox/core/filtersets.py +++ b/netbox/core/filtersets.py @@ -132,7 +132,9 @@ class JobFilterSet(BaseFilterSet): field_name='completed', lookup_expr='gte' ) - execution_time = django_filters.DurationFilter() + execution_time = django_filters.DurationFilter( + label=_('Execution time') + ) execution_time__gte = django_filters.DurationFilter( field_name='execution_time', lookup_expr='gte', diff --git a/netbox/utilities/string.py b/netbox/utilities/string.py index 70cf94819..f19e1d313 100644 --- a/netbox/utilities/string.py +++ b/netbox/utilities/string.py @@ -12,9 +12,9 @@ __all__ = ( def humanize_duration(value): """ Express a timedelta in a human-friendly format. Example: 1h 5m 23s. Returns an empty string - for a null or zero-length duration. + for None; zero-duration timedeltas render as "0s". """ - if not value: + if value is None: return '' # Round to whole seconds and decompose diff --git a/netbox/utilities/tests/test_string.py b/netbox/utilities/tests/test_string.py index 0a9c98854..620ee730d 100644 --- a/netbox/utilities/tests/test_string.py +++ b/netbox/utilities/tests/test_string.py @@ -7,9 +7,11 @@ from utilities.string import humanize_duration class HumanizeDurationTest(TestCase): - def test_none_and_zero(self): + def test_none(self): self.assertEqual(humanize_duration(None), '') - self.assertEqual(humanize_duration(timedelta(0)), '') + + def test_zero_duration(self): + self.assertEqual(humanize_duration(timedelta(0)), '0s') def test_seconds_only(self): self.assertEqual(humanize_duration(timedelta(seconds=45)), '45s')