From 1e52959f7035811a129951d39394bbd08c26c2e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Norman=20J=C3=A4ckel?= Date: Mon, 23 Dec 2013 18:46:04 +0100 Subject: [PATCH] Fixed error when a file was removed from filesystem. Fixed #1120. --- CHANGELOG | 2 ++ openslides/mediafile/models.py | 24 ++++++++++++------- .../templates/mediafile/mediafile_list.html | 2 +- tests/mediafile/tests.py | 3 ++- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index c639199e3..e7daf05e0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,8 @@ Version 1.5.1 (unreleased) ========================== [https://github.com/OpenSlides/OpenSlides/issues?milestone=15] +Files: +- Fixed error when a file was removed from filesystem. Other: - Fixed http status code when requesting a non-existing static page using Tordado web server. diff --git a/openslides/mediafile/models.py b/openslides/mediafile/models.py index 0ddd312c2..a8ba6383d 100644 --- a/openslides/mediafile/models.py +++ b/openslides/mediafile/models.py @@ -4,6 +4,7 @@ import mimetypes from django.core.urlresolvers import reverse from django.db import models +from django.utils.translation import ugettext as _ from django.utils.translation import ugettext_lazy, ugettext_noop from openslides.projector.models import SlideMixin @@ -80,15 +81,20 @@ class Mediafile(SlideMixin, models.Model): def get_filesize(self): """ - Transforms Bytes to Kilobytes or Megabytes. Returns the size as string. + Transforms bytes to kilobytes or megabytes. Returns the size as string. """ # TODO: Read http://stackoverflow.com/a/1094933 and think about it. - size = self.mediafile.size - if size < 1024: - return '< 1 kB' - if size >= 1024 * 1024: - mB = size / 1024 / 1024 - return '%d MB' % mB + try: + size = self.mediafile.size + except OSError: + size_string = _('unknown') else: - kB = size / 1024 - return '%d kB' % kB + if size < 1024: + size_string = '< 1 kB' + elif size >= 1024 * 1024: + mB = size / 1024 / 1024 + size_string = '%d MB' % mB + else: + kB = size / 1024 + size_string = '%d kB' % kB + return size_string diff --git a/openslides/mediafile/templates/mediafile/mediafile_list.html b/openslides/mediafile/templates/mediafile/mediafile_list.html index ea033c59b..c8e030222 100644 --- a/openslides/mediafile/templates/mediafile/mediafile_list.html +++ b/openslides/mediafile/templates/mediafile/mediafile_list.html @@ -27,7 +27,7 @@ {% for mediafile in mediafile_list %} {{ mediafile }} - {{ mediafile.filetype }} + {% trans mediafile.filetype %} {{ mediafile.get_filesize }} {{ mediafile.timestamp }} {{ mediafile.uploader }} diff --git a/tests/mediafile/tests.py b/tests/mediafile/tests.py index 7089c833f..aa016417d 100644 --- a/tests/mediafile/tests.py +++ b/tests/mediafile/tests.py @@ -195,4 +195,5 @@ class MediafileTest(TestCase): bigfile.seek(1048575) bigfile.write('0') self.assertEqual(object_4.get_filesize(), '1 MB') - object_4.mediafile.delete() + os.remove(mediafile_4_path) + self.assertEqual(object_4.get_filesize(), 'unknown')