Source code for tahrir.views.root
from datetime import date, datetime, timedelta, timezone
import sqlalchemy as sa
import tahrir_api.model as m
from flask import g, render_template
from tahrir.utils.date_time import get_start_week
from tahrir.utils.docs import load_docs
from . import blueprint as bp
[docs]
@bp.route("/")
def home():
n = 5 # n is the number of items displayed in each column.
latest_awards_query = (
sa.select(m.Assertion)
.join(m.Person)
.filter(m.Person.opt_out.is_(False))
.order_by(sa.desc(m.Assertion.issued_on))
.limit(n)
)
latest_awards = g.tahrirdb.session.scalars(latest_awards_query)
start = get_start_week()
stop = start + timedelta(days=6)
weekly_leaders = g.tahrirdb.make_leaderboard(
start=start,
stop=stop,
)
now = datetime.now(timezone.utc)
start = date(now.year, now.month, 1)
if now.month == 12:
stop = date(now.year + 1, 1, 1) - timedelta(days=1)
else:
stop = date(now.year, now.month + 1, 1) - timedelta(days=1)
monthly_leaders = g.tahrirdb.make_leaderboard(
start=start,
stop=stop,
)
return render_template(
"index.html",
latest_awards=latest_awards,
weekly_leaders=weekly_leaders,
monthly_leaders=monthly_leaders,
n=n,
)
[docs]
@bp.route("/about")
def about():
return render_template(
"about.html",
content=load_docs("about"),
)