def spotify_report(): """Endpoint for reporting incorrect Spotify mappings. Shows confirmation page before submitting report to mbspotify. """ release_group_id = request.args.get('release_group_id') spotify_id = request.args.get('spotify_id') spotify_uri = "spotify:album:" + spotify_id # Checking if release group exists release_group = musicbrainz.get_release_group_by_id(release_group_id) if not release_group: flash(gettext("Can't find release group with that ID!"), 'error') return redirect(url_for('.spotify_list', release_group_id=release_group_id)) # Checking if release group is mapped to Spotify spotify_mappings = mbspotify.mappings(str(release_group_id)) if not (spotify_uri in spotify_mappings): flash(gettext("This album is not mapped to Spotify yet!"), 'error') return redirect(url_for('.spotify_list', release_group_id=release_group_id)) if request.method == 'POST': mbspotify.vote(release_group_id, spotify_uri, current_user.id) flash(gettext("Incorrect Spotify mapping has been reported. Thank you!"), 'success') return redirect(url_for('.spotify_list', release_group_id=release_group_id)) else: album = spotify_api.get_album(spotify_id) if not album or album.get('error'): flash(gettext("You need to specify existing album from Spotify!"), 'error') return redirect(url_for('.spotify_list', release_group_id=release_group_id)) return render_template('mapping/report.html', release_group=release_group, spotify_album=album)
def spotify_confirm(): """Confirmation page for adding new Spotify mapping.""" release_group_id = request.args.get('release_group_id') release_group = musicbrainz.get_release_group_by_id(release_group_id) if not release_group: flash(gettext("Only existing release groups can be mapped to Spotify!"), 'error') return redirect(url_for('search.index')) spotify_ref = request.args.get('spotify_ref', default=None) if not spotify_ref: flash(gettext("You need to select an album from Spotify!"), 'error') return redirect(url_for('.spotify', release_group_id=release_group_id)) spotify_id = parse_spotify_id(spotify_ref) if not spotify_id: flash(gettext("You need to specify a correct link to this album on Spotify!"), 'error') return redirect(url_for('.spotify', release_group_id=release_group_id)) album = spotify_api.get_album(spotify_id) if not album or album.get('error'): flash(gettext("You need to specify existing album from Spotify!"), 'error') return redirect(url_for('.spotify', release_group_id=release_group_id)) if request.method == 'POST': # TODO(roman): Check values that are returned by add_mapping (also take a look at related JS). mbspotify.add_mapping(release_group_id, 'spotify:album:%s' % spotify_id, current_user.id) flash(gettext("Spotify mapping has been added!"), 'success') return redirect(url_for('.spotify_list', release_group_id=release_group_id)) return render_template('mapping/confirm.html', release_group=release_group, spotify_album=album)
def spotify_report(): """Endpoint for reporting incorrect Spotify mappings. Shows confirmation page before submitting report to mbspotify. """ release_group_id = request.args.get('release_group_id') spotify_id = request.args.get('spotify_id') spotify_uri = "spotify:album:" + spotify_id # Checking if release group exists release_group = musicbrainz.get_release_group_by_id(release_group_id) if not release_group: flash(gettext("Can't find release group with that ID!"), 'error') return redirect( url_for('.spotify_list', release_group_id=release_group_id)) # Checking if release group is mapped to Spotify spotify_mappings = mbspotify.mappings(str(release_group_id)) if not (spotify_uri in spotify_mappings): flash(gettext("This album is not mapped to Spotify yet!"), 'error') return redirect( url_for('.spotify_list', release_group_id=release_group_id)) if request.method == 'POST': mbspotify.vote(release_group_id, spotify_uri, current_user.id) flash( gettext("Incorrect Spotify mapping has been reported. Thank you!"), 'success') return redirect( url_for('.spotify_list', release_group_id=release_group_id)) else: album = spotify_api.get_album(spotify_id) if not album or album.get('error'): flash(gettext("You need to specify existing album from Spotify!"), 'error') return redirect( url_for('.spotify_list', release_group_id=release_group_id)) return render_template('mapping/report.html', release_group=release_group, spotify_album=album)
def spotify_confirm(): """Confirmation page for adding new Spotify mapping.""" release_group_id = request.args.get('release_group_id') release_group = musicbrainz.get_release_group_by_id(release_group_id) if not release_group: flash( gettext("Only existing release groups can be mapped to Spotify!"), 'error') return redirect(url_for('search.index')) spotify_ref = request.args.get('spotify_ref', default=None) if not spotify_ref: flash(gettext("You need to select an album from Spotify!"), 'error') return redirect(url_for('.spotify', release_group_id=release_group_id)) spotify_id = parse_spotify_id(spotify_ref) if not spotify_id: flash( gettext( "You need to specify a correct link to this album on Spotify!" ), 'error') return redirect(url_for('.spotify', release_group_id=release_group_id)) album = spotify_api.get_album(spotify_id) if not album or album.get('error'): flash(gettext("You need to specify existing album from Spotify!"), 'error') return redirect(url_for('.spotify', release_group_id=release_group_id)) if request.method == 'POST': # TODO(roman): Check values that are returned by add_mapping (also take a look at related JS). mbspotify.add_mapping(release_group_id, 'spotify:album:%s' % spotify_id, current_user.id) flash(gettext("Spotify mapping has been added!"), 'success') return redirect( url_for('.spotify_list', release_group_id=release_group_id)) return render_template('mapping/confirm.html', release_group=release_group, spotify_album=album)
def test_album(self): self.assertDictEqual( spotify.get_album('random-spotify-id'), dict(url="https://api.spotify.com/v1/albums/random-spotify-id"))