Browse Source

Fixes #1114: Suppress OSError when attempting to access a delete image attachment

Jeremy Stretch 8 years ago
parent
commit
de58d0ecca
2 changed files with 12 additions and 2 deletions
  1. 10 0
      netbox/extras/models.py
  2. 2 2
      netbox/templates/inc/image_attachments.html

+ 10 - 0
netbox/extras/models.py

@@ -422,6 +422,16 @@ class ImageAttachment(models.Model):
         # before the request finishes. (For example, to display a message indicating the ImageAttachment was deleted.)
         self.image.name = _name
 
+    @property
+    def size(self):
+        """
+        Wrapper around `image.size` to suppress an OSError in case the file is inaccessible.
+        """
+        try:
+            return self.image.size
+        except OSError:
+            return None
+
 
 #
 # User actions

+ 2 - 2
netbox/templates/inc/image_attachments.html

@@ -7,12 +7,12 @@
             <th></th>
         </tr>
         {% for attachment in images %}
-            <tr>
+            <tr{% if not attachment.size %} class="danger"{% endif %}>
                 <td>
                     <i class="fa fa-image"></i>
                     <a href="{{ attachment.image.url }}" target="_blank">{{ attachment }}</a>
                 </td>
-                <td>{{ attachment.image.size|filesizeformat }}</td>
+                <td>{{ attachment.size|filesizeformat }}</td>
                 <td>{{ attachment.created }}</td>
                 <td class="text-right">
                     {% if perms.extras.change_imageattachment %}