From 42d810a5e70ca119bb7a39d90d2ec165136b3315 Mon Sep 17 00:00:00 2001 From: TLSM Date: Wed, 25 May 2022 06:09:13 -0400 Subject: [PATCH] Leaderboard: fix user join for ea48c46b0fd9. After ea48c46b0fd9 adds the leaderboard table for most blocked user, it appeared that the user profile links did not appear correctly. As such, it was necessary to join on the appropriate information. This has been (mostly) resolved, excluding the removal of profile picture because profile_url has logic in Python. If someone knows SQLAlchemy better than I do, please redo this and add the profile pictures back into the template. However, I got tired of fighting with the ORM when I already knew the damn query. --- files/routes/users.py | 7 +++++-- files/templates/leaderboard.html | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/files/routes/users.py b/files/routes/users.py index 2f5ea2c492..4625038556 100644 --- a/files/routes/users.py +++ b/files/routes/users.py @@ -10,6 +10,7 @@ from files.mail import * from flask import * from files.__main__ import app, limiter, db_session import sqlalchemy +from sqlalchemy import text from pusher_push_notifications import PushNotifications from collections import Counter import gevent @@ -538,8 +539,10 @@ def leaderboard(v): sq = g.db.query(User.id, func.rank().over(order_by=User.winnings).label("rank")).subquery() pos15 = g.db.query(sq.c.id, sq.c.rank).filter(sq.c.id == v.id).limit(1).one()[1] - usersBlk = g.db.query(UserBlock.target_id, func.count().label('blocked_by')) \ - .group_by(UserBlock.target_id).order_by(sqlalchemy.desc('blocked_by')).limit(25).all() + usersBlk = g.db.execute(text('SELECT \ + blk.target_id, blk.n, users.username, users.namecolor, users.patron \ + FROM (SELECT target_id, count(target_id) AS n FROM userblocks GROUP BY target_id) AS blk \ + JOIN users ON users.id = blk.target_id ORDER BY blk.n DESC LIMIT 25')) return render_template("leaderboard.html", v=v, users1=users1, pos1=pos1, users2=users2, pos2=pos2, users3=users3, pos3=pos3, users4=users4, pos4=pos4, users5=users5, pos5=pos5, diff --git a/files/templates/leaderboard.html b/files/templates/leaderboard.html index 1fd8219198..10b4c949fd 100644 --- a/files/templates/leaderboard.html +++ b/files/templates/leaderboard.html @@ -510,10 +510,10 @@ {% for user in usersBlk %} - + {{loop.index}} - {{user.username}} - {{user.blocked_by}} + {{user.username}} + {{user.n}} {% endfor %}