From ba6124f0e04eac3533cfd9533dc0bdbf176f36e2 Mon Sep 17 00:00:00 2001 From: Brian Tiemann Date: Wed, 21 Jan 2026 19:39:31 -0500 Subject: [PATCH] Add truncate_middle filter for middle-ellipsis on long filenames --- netbox/extras/tables/tables.py | 2 +- netbox/utilities/templatetags/builtins/filters.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/netbox/extras/tables/tables.py b/netbox/extras/tables/tables.py index 09fc5cc3c..996578dab 100644 --- a/netbox/extras/tables/tables.py +++ b/netbox/extras/tables/tables.py @@ -43,7 +43,7 @@ IMAGEATTACHMENT_IMAGE = """ {% endif %} -{{ record }} +{{ record.filename|truncate_middle:16 }} """ NOTIFICATION_ICON = """ diff --git a/netbox/utilities/templatetags/builtins/filters.py b/netbox/utilities/templatetags/builtins/filters.py index 2d4cbba69..985dce143 100644 --- a/netbox/utilities/templatetags/builtins/filters.py +++ b/netbox/utilities/templatetags/builtins/filters.py @@ -252,3 +252,16 @@ def isodatetime(value, spec='seconds'): else: return '' return mark_safe(f'{text}') + + +@register.filter +def truncate_middle(value, length): + if len(value) <= length: + return value + + # Calculate split points for the two parts + half_len = (length - 3) // 2 # 3 for the '...' + first_part = value[:half_len] + second_part = value[len(value) - (length - 3 - half_len):] + + return mark_safe(f"{first_part}…{second_part}")