def judge_submission_on_contest(submission: Submission, callback=None, **kwargs): def _callback(): invalidate_contest_participant(contest, submission.author_id) invalidate_contest_problem(contest, submission.problem_id) if callback: callback() contest = submission.contest or kwargs.get('contest') sync = kwargs.get('sync', False) if contest is None: raise ValueError('Judge on "None" contest') cases = 'all' if contest.system_tested else contest.run_tests_during_contest # print(cases) run_until_complete = contest.scoring_method == 'oi' and not submission.problem.group_enabled if not submission.contest: cases = 'all' _callback = None if cases != 'none': judge_submission_on_problem(submission, callback=_callback, case=cases, run_until_complete=run_until_complete, status_for_pretest=cases != 'all', sync=sync) else: submission.status = SubmissionStatus.SUBMITTED submission.save(update_fields=['status']) Thread(target=_callback).start()