@@ -142,31 +142,21 @@ def update_leaderboard(
142142 ):
143143 task = definition .task
144144 try :
145+ lb_id = self .get_leaderboard_id (name )
145146 self .cursor .execute (
146147 """
147148 UPDATE leaderboard.leaderboard
148149 SET deadline = %s, task = %s, description = %s
149- WHERE name = %s;
150+ WHERE id = %s;
150151 """ ,
151152 (
152153 deadline .astimezone (datetime .timezone .utc ),
153154 task .to_str (),
154155 definition .description ,
155- name ,
156+ lb_id ,
156157 ),
157158 )
158159
159- self .cursor .execute (
160- """
161- SELECT id
162- FROM leaderboard.leaderboard
163- WHERE name = %s
164- """ ,
165- (name ,),
166- )
167-
168- lb_id = self .cursor .fetchone ()[0 ]
169-
170160 # replace templates
171161 self .cursor .execute (
172162 """
@@ -237,8 +227,13 @@ def delete_leaderboard(self, leaderboard_name: str, force: bool = False):
237227 self .name_cache .invalidate () # Invalidate autocomplete cache
238228 except psycopg2 .Error as e :
239229 self .connection .rollback ()
230+ if isinstance (e , psycopg2 .errors .ForeignKeyViolation ):
231+ raise KernelBotError (
232+ f"Could not delete leaderboard `{ leaderboard_name } ` with existing submissions."
233+ ) from e
234+
240235 logger .exception ("Could not delete leaderboard %s." , leaderboard_name , exc_info = e )
241- raise KernelBotError (f"Could not delete leaderboard { leaderboard_name } ." ) from e
236+ raise KernelBotError (f"Could not delete leaderboard ` { leaderboard_name } ` ." ) from e
242237
243238 def create_submission (
244239 self ,
@@ -428,7 +423,7 @@ def get_leaderboard_names(self, active_only: bool = False) -> list[str]:
428423 def get_leaderboards (self ) -> list ["LeaderboardItem" ]:
429424 self .cursor .execute (
430425 """
431- SELECT id, name, deadline, task, creator_id, forum_id, description
426+ SELECT id, name, deadline, task, creator_id, forum_id, description, secret_seed
432427 FROM leaderboard.leaderboard
433428 """
434429 )
@@ -452,6 +447,7 @@ def get_leaderboards(self) -> list["LeaderboardItem"]:
452447 creator_id = lb [4 ],
453448 forum_id = lb [5 ],
454449 description = lb [6 ],
450+ secret_seed = lb [7 ],
455451 )
456452 )
457453
0 commit comments