From 66a9a623767ed513ac0285671c2524151ea80ed8 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Mon, 9 Mar 2020 17:21:15 +0100
Subject: [PATCH] Fix #1037: More resilient tag parsing with empty release date
 or album artist

---
 api/funkwhale_api/music/metadata.py | 6 ++++--
 api/tests/music/test_metadata.py    | 1 +
 changes/changelog.d/1037.bugfix     | 1 +
 3 files changed, 6 insertions(+), 2 deletions(-)
 create mode 100644 changes/changelog.d/1037.bugfix

diff --git a/api/funkwhale_api/music/metadata.py b/api/funkwhale_api/music/metadata.py
index 4e05580103..481f9a7e2d 100644
--- a/api/funkwhale_api/music/metadata.py
+++ b/api/funkwhale_api/music/metadata.py
@@ -648,7 +648,7 @@ class MBIDField(serializers.UUIDField):
 
 
 class ArtistSerializer(serializers.Serializer):
-    name = serializers.CharField(required=False, allow_null=True)
+    name = serializers.CharField(required=False, allow_null=True, allow_blank=True)
     mbid = MBIDField()
 
     def __init__(self, *args, **kwargs):
@@ -664,7 +664,9 @@ class ArtistSerializer(serializers.Serializer):
 class AlbumSerializer(serializers.Serializer):
     title = serializers.CharField(required=False, allow_null=True)
     mbid = MBIDField()
-    release_date = PermissiveDateField(required=False, allow_null=True)
+    release_date = PermissiveDateField(
+        required=False, allow_null=True, allow_blank=True
+    )
 
     def validate_title(self, v):
         if self.context.get("strict", True) and not v:
diff --git a/api/tests/music/test_metadata.py b/api/tests/music/test_metadata.py
index 2488ebcc8d..d46853ea02 100644
--- a/api/tests/music/test_metadata.py
+++ b/api/tests/music/test_metadata.py
@@ -247,6 +247,7 @@ def test_can_get_metadata_from_flac_file_not_crash_if_empty():
         ("2017-14-01 01:32", datetime.date(2017, 1, 14)),  # deezer format
         ("2017-02", datetime.date(2017, 1, 1)),  # weird format that exists
         ("0000", None),
+        ("", None),
         ("nonsense", None),
     ],
 )
diff --git a/changes/changelog.d/1037.bugfix b/changes/changelog.d/1037.bugfix
new file mode 100644
index 0000000000..38771e171c
--- /dev/null
+++ b/changes/changelog.d/1037.bugfix
@@ -0,0 +1 @@
+More resilient tag parsing with empty release date or album artist (#1037)
-- 
GitLab