Fix #193: broken federated import
This commit is contained in:
parent
e31bed050e
commit
23d21b0fdb
|
@ -106,7 +106,7 @@ class Artist(APIModelMixin):
|
|||
kwargs.update({'name': name})
|
||||
return cls.objects.get_or_create(
|
||||
name__iexact=name,
|
||||
defaults=kwargs)[0]
|
||||
defaults=kwargs)
|
||||
|
||||
|
||||
def import_artist(v):
|
||||
|
@ -196,7 +196,7 @@ class Album(APIModelMixin):
|
|||
kwargs.update({'title': title})
|
||||
return cls.objects.get_or_create(
|
||||
title__iexact=title,
|
||||
defaults=kwargs)[0]
|
||||
defaults=kwargs)
|
||||
|
||||
|
||||
def import_tags(instance, cleaned_data, raw_data):
|
||||
|
@ -403,7 +403,7 @@ class Track(APIModelMixin):
|
|||
kwargs.update({'title': title})
|
||||
return cls.objects.get_or_create(
|
||||
title__iexact=title,
|
||||
defaults=kwargs)[0]
|
||||
defaults=kwargs)
|
||||
|
||||
|
||||
class TrackFile(models.Model):
|
||||
|
|
|
@ -39,7 +39,7 @@ def import_track_from_remote(library_track):
|
|||
except (KeyError, AssertionError):
|
||||
pass
|
||||
else:
|
||||
return models.Track.get_or_create_from_api(mbid=track_mbid)
|
||||
return models.Track.get_or_create_from_api(mbid=track_mbid)[0]
|
||||
|
||||
try:
|
||||
album_mbid = metadata['release']['musicbrainz_id']
|
||||
|
@ -47,9 +47,9 @@ def import_track_from_remote(library_track):
|
|||
except (KeyError, AssertionError):
|
||||
pass
|
||||
else:
|
||||
album = models.Album.get_or_create_from_api(mbid=album_mbid)
|
||||
album, _ = models.Album.get_or_create_from_api(mbid=album_mbid)
|
||||
return models.Track.get_or_create_from_title(
|
||||
library_track.title, artist=album.artist, album=album)
|
||||
library_track.title, artist=album.artist, album=album)[0]
|
||||
|
||||
try:
|
||||
artist_mbid = metadata['artist']['musicbrainz_id']
|
||||
|
@ -57,20 +57,20 @@ def import_track_from_remote(library_track):
|
|||
except (KeyError, AssertionError):
|
||||
pass
|
||||
else:
|
||||
artist = models.Artist.get_or_create_from_api(mbid=artist_mbid)
|
||||
album = models.Album.get_or_create_from_title(
|
||||
artist, _ = models.Artist.get_or_create_from_api(mbid=artist_mbid)
|
||||
album, _ = models.Album.get_or_create_from_title(
|
||||
library_track.album_title, artist=artist)
|
||||
return models.Track.get_or_create_from_title(
|
||||
library_track.title, artist=artist, album=album)
|
||||
library_track.title, artist=artist, album=album)[0]
|
||||
|
||||
# worst case scenario, we have absolutely no way to link to a
|
||||
# musicbrainz resource, we rely on the name/titles
|
||||
artist = models.Artist.get_or_create_from_name(
|
||||
artist, _ = models.Artist.get_or_create_from_name(
|
||||
library_track.artist_name)
|
||||
album = models.Album.get_or_create_from_title(
|
||||
album, _ = models.Album.get_or_create_from_title(
|
||||
library_track.album_title, artist=artist)
|
||||
return models.Track.get_or_create_from_title(
|
||||
library_track.title, artist=artist, album=album)
|
||||
library_track.title, artist=artist, album=album)[0]
|
||||
|
||||
|
||||
def _do_import(import_job, replace=False, use_acoustid=True):
|
||||
|
|
|
@ -66,7 +66,7 @@ def test_import_job_from_federation_musicbrainz_recording(factories, mocker):
|
|||
t = factories['music.Track']()
|
||||
track_from_api = mocker.patch(
|
||||
'funkwhale_api.music.models.Track.get_or_create_from_api',
|
||||
return_value=t)
|
||||
return_value=(t, True))
|
||||
lt = factories['federation.LibraryTrack'](
|
||||
metadata__recording__musicbrainz=True,
|
||||
artist_name='Hello',
|
||||
|
@ -92,7 +92,7 @@ def test_import_job_from_federation_musicbrainz_release(factories, mocker):
|
|||
a = factories['music.Album']()
|
||||
album_from_api = mocker.patch(
|
||||
'funkwhale_api.music.models.Album.get_or_create_from_api',
|
||||
return_value=a)
|
||||
return_value=(a, True))
|
||||
lt = factories['federation.LibraryTrack'](
|
||||
metadata__release__musicbrainz=True,
|
||||
artist_name='Hello',
|
||||
|
@ -121,7 +121,7 @@ def test_import_job_from_federation_musicbrainz_artist(factories, mocker):
|
|||
a = factories['music.Artist']()
|
||||
artist_from_api = mocker.patch(
|
||||
'funkwhale_api.music.models.Artist.get_or_create_from_api',
|
||||
return_value=a)
|
||||
return_value=(a, True))
|
||||
lt = factories['federation.LibraryTrack'](
|
||||
metadata__artist__musicbrainz=True,
|
||||
album_title='World',
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix broken federated import (#193)
|
Loading…
Reference in New Issue