From 4b4c542dced4dba6bd61241e3679cd3fed777ed4 Mon Sep 17 00:00:00 2001 From: bctiemann Date: Thu, 22 Jan 2026 12:40:48 -0500 Subject: [PATCH] Add truncate_middle filter for middle-ellipsis on long filenames (#21253) --- 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..0ee370253 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 - 1) // 2 # 1 for the ellipsis + first_part = value[:half_len] + second_part = value[len(value) - (length - 1 - half_len):] + + return mark_safe(f"{first_part}…{second_part}")