def entity(id): """Artist page. Displays release groups (split up into several sections depending on their type), artist information (type, members/member of, external links). """ artist = musicbrainz.get_artist_by_id(id) if not artist: raise NotFound(gettext("Sorry, we couldn't find an artist with that MusicBrainz ID.")) # Note that some artists might not have a list of members because they are not a band band_members = _get_band_members(artist) release_type = request.args.get('release_type', default='album') if release_type not in ['album', 'single', 'ep', 'broadcast', 'other']: # supported release types raise BadRequest("Unsupported release type.") page = int(request.args.get('page', default=1)) if page < 1: return redirect(url_for('.reviews')) limit = 20 offset = (page - 1) * limit count, release_groups = musicbrainz.browse_release_groups(artist_id=id, release_types=[release_type], limit=limit, offset=offset) for release_group in release_groups: # TODO(roman): Count reviews instead of fetching them. reviews, review_count = Review.list(entity_id=release_group['id'], entity_type='release_group', sort='created', limit=1) release_group['review_count'] = review_count return render_template( 'artist.html', id=id, artist=artist, release_type=release_type, release_groups=release_groups, page=page, limit=limit, count=count, band_members=band_members )
def entity(mbid): """Artist page. Displays release groups (split up into several sections depending on their type), artist information (type, members/member of, external links). """ artist = musicbrainz.get_artist_by_id(mbid) if not artist: raise NotFound( gettext( "Sorry, we couldn't find an artist with that MusicBrainz ID.")) # Note that some artists might not have a list of members because they are not a band band_members = _get_band_members(artist) release_type = request.args.get('release_type', default='album') if release_type not in ['album', 'single', 'ep', 'broadcast', 'other']: # supported release types raise BadRequest("Unsupported release type.") page = int(request.args.get('page', default=1)) if page < 1: return redirect(url_for('.reviews')) limit = 20 offset = (page - 1) * limit count, release_groups = musicbrainz.browse_release_groups( artist_id=mbid, release_types=[release_type], limit=limit, offset=offset) for release_group in release_groups: # TODO(roman): Count reviews instead of fetching them. reviews, review_count = Review.list(entity_id=release_group['id'], entity_type='release_group', sort='created', limit=1) release_group['review_count'] = review_count return render_template( 'artist/entity.html', id=mbid, artist=artist, release_type=release_type, release_groups=release_groups, page=page, limit=limit, count=count, band_members=band_members, )