diff --git a/netbox/extras/filtersets.py b/netbox/extras/filtersets.py index a1ead5494..f711ddc01 100644 --- a/netbox/extras/filtersets.py +++ b/netbox/extras/filtersets.py @@ -458,6 +458,7 @@ class ImageAttachmentFilterSet(ChangeLoggedModelFilterSet): return queryset return queryset.filter( Q(name__icontains=value) | + Q(image__icontains=value) | Q(description__icontains=value) ) diff --git a/netbox/extras/search.py b/netbox/extras/search.py index bc6381512..688618690 100644 --- a/netbox/extras/search.py +++ b/netbox/extras/search.py @@ -19,6 +19,7 @@ class ImageAttachmentIndex(SearchIndex): model = models.ImageAttachment fields = ( ('name', 100), + ('filename', 110), ('description', 500), ) display_attrs = ('description',) diff --git a/netbox/extras/tables/tables.py b/netbox/extras/tables/tables.py index 1c512f408..d55d7fc48 100644 --- a/netbox/extras/tables/tables.py +++ b/netbox/extras/tables/tables.py @@ -1,6 +1,7 @@ import json import django_tables2 as tables +from django.template.defaultfilters import filesizeformat from django.utils.html import format_html from django.utils.translation import gettext_lazy as _ @@ -38,10 +39,11 @@ __all__ = ( IMAGEATTACHMENT_IMAGE = """ {% if record.image %} - {{ record }} -{% else %} - — + + + {% endif %} +{{ record }} """ NOTIFICATION_ICON = """ @@ -230,29 +232,50 @@ class ImageAttachmentTable(NetBoxTable): verbose_name=_('ID'), linkify=False ) + image = columns.TemplateColumn( + verbose_name=_('Image'), + template_code=IMAGEATTACHMENT_IMAGE, + ) + name = tables.Column( + verbose_name=_('Name'), + linkify=True, + ) + filename = tables.Column( + verbose_name=_('Filename'), + linkify=lambda record: record.image.url, + orderable=False, + ) + dimensions = columns.TemplateColumn( + verbose_name=_('Dimensions'), + orderable=False, + template_code="{{ record.image_width }}×{{ record.image_height }}", + ) object_type = columns.ContentTypeColumn( verbose_name=_('Object Type'), ) parent = tables.Column( verbose_name=_('Parent'), - linkify=True - ) - image = tables.TemplateColumn( - verbose_name=_('Image'), - template_code=IMAGEATTACHMENT_IMAGE, + linkify=True, + orderable=False, ) size = tables.Column( orderable=False, - verbose_name=_('Size (Bytes)') + verbose_name=_('Size') ) class Meta(NetBoxTable.Meta): model = ImageAttachment fields = ( - 'pk', 'object_type', 'parent', 'image', 'name', 'description', 'image_height', 'image_width', 'size', - 'created', 'last_updated', + 'pk', 'object_type', 'parent', 'image', 'name', 'filename', 'description', 'image_height', 'image_width', + 'size', 'created', 'last_updated', ) - default_columns = ('object_type', 'parent', 'image', 'name', 'description', 'size', 'created') + default_columns = ('image', 'parent', 'description', 'dimensions', 'size') + + def render_size(self, value): + return filesizeformat(value) + + def value_size(self, value): + return value class SavedFilterTable(NetBoxTable):