From d04798daac08493d27331647b84ff4cbcd7a7f36 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Fri, 19 Jun 2015 10:51:55 +0100 Subject: [PATCH] Add file_size field to Image --- .../migrations/0007_image_file_size.py | 19 +++++++++++++++++++ wagtail/wagtailimages/models.py | 14 ++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 wagtail/wagtailimages/migrations/0007_image_file_size.py diff --git a/wagtail/wagtailimages/migrations/0007_image_file_size.py b/wagtail/wagtailimages/migrations/0007_image_file_size.py new file mode 100644 index 000000000..e21800e65 --- /dev/null +++ b/wagtail/wagtailimages/migrations/0007_image_file_size.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('wagtailimages', '0006_add_verbose_names'), + ] + + operations = [ + migrations.AddField( + model_name='image', + name='file_size', + field=models.PositiveIntegerField(editable=False, null=True), + ), + ] diff --git a/wagtail/wagtailimages/models.py b/wagtail/wagtailimages/models.py index 620de757d..749bc44ab 100644 --- a/wagtail/wagtailimages/models.py +++ b/wagtail/wagtailimages/models.py @@ -71,6 +71,20 @@ class AbstractImage(models.Model, TagSearchable): focal_point_width = models.PositiveIntegerField(null=True, blank=True) focal_point_height = models.PositiveIntegerField(null=True, blank=True) + file_size = models.PositiveIntegerField(null=True, editable=False) + + def get_file_size(self): + if self.file_size is None: + try: + self.file_size = self.file.size + except OSError: + # File doesn't exist + return + + self.save(update_fields=['file_size']) + + return self.file_size + def get_usage(self): return get_object_usage(self)