def entity(id, rev=None): review = get_review_or_404(id) # Not showing review if it isn't published yet and not viewed by author. if review["is_draft"] and not (current_user.is_authenticated and current_user == review["user"]): raise NotFound(gettext("Can't find a review with the specified ID.")) if review["is_hidden"]: if not current_user.is_admin(): raise Forbidden( gettext("Review has been hidden. " "You need to be an administrator to view it.")) else: flash.warn(gettext("Review has been hidden.")) spotify_mappings = None soundcloud_url = None if review["entity_type"] == 'release_group': spotify_mappings = mbspotify.mappings(str(review["entity_id"])) soundcloud_url = soundcloud.get_url(str(review["entity_id"])) count = db_revision.get_count(id) if not rev: rev = count if rev < count: flash.info( gettext( 'You are viewing an old revision, the review has been updated since then.' )) elif rev > count: raise NotFound( gettext("The revision you are looking for does not exist.")) revision = db_revision.get(id, offset=count - rev)[0] if not review[ "is_draft"] and current_user.is_authenticated: # if user is logged in, get their vote for this review try: vote = db_vote.get(user_id=current_user.id, revision_id=revision['id']) except db_exceptions.NoDataFoundException: vote = None else: # otherwise set vote to None, its value will not be used vote = None if revision["text"] is None: review["text_html"] = None else: review["text_html"] = markdown(revision['text'], safe_mode="escape") user_all_reviews, review_count = db_review.list_reviews( # pylint: disable=unused-variable user_id=review["user_id"], sort="random", exclude=[review["id"]], ) other_reviews = user_all_reviews[:3] avg_rating = get_avg_rating(review["entity_id"], review["entity_type"]) return render_template('review/entity/%s.html' % review["entity_type"], review=review, spotify_mappings=spotify_mappings, soundcloud_url=soundcloud_url, vote=vote, other_reviews=other_reviews, avg_rating=avg_rating)
def mappings(mbid=None): """Get mappings to Spotify for a specified MusicBrainz ID. Returns: List containing Spotify URIs that are mapped to specified MBID. """ if _base_url is None: flash.warn(lazy_gettext(_UNAVAILABLE_MSG)) return [] data = cache.get(mbid, _CACHE_NAMESPACE) if not data: try: session = requests.Session() session.mount(_base_url, HTTPAdapter(max_retries=2)) resp = session.post( url=_base_url + 'mapping', headers={'Content-Type': 'application/json'}, data=json.dumps({'mbid': mbid}), ) resp.raise_for_status() data = resp.json().get('mappings') except RequestException: flash.warn(lazy_gettext("Spotify mapping server is unavailable. You will not see an embedded player.")) return [] cache.set(key=mbid, namespace=_CACHE_NAMESPACE, val=data) return data
def mappings(mbid=None): """Get mappings to Spotify for a specified MusicBrainz ID. Returns: List containing Spotify URIs that are mapped to specified MBID. """ if _base_url is None: flash.warn(lazy_gettext(_UNAVAILABLE_MSG)) return [] data = cache.get(mbid, _CACHE_NAMESPACE) if not data: try: session = requests.Session() session.mount(_base_url, HTTPAdapter(max_retries=2)) resp = session.post( url=_base_url + 'mapping', headers={'Content-Type': 'application/json'}, data=json.dumps({'mbid': mbid}), ) resp.raise_for_status() data = resp.json().get('mappings') except RequestException: flash.warn( lazy_gettext( "Spotify mapping server is unavailable. You will not see an embedded player." )) return [] cache.set(key=mbid, namespace=_CACHE_NAMESPACE, val=data, time=MBSPOTIFY_CACHE_TIMEOUT) return data
def browse(): results, count = db_moderation_log.list_logs(limit=RESULTS_LIMIT) if not results: flash.warn(gettext("No logs to display.")) results = groupby(results, lambda log: log["timestamp"].strftime('%d %b, %G')) return render_template('log/browse.html', count=count, results=results, limit=RESULTS_LIMIT)
def browse(): results, count = db_moderation_log.list_logs(limit=RESULTS_LIMIT) if not results: flash.warn(gettext("No logs to display.")) results = groupby(results, lambda log: log["timestamp"].strftime('%d %b, %G')) return render_template('log/browse.html', count=count, results=results, limit=RESULTS_LIMIT)