Merge branch '122-no-album' into 'master'
Resolve "Importing tracks without album fails" See merge request funkwhale/funkwhale!803
This commit is contained in:
commit
a763cc42b1
|
@ -13,6 +13,8 @@ from rest_framework.compat import Mapping
|
|||
|
||||
logger = logging.getLogger(__name__)
|
||||
NODEFAULT = object()
|
||||
# default title used when imported tracks miss the `Album` tag, see #122
|
||||
UNKWOWN_ALBUM = "[Unknown Album]"
|
||||
|
||||
|
||||
class TagNotFound(KeyError):
|
||||
|
@ -425,9 +427,11 @@ class AlbumField(serializers.Field):
|
|||
|
||||
def to_internal_value(self, data):
|
||||
try:
|
||||
title = data.get("album")
|
||||
title = data.get("album") or ""
|
||||
except TagNotFound:
|
||||
raise serializers.ValidationError("Missing album tag")
|
||||
title = ""
|
||||
|
||||
title = title.strip() or UNKWOWN_ALBUM
|
||||
final = {
|
||||
"title": title,
|
||||
"release_date": data.get("date", None),
|
||||
|
|
|
@ -539,6 +539,34 @@ def test_serializer_album_artist_missing():
|
|||
assert serializer.validated_data == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"data",
|
||||
[
|
||||
# no album tag
|
||||
{"title": "Track", "artist": "Artist"},
|
||||
# empty/null values
|
||||
{"title": "Track", "artist": "Artist", "album": ""},
|
||||
{"title": "Track", "artist": "Artist", "album": " "},
|
||||
{"title": "Track", "artist": "Artist", "album": None},
|
||||
],
|
||||
)
|
||||
def test_serializer_album_default_title_when_missing_or_empty(data):
|
||||
expected = {
|
||||
"title": "Track",
|
||||
"artists": [{"name": "Artist", "mbid": None}],
|
||||
"album": {
|
||||
"title": metadata.UNKWOWN_ALBUM,
|
||||
"mbid": None,
|
||||
"release_date": None,
|
||||
"artists": [],
|
||||
},
|
||||
"cover_data": None,
|
||||
}
|
||||
serializer = metadata.TrackMetadataSerializer(data=metadata.FakeMetadata(data))
|
||||
assert serializer.is_valid(raise_exception=True) is True
|
||||
assert serializer.validated_data == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"field_name", ["copyright", "license", "mbid", "position", "disc_number"]
|
||||
)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Support for importing files with no album tag (#122)
|
Loading…
Reference in New Issue