def song(slug, semitones=None, root=None): """A song optionally transposed by given semitones.""" logging.info(f"Got request for song {slug}") playlist: Playlist = get_selected_playlist() if playlist and not root: try: root = playlist.roots[slug] except KeyError: pass logging.debug("Got selected playlist") if session.get('logged_in') and request.args.get('random') != 'true': Session.get().add_song(slug) logging.debug("Added song to session") song = Song.get_or_404(slug, semitones=semitones, root=root, unicode=True) artist = Artist.get(song.artist_slug) logging.debug("Read song data from disk") related_songs = get_related(slug) if related_songs is not None: related_title = 'Σχετικά' else: related_songs = [song for song in artist.songs if song.slug != slug] related_title = ('Άλλα παραδοσιακά' if song.artist == 'Παραδοσιακό' else f'Άλλα του {artist.genitive}') logging.debug("Rendering\n") return render_template( 'song.html', song=song, artist=artist, songs=related_songs, related_title=related_title, semitones=semitones, root=root, admin=session.get('logged_in'), )
def songprint(slug, semitones=None, root=None): """A song in a printable form.""" song = Song.get_or_404(slug, semitones=semitones, root=root, unicode=True) return render_template('songprint.html', song=song)