60 lines
1.7 KiB
Python
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(),
|
|
) |