From 567cf591b958ebc4b33b942fb6e3533bbd743fbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Bryon?= Date: Sun, 24 Nov 2013 10:09:46 +0100 Subject: [PATCH] Refs #43 - ObjectDownloadView.get_file() raises FileNotFound if field is empty. Raises AttributeError if field does not exist (view or model is misconfigured). --- django_downloadview/tests/views.py | 11 ++++++++--- django_downloadview/views/object.py | 11 ++++------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/django_downloadview/tests/views.py b/django_downloadview/tests/views.py index 8beab15..d2a1a83 100644 --- a/django_downloadview/tests/views.py +++ b/django_downloadview/tests/views.py @@ -208,12 +208,17 @@ class ObjectDownloadViewTestCase(unittest.TestCase): view.get_file() def test_get_file_wrong_field(self): - """ObjectDownloadView.get_file() raises FileNotFound if field does not - exist.""" + """ObjectDownloadView.get_file() raises AttributeError if field does + not exist. + + ``AttributeError`` is expected because this is a configuration error, + i.e. it is related to Python code. + + """ view = setup_view(views.ObjectDownloadView(file_field='other_field'), 'fake request') view.object = mock.Mock(spec=['file']) - with self.assertRaises(exceptions.FileNotFound): + with self.assertRaises(AttributeError): view.get_file() def test_get_file_empty_field(self): diff --git a/django_downloadview/views/object.py b/django_downloadview/views/object.py index eadf772..5bfa3fc 100644 --- a/django_downloadview/views/object.py +++ b/django_downloadview/views/object.py @@ -61,18 +61,15 @@ class ObjectDownloadView(SingleObjectMixin, BaseDownloadView): is typically a :class:`~django.db.models.fields.files.FieldFile` or subclass. + Raises :class:`~django_downloadview.exceptions.FileNotFound` if + instance's field is empty. + Additional attributes are set on the file wrapper if :attr:`encoding`, :attr:`mime_type`, :attr:`charset`, :attr:`modification_time` or :attr:`size` are configured. """ - try: - file_instance = getattr(self.object, self.file_field) - except AttributeError: - raise FileNotFound('Failed to retrieve file from field="{field}" ' - 'on object="{object}"'.format( - field=self.file_field, - object=self.object)) + file_instance = getattr(self.object, self.file_field) if not file_instance: raise FileNotFound('Field="{field}" on object="{object}" is ' 'empty'.format(