Fix leaderboard 500 on production (NotImplementedError) (#563)
* leaderboard: correct LB set when !ENABLE_SERVICES * leaderboard: fix NotImplementedError UserBlockLeaderboard did not, in fact, implement `value_func`. Nor did its superclass. The bug was replicated by having at least one UserBlock in the test data.
This commit is contained in:
parent
1f7e7afad3
commit
1cf017c42a
3 changed files with 11 additions and 2 deletions
|
@ -168,6 +168,10 @@ class UserBlockLeaderboard(_CountedAndRankedLeaderboard):
|
||||||
def v_value(self) -> int:
|
def v_value(self) -> int:
|
||||||
return self._v_value
|
return self._v_value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def value_func(self) -> Callable[[User], int]:
|
||||||
|
return lambda u: self._all_users[u]
|
||||||
|
|
||||||
class RawSqlLeaderboard(Leaderboard):
|
class RawSqlLeaderboard(Leaderboard):
|
||||||
def __init__(self, meta:LeaderboardMeta, db:Session, query:str) -> None: # should be LiteralString on py3.11+
|
def __init__(self, meta:LeaderboardMeta, db:Session, query:str) -> None: # should be LiteralString on py3.11+
|
||||||
super().__init__(None, meta)
|
super().__init__(None, meta)
|
||||||
|
|
|
@ -46,6 +46,9 @@ def pusher_thread2(interests, notifbody, username):
|
||||||
_lb_received_downvotes_meta = LeaderboardMeta("Downvotes", "received downvotes", "received-downvotes", "downvotes", "downvoted")
|
_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_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():
|
def leaderboard_thread():
|
||||||
global lb_downvotes_received, lb_upvotes_given
|
global lb_downvotes_received, lb_upvotes_given
|
||||||
|
|
||||||
|
|
|
@ -382,7 +382,9 @@ def leaderboard(v:User):
|
||||||
|
|
||||||
# note: lb_downvotes_received and lb_upvotes_given are global variables
|
# note: lb_downvotes_received and lb_upvotes_given are global variables
|
||||||
# that are populated by leaderboard_thread() in files.helpers.services
|
# 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)
|
return render_template("leaderboard.html", v=v, leaderboards=leaderboards)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue