kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
				
				
				
			See #75: can now add multiple tracks to a playlist on creation and update
							rodzic
							
								
									1674ad919f
								
							
						
					
					
						commit
						7c85d1ca81
					
				| 
						 | 
				
			
			@ -365,15 +365,24 @@ class SubsonicViewSet(viewsets.GenericViewSet):
 | 
			
		|||
        else:
 | 
			
		||||
            plt.delete(update_indexes=True)
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
            to_add = int(data['songIdToAdd'])
 | 
			
		||||
            track = music_models.Track.objects.get(pk=to_add)
 | 
			
		||||
        except (TypeError, ValueError, KeyError):
 | 
			
		||||
            pass
 | 
			
		||||
        except music_models.Track.DoesNotExist:
 | 
			
		||||
            pass
 | 
			
		||||
        else:
 | 
			
		||||
            playlist.insert_many([track])
 | 
			
		||||
        ids = []
 | 
			
		||||
        for i in data.getlist('songIdToAdd'):
 | 
			
		||||
            try:
 | 
			
		||||
                ids.append(int(i))
 | 
			
		||||
            except (TypeError, ValueError):
 | 
			
		||||
                pass
 | 
			
		||||
        if ids:
 | 
			
		||||
            tracks = music_models.Track.objects.filter(pk__in=ids)
 | 
			
		||||
            by_id = {t.id: t for t in tracks}
 | 
			
		||||
            sorted_tracks = []
 | 
			
		||||
            for i in ids:
 | 
			
		||||
                try:
 | 
			
		||||
                    sorted_tracks.append(by_id[i])
 | 
			
		||||
                except KeyError:
 | 
			
		||||
                    pass
 | 
			
		||||
            if sorted_tracks:
 | 
			
		||||
                playlist.insert_many(sorted_tracks)
 | 
			
		||||
 | 
			
		||||
        data = {
 | 
			
		||||
            'status': 'ok'
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -409,15 +418,24 @@ class SubsonicViewSet(viewsets.GenericViewSet):
 | 
			
		|||
        playlist = request.user.playlists.create(
 | 
			
		||||
            name=name
 | 
			
		||||
        )
 | 
			
		||||
        try:
 | 
			
		||||
            to_add = int(data['songId'])
 | 
			
		||||
            track = music_models.Track.objects.get(pk=to_add)
 | 
			
		||||
        except (TypeError, ValueError, KeyError):
 | 
			
		||||
            pass
 | 
			
		||||
        except music_models.Track.DoesNotExist:
 | 
			
		||||
            pass
 | 
			
		||||
        else:
 | 
			
		||||
            playlist.insert_many([track])
 | 
			
		||||
        ids = []
 | 
			
		||||
        for i in data.getlist('songId'):
 | 
			
		||||
            try:
 | 
			
		||||
                ids.append(int(i))
 | 
			
		||||
            except (TypeError, ValueError):
 | 
			
		||||
                pass
 | 
			
		||||
 | 
			
		||||
        if ids:
 | 
			
		||||
            tracks = music_models.Track.objects.filter(pk__in=ids)
 | 
			
		||||
            by_id = {t.id: t for t in tracks}
 | 
			
		||||
            sorted_tracks = []
 | 
			
		||||
            for i in ids:
 | 
			
		||||
                try:
 | 
			
		||||
                    sorted_tracks.append(by_id[i])
 | 
			
		||||
                except KeyError:
 | 
			
		||||
                    pass
 | 
			
		||||
            if sorted_tracks:
 | 
			
		||||
                playlist.insert_many(sorted_tracks)
 | 
			
		||||
        playlist = request.user.playlists.with_tracks_count().get(
 | 
			
		||||
            pk=playlist.pk)
 | 
			
		||||
        data = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -318,15 +318,17 @@ def test_delete_playlist(f, db, logged_in_api_client, factories):
 | 
			
		|||
def test_create_playlist(f, db, logged_in_api_client, factories):
 | 
			
		||||
    url = reverse('api:subsonic-create-playlist')
 | 
			
		||||
    assert url.endswith('createPlaylist') is True
 | 
			
		||||
    track = factories['music.Track']()
 | 
			
		||||
    track1 = factories['music.Track']()
 | 
			
		||||
    track2 = factories['music.Track']()
 | 
			
		||||
    response = logged_in_api_client.get(
 | 
			
		||||
        url, {'f': f, 'name': 'hello', 'songId': track.pk})
 | 
			
		||||
        url, {'f': f, 'name': 'hello', 'songId': [track1.pk, track2.pk]})
 | 
			
		||||
    assert response.status_code == 200
 | 
			
		||||
    playlist = logged_in_api_client.user.playlists.latest('id')
 | 
			
		||||
    plt = playlist.playlist_tracks.latest('id')
 | 
			
		||||
    assert playlist.playlist_tracks.count() == 2
 | 
			
		||||
    for i, t in enumerate([track1, track2]):
 | 
			
		||||
        plt = playlist.playlist_tracks.get(track=t)
 | 
			
		||||
        assert plt.index == i
 | 
			
		||||
    assert playlist.name == 'hello'
 | 
			
		||||
    assert plt.index == 0
 | 
			
		||||
    assert plt.track == track
 | 
			
		||||
    qs = playlist.__class__.objects.with_tracks_count()
 | 
			
		||||
    assert response.data == {
 | 
			
		||||
        'playlist': serializers.get_playlist_detail_data(qs.first())
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue