Exemplo n.º 1
0
def upload(request):
    form = TrackForm(request.POST, request.FILES)
    if form.is_valid():
        # get the mp3 data from the temp path
        try:
            mp3 = eyed3.load(request.FILES['file_path'].file.name)
        except Exception as e:
            messages.error(request, 'This is not a mp3 file')
            return redirect('home')

        try:
            # set the track data
            track = Track(artist=mp3.tag.artist,
                          title=mp3.tag.title,
                          album=mp3.tag.album,
                          year=mp3.tag.release_date.year,
                          file_path=request.FILES['file_path'])

            # get the playlist
            playlist = get_object_or_404(Playlist,
                                         pk=request.POST['playlist_id'])
        except Exception as error:

            messages.error(request, 'Error uploading mp3 file: ' + str(error))
            return redirect('home')

        # make sure it will process
        try:
            track.full_clean()
        except ValidationError as error:
            messages.error(request, 'Error validating: ' + str(error))
            return redirect('home')

        messages.success(request, 'MP3 Track uploaded')
        track.save()

        playlist.tracks.add(track)

        return redirect('home')