diff --git a/files/classes/leaderboard.py b/files/classes/leaderboard.py index 5e7c81fe7..b505901b8 100644 --- a/files/classes/leaderboard.py +++ b/files/classes/leaderboard.py @@ -132,7 +132,7 @@ class BadgeMarseyLeaderboard(_CountedAndRankedLeaderboard): @property def value_func(self) -> Callable[[User], int]: - return lambda u:self._all_users[u] + return lambda u: self._all_users[u] class UserBlockLeaderboard(_CountedAndRankedLeaderboard): def __init__(self, v:User, meta:LeaderboardMeta, db:Session, column:Column): @@ -168,6 +168,10 @@ class UserBlockLeaderboard(_CountedAndRankedLeaderboard): def v_value(self) -> int: return self._v_value + @property + def value_func(self) -> Callable[[User], int]: + return lambda u: self._all_users[u] + class RawSqlLeaderboard(Leaderboard): def __init__(self, meta:LeaderboardMeta, db:Session, query:str) -> None: # should be LiteralString on py3.11+ super().__init__(None, meta) diff --git a/files/helpers/services.py b/files/helpers/services.py index 3b8312e36..baa35812e 100644 --- a/files/helpers/services.py +++ b/files/helpers/services.py @@ -46,6 +46,9 @@ def pusher_thread2(interests, notifbody, username): _lb_received_downvotes_meta = LeaderboardMeta("Downvotes", "received downvotes", "received-downvotes", "downvotes", "downvoted") _lb_given_upvotes_meta = LeaderboardMeta("Upvotes", "given upvotes", "given-upvotes", "upvotes", "upvoting") +lb_downvotes_received: ReceivedDownvotesLeaderboard | None = None +lb_upvotes_given: GivenUpvotesLeaderboard | None = None + def leaderboard_thread(): global lb_downvotes_received, lb_upvotes_given diff --git a/files/routes/users.py b/files/routes/users.py index b3db5fe7e..7e6a8c8c2 100644 --- a/files/routes/users.py +++ b/files/routes/users.py @@ -382,7 +382,9 @@ def leaderboard(v:User): # note: lb_downvotes_received and lb_upvotes_given are global variables # that are populated by leaderboard_thread() in files.helpers.services - leaderboards = [coins, coins_spent, truescore, subscribers, posts, comments, received_awards, badges, blocks, lb_downvotes_received, lb_upvotes_given] + leaderboards = [coins, coins_spent, truescore, subscribers, posts, comments, received_awards, badges, blocks] + if lb_downvotes_received is not None and lb_upvotes_given is not None: + leaderboards.extend([lb_downvotes_received, lb_upvotes_given]) return render_template("leaderboard.html", v=v, leaderboards=leaderboards)