forked from rDrama/rDrama
add effortposts leaderboard
parent
3a31ae9019
commit
32e8160fe2
|
@ -200,3 +200,17 @@ class Leaderboard:
|
||||||
if not position: position = (leaderboard.count() + 1, 0)
|
if not position: position = (leaderboard.count() + 1, 0)
|
||||||
leaderboard = leaderboard.limit(limit).all()
|
leaderboard = leaderboard.limit(limit).all()
|
||||||
return (leaderboard, position[0], position[1])
|
return (leaderboard, position[0], position[1])
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_effortposts_lb(cls, lb_criteria, v, users, limit, desc):
|
||||||
|
sq = g.db.query(lb_criteria, cls.count_and_label(lb_criteria), cls.rank_filtered_rank_label_by_desc(lb_criteria))
|
||||||
|
sq = sq.filter(Post.effortpost == True)
|
||||||
|
sq = sq.group_by(lb_criteria).subquery()
|
||||||
|
sq_criteria = User.id == sq.c.author_id
|
||||||
|
|
||||||
|
leaderboard = g.db.query(User, sq.c.count).join(sq, sq_criteria).order_by(sq.c.count.desc())
|
||||||
|
position = g.db.query(User.id, sq.c.rank, sq.c.count).join(sq, sq_criteria).filter(User.id == v.id).one_or_none()
|
||||||
|
if position: position = (position[1], position[2])
|
||||||
|
else: position = (leaderboard.count() + 1, 0)
|
||||||
|
leaderboard = leaderboard.limit(limit).all()
|
||||||
|
return (leaderboard, position[0], position[1])
|
||||||
|
|
|
@ -159,3 +159,11 @@ def leaderboard_average_upvotes_per_post(v):
|
||||||
def leaderboard_average_upvotes_per_comment(v):
|
def leaderboard_average_upvotes_per_comment(v):
|
||||||
leaderboard = Leaderboard("Average upvotes per comment", "average upvotes per comment", "average-upvotes-per-comment", "Average Upvotes per Comment", "comments", Leaderboard.get_avg_upvotes_lb, Comment, v, None, None)
|
leaderboard = Leaderboard("Average upvotes per comment", "average upvotes per comment", "average-upvotes-per-comment", "Average Upvotes per Comment", "comments", Leaderboard.get_avg_upvotes_lb, Comment, v, None, None)
|
||||||
return render_template("leaderboard.html", v=v, leaderboard=leaderboard)
|
return render_template("leaderboard.html", v=v, leaderboard=leaderboard)
|
||||||
|
|
||||||
|
@app.get("/leaderboard/effortposts")
|
||||||
|
@limiter.limit(DEFAULT_RATELIMIT, deduct_when=lambda response: response.status_code < 400)
|
||||||
|
@limiter.limit(DEFAULT_RATELIMIT, deduct_when=lambda response: response.status_code < 400, key_func=get_ID)
|
||||||
|
@auth_required
|
||||||
|
def leaderboard_effortposts(v):
|
||||||
|
leaderboard = Leaderboard("Effortposts", "effortposts", "effortposts", "Effortposts", None, Leaderboard.get_effortposts_lb, Post.author_id, v, None, None)
|
||||||
|
return render_template("leaderboard.html", v=v, leaderboard=leaderboard)
|
||||||
|
|
|
@ -28,7 +28,8 @@
|
||||||
<a {% if request.path == "/leaderboard/casino_winnings_top" %}class="font-weight-bolder"{% endif %} href="/leaderboard/casino_winnings_top">Casino winnings (top)</a> •
|
<a {% if request.path == "/leaderboard/casino_winnings_top" %}class="font-weight-bolder"{% endif %} href="/leaderboard/casino_winnings_top">Casino winnings (top)</a> •
|
||||||
<a {% if request.path == "/leaderboard/casino_winnings_bottom" %}class="font-weight-bolder"{% endif %} href="/leaderboard/casino_winnings_bottom">Casino winnings (bottom)</a> •
|
<a {% if request.path == "/leaderboard/casino_winnings_bottom" %}class="font-weight-bolder"{% endif %} href="/leaderboard/casino_winnings_bottom">Casino winnings (bottom)</a> •
|
||||||
<a {% if request.path == "/leaderboard/average_upvotes_per_post" %}class="font-weight-bolder"{% endif %} href="/leaderboard/average_upvotes_per_post">Average upvotes per post</a> •
|
<a {% if request.path == "/leaderboard/average_upvotes_per_post" %}class="font-weight-bolder"{% endif %} href="/leaderboard/average_upvotes_per_post">Average upvotes per post</a> •
|
||||||
<a {% if request.path == "/leaderboard/average_upvotes_per_comment" %}class="font-weight-bolder"{% endif %} href="/leaderboard/average_upvotes_per_comment">Average upvotes per comment</a>
|
<a {% if request.path == "/leaderboard/average_upvotes_per_comment" %}class="font-weight-bolder"{% endif %} href="/leaderboard/average_upvotes_per_comment">Average upvotes per comment</a> •
|
||||||
|
<a {% if request.path == "/leaderboard/effortposts" %}class="font-weight-bolder"{% endif %} href="/leaderboard/effortposts">Effortposts</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% macro format_user_in_table(user, style, position_no, value, user_relative_url) %}
|
{% macro format_user_in_table(user, style, position_no, value, user_relative_url) %}
|
||||||
|
|
Loading…
Reference in New Issue