From 93b9e14f8ce883501c5d83b7f81ca1700b1e81e2 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Fri, 27 Sep 2019 12:27:28 +0200 Subject: [PATCH] Fixed broken cover import when cover file is empty --- api/funkwhale_api/music/models.py | 11 +++++++---- api/tests/music/test_music.py | 8 ++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/api/funkwhale_api/music/models.py b/api/funkwhale_api/music/models.py index 02c4f4434b..831289cda5 100644 --- a/api/funkwhale_api/music/models.py +++ b/api/funkwhale_api/music/models.py @@ -330,6 +330,7 @@ class Album(APIModelMixin): if data: extensions = {"image/jpeg": "jpg", "image/png": "png", "image/gif": "gif"} extension = extensions.get(data["mimetype"], "jpg") + f = None if data.get("content"): # we have to cover itself f = ContentFile(data["content"]) @@ -349,15 +350,17 @@ class Album(APIModelMixin): return else: f = ContentFile(response.content) - self.cover.save("{}.{}".format(self.uuid, extension), f, save=False) - self.save(update_fields=["cover"]) - return self.cover.file + if f: + self.cover.save("{}.{}".format(self.uuid, extension), f, save=False) + self.save(update_fields=["cover"]) + return self.cover.file if self.mbid: image_data = musicbrainz.api.images.get_front(str(self.mbid)) f = ContentFile(image_data) self.cover.save("{0}.jpg".format(self.mbid), f, save=False) self.save(update_fields=["cover"]) - return self.cover.file + if self.cover: + return self.cover.file def __str__(self): return self.title diff --git a/api/tests/music/test_music.py b/api/tests/music/test_music.py index f20a28f3ae..727214af56 100644 --- a/api/tests/music/test_music.py +++ b/api/tests/music/test_music.py @@ -133,3 +133,11 @@ def test_can_download_image_file_for_album(binary_cover, mocker, factories): album.save() assert album.cover.file.read() == binary_cover + + +def test_album_get_image_doesnt_crash_with_empty_data(mocker, factories): + album = factories["music.Album"](mbid=None, cover=None) + assert ( + album.get_image(data={"content": "", "url": "", "mimetype": "image/png"}) + is None + ) -- GitLab