Просмотр исходного кода

Add truncate_middle filter for middle-ellipsis on long filenames (#21253)

bctiemann 3 недель назад
Родитель
Сommit
4b4c542dce
2 измененных файлов с 14 добавлено и 1 удалено
  1. 1 1
      netbox/extras/tables/tables.py
  2. 13 0
      netbox/utilities/templatetags/builtins/filters.py

+ 1 - 1
netbox/extras/tables/tables.py

@@ -43,7 +43,7 @@ IMAGEATTACHMENT_IMAGE = """
   <a href="{{ record.image.url }}" target="_blank" class="image-preview" data-bs-placement="top">
     <i class="mdi mdi-image"></i></a>
 {% endif %}
-<a href="{{ record.get_absolute_url }}">{{ record }}</a>
+<a href="{{ record.get_absolute_url }}">{{ record.filename|truncate_middle:16 }}</a>
 """
 
 NOTIFICATION_ICON = """

+ 13 - 0
netbox/utilities/templatetags/builtins/filters.py

@@ -252,3 +252,16 @@ def isodatetime(value, spec='seconds'):
     else:
         return ''
     return mark_safe(f'<span title="{naturaltime(value)}">{text}</span>')
+
+
+@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}&hellip;{second_part}")