suchwow/suchwow/routes/main.py

60 lines
1.7 KiB
Python

from math import ceil
from flask import Blueprint, request, render_template, flash
from suchwow._models import Post, User, TipReceived
from suchwow.wownero import from_atomic
bp = Blueprint('main', 'main')
@bp.route("/")
def index():
itp = 15
page = request.args.get("page", 1)
submitter = request.args.get("submitter", None)
content = request.args.get("content", None)
if content == 'latest_tipped':
posts = Post.select().join(TipReceived).distinct().order_by(TipReceived.timestamp.desc()).limit(30)
return render_template(
"index.html",
posts=posts,
title="Latest Tipped Memes"
)
try:
page = int(page)
except:
flash("Wow, wtf hackerman. Cool it.", "is-danger")
page = 1
posts = Post.select().where(Post.approved == True).order_by(Post.timestamp.desc())
if submitter:
user = User.select().where(User.username == submitter)
if not user:
flash('That user does not exist!', 'is-warning')
else:
posts = posts.where(Post.user == user)
paginated_posts = posts.paginate(page, itp)
total_pages = ceil(posts.count() / itp)
return render_template(
"index.html",
posts=paginated_posts,
page=page,
total_pages=total_pages,
title="Latest Memes"
)
@bp.route("/about")
def about():
mods = User.select().where(User.moderator == True)
return render_template(
"about.html",
mods=mods,
meme_count=Post.select().where(Post.approved == True).count(),
wow_received=round(from_atomic(sum([i.amount for i in TipReceived.select()])), 2),
memer_count=User.select().count(),
)