From 38840de80f927fc818c2aaf63f0be3c1b0131ace Mon Sep 17 00:00:00 2001 From: Aevann Date: Mon, 19 Feb 2024 00:53:39 +0200 Subject: [PATCH] fix 500 error --- files/classes/leaderboard.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/files/classes/leaderboard.py b/files/classes/leaderboard.py index ba179b14b..a6b7ed5e5 100644 --- a/files/classes/leaderboard.py +++ b/files/classes/leaderboard.py @@ -192,11 +192,18 @@ class Leaderboard: else: minimum = 100 - sq = g.db.query(lb_criteria.author_id, cls.avg_and_label(lb_criteria.upvotes, lb_criteria.author_id)).filter_by(draft=False, deleted_utc=0).group_by(lb_criteria.author_id).having(func.count(lb_criteria.author_id) >= minimum).subquery() + sq = g.db.query(lb_criteria.author_id, cls.avg_and_label(lb_criteria.upvotes, lb_criteria.author_id)).filter_by(deleted_utc=0) + if cls == Post: + sq = sq.filter_by(draft=False) + sq = sq.group_by(lb_criteria.author_id).having(func.count(lb_criteria.author_id) >= minimum).subquery() leaderboard = g.db.query(User, sq.c.avg).join(User, User.id == sq.c.author_id).order_by(sq.c.avg.desc()) - sq = g.db.query(lb_criteria.author_id, cls.avg_and_label(lb_criteria.upvotes, lb_criteria.author_id), cls.rank_filtered_rank_label_by_desc_avg(lb_criteria.upvotes, lb_criteria.author_id)).filter_by(draft=False, deleted_utc=0).group_by(lb_criteria.author_id).having(func.count(lb_criteria.author_id) >= minimum).subquery() + sq = g.db.query(lb_criteria.author_id, cls.avg_and_label(lb_criteria.upvotes, lb_criteria.author_id), cls.rank_filtered_rank_label_by_desc_avg(lb_criteria.upvotes, lb_criteria.author_id)).filter_by(deleted_utc=0) + if cls == Post: + sq = sq.filter_by(draft=False) + sq = sq.group_by(lb_criteria.author_id).having(func.count(lb_criteria.author_id) >= minimum).subquery() position = g.db.query(sq.c.rank, sq.c.avg).join(User, User.id == sq.c.author_id).filter(sq.c.author_id == v.id).limit(1).one_or_none() + if not position: position = (leaderboard.count() + 1, 0) leaderboard = leaderboard.limit(limit).all() return (leaderboard, position[0], position[1])