forked from rDrama/rDrama
1
0
Fork 0

restore "downvotes received" leaderboard

master
Aevann 2023-04-25 11:50:47 +02:00
parent bde4b10813
commit b952de3cee
3 changed files with 34 additions and 1 deletions

View File

@ -119,3 +119,19 @@ class Leaderboard:
except: pos13 = (len(users13)+1, 0)
return (users13_accs, pos13[0], pos13[1])
@classmethod
def get_downvotes_lb(cls, lb_criteria, v:User, db:scoped_session, users:Any, limit):
users9 = cache.get("users9") or []
users9_1 = cache.get("users9_1") or []
users9_2 = cache.get("users9_2") or []
users9_accs = db.query(User).filter(User.id.in_(users9_1)).all()
users9_accs = sorted(users9_accs, key=lambda x: users9_1.index(x.id))
users9_accs = tuple(zip(users9_accs, users9_2))
try:
pos9 = [x[0] for x in users9].index(v.id)
pos9 = (pos9+1, users9[pos9][1])
except: pos9 = (len(users9)+1, 0)
return (users9_accs, pos9[0], pos9[1])

View File

@ -130,7 +130,7 @@ def _generate_emojis_zip():
cache.set('emojis_size', size)
def _leaderboard_task():
def _leaderboard_task():
votes1 = g.db.query(Vote.user_id, func.count(Vote.user_id)).filter(Vote.vote_type==1).group_by(Vote.user_id).order_by(func.count(Vote.user_id).desc()).all()
votes2 = g.db.query(CommentVote.user_id, func.count(CommentVote.user_id)).filter(CommentVote.vote_type==1).group_by(CommentVote.user_id).order_by(func.count(CommentVote.user_id).desc()).all()
votes3 = Counter(dict(votes1)) + Counter(dict(votes2))
@ -145,3 +145,18 @@ def _leaderboard_task():
cache.set("user13", list(users13))
cache.set("users13_1", list(users13_1))
cache.set("users13_2", list(users13_2))
votes1 = g.db.query(Submission.author_id, func.count(Submission.author_id)).join(Vote).filter(Vote.vote_type==-1).group_by(Submission.author_id).order_by(func.count(Submission.author_id).desc()).all()
votes2 = g.db.query(Comment.author_id, func.count(Comment.author_id)).join(CommentVote).filter(CommentVote.vote_type==-1).group_by(Comment.author_id).order_by(func.count(Comment.author_id).desc()).all()
votes3 = Counter(dict(votes1)) + Counter(dict(votes2))
users8 = g.db.query(User.id).filter(User.id.in_(votes3.keys())).all()
users9 = []
for user in users8:
users9.append((user.id, votes3[user.id]))
if not users9: users9 = [(None,None)]
users9 = sorted(users9, key=lambda x: x[1], reverse=True)
users9_1, users9_2 = zip(*users9[:25])
cache.set("users9", list(users9))
cache.set("users9_1", list(users9_1))
cache.set("users9_2", list(users9_2))

View File

@ -419,6 +419,8 @@ def leaderboard(v:User):
leaderboards.append(Leaderboard("Upvotes given", "upvotes given", "upvotes-given", "Upvotes Given", "upvoting", Leaderboard.get_upvotes_lb, None, v, None, g.db, None))
leaderboards.append(Leaderboard("Downvotes received", "downvotes received", "downvotes-received", "Downvotes Received", "downvoters", Leaderboard.get_downvotes_lb, None, v, None, g.db, None))
return render_template("leaderboard.html", v=v, leaderboards=leaderboards)
@app.get("/<int:id>/css")