forked from metabrainz/critiquebrainz
/
views.py
36 lines (27 loc) · 1.18 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from flask import Blueprint, render_template
from flask_babel import format_number
from critiquebrainz.data.model.user import User
from critiquebrainz.data.model.review import Review
from bs4 import BeautifulSoup
from markdown import markdown
DEFAULT_CACHE_EXPIRATION = 10 * 60 # seconds
frontend_bp = Blueprint('frontend', __name__)
@frontend_bp.route('/')
def index():
# Popular reviews
popular_reviews = Review.get_popular(6)
for review in popular_reviews:
# Preparing text for preview
preview = markdown(review['text'], safe_mode="escape")
review['preview'] = ''.join(BeautifulSoup(preview).findAll(text=True))
# Recent reviews
recent_reviews, _ = Review.list(sort='created', limit=9)
# Statistics
# TODO(roman): Move these into models:
review_count = format_number(Review.query.filter(Review.is_draft == False).count())
user_count = format_number(User.query.count())
return render_template('index.html', popular_reviews=popular_reviews, recent_reviews=recent_reviews,
reviews_total=review_count, users_total=user_count)
@frontend_bp.route('/about')
def about():
return render_template('about.html')