File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,14 @@ public function viewAction(
494494
->getSingleScalarResult();
495495
}
496496

497+
$evalOnDemand = false;
498+
if (((int)$submission->getContestProblem()->getLazyEvalResults() === (int)DOMJudgeService::EVAL_DEFAULT
499+
&& (int)$this->config->get('lazy_eval_results') === (int)DOMJudgeService::EVAL_DEMAND)
500+
|| (int)$problem->getLazyEvalResults() === (int)DOMJudgeService::EVAL_DEMAND
501+
) {
502+
$evalOnDemand = true;
503+
}
504+
497505
$twigData = [
498506
'submission' => $submission,
499507
'lastSubmission' => $lastSubmission,
@@ -515,6 +523,7 @@ public function viewAction(
515523
'combinedRunCompare' => $submission->getProblem()->getCombinedRunCompare(),
516524
'requestedOutputCount' => $requestedOutputCount,
517525
'version_warnings' => [],
526+
'evalOnDemand' => $evalOnDemand,
518527
];
519528

520529
if ($selectedJudging === null) {
@@ -1203,6 +1212,14 @@ public function createJudgeTasks(string $submitId): RedirectResponse
12031212
return $this->redirectToRoute('jury_submission', ['submitId' => $submitId]);
12041213
}
12051214

1215+
#[Route(path: '/{submitId<\d+>}/create-tasks-full', name: 'jury_submission_create_tasks_full')]
1216+
public function createJudgeTasksFull(string $submitId): RedirectResponse
1217+
{
1218+
$this->dj->unblockJudgeTasksForSubmission($submitId, true);
1219+
$this->addFlash('info', "Started judging all testcases for submission: $submitId");
1220+
return $this->redirectToRoute('jury_submission', ['submitId' => $submitId]);
1221+
}
1222+
12061223
/**
12071224
* @param string[] $allErrors
12081225
*/
Original file line numberDiff line numberDiff line change
@@ -1126,7 +1126,7 @@ public function unblockJudgeTasksForProblem(int $probId): void
11261126
}
11271127
}
11281128

1129-
public function unblockJudgeTasksForSubmission(string $submissionId): void
1129+
public function unblockJudgeTasksForSubmission(string $submissionId, bool $judgeCompletely = false): void
11301130
{
11311131
// These are all the judgings that don't have associated judgetasks yet. Check whether we unblocked them.
11321132
$judgings = $this->helperUnblockJudgeTasks()
@@ -1136,7 +1136,7 @@ public function unblockJudgeTasksForSubmission(string $submissionId): void
11361136
->getQuery()
11371137
->getResult();
11381138
foreach ($judgings as $judging) {
1139-
$this->maybeCreateJudgeTasks($judging, JudgeTask::PRIORITY_DEFAULT, true);
1139+
$this->maybeCreateJudgeTasks($judging, JudgeTask::PRIORITY_DEFAULT, true, judgeCompletely: $judgeCompletely);
11401140
}
11411141
}
11421142

@@ -1151,7 +1151,7 @@ public function unblockJudgeTasks(): void
11511151
}
11521152
}
11531153

1154-
public function maybeCreateJudgeTasks(Judging $judging, int $priority = JudgeTask::PRIORITY_DEFAULT, bool $manualRequest = false): void
1154+
public function maybeCreateJudgeTasks(Judging $judging, int $priority = JudgeTask::PRIORITY_DEFAULT, bool $manualRequest = false, bool $judgeCompletely = false): void
11551155
{
11561156
$submission = $judging->getSubmission();
11571157
$problem = $submission->getContestProblem();
@@ -1181,6 +1181,10 @@ public function maybeCreateJudgeTasks(Judging $judging, int $priority = JudgeTas
11811181
return;
11821182
}
11831183

1184+
if ($judgeCompletely) {
1185+
$judging->setJudgeCompletely(true);
1186+
}
1187+
11841188
// We use a mass insert query, since that is way faster than doing a separate insert for each testcase.
11851189
// We first insert judgetasks, then select their ID's and finally insert the judging runs.
11861190

Original file line numberDiff line numberDiff line change
@@ -395,10 +395,19 @@
395395
&nbsp;
396396
{% if selectedJudging is null or selectedJudging.result is empty %}
397397
{%- if not selectedJudging or not selectedJudging.started %}
398+
{% if evalOnDemand %}
399+
<a href="{{ path('jury_submission_create_tasks_full', {'submitId': submission.submitid}) }}">
400+
<button class="btn btn-sm btn-outline-secondary" >
401+
<i class="fas fa-gavel"></i>
402+
Judge submission (all testcases)
403+
</button>
404+
</a>
405+
&nbsp;
406+
{% endif %}
398407
<a href="{{ path('jury_submission_create_tasks', {'submitId': submission.submitid}) }}">
399408
<button class="btn btn-sm btn-outline-secondary" >
400409
<i class="fas fa-gavel"></i>
401-
Judge submission
410+
Judge submission {% if evalOnDemand %}(lazy){% endif %}
402411
</button>
403412
</a>
404413
{%- endif %}

0 commit comments

Comments
 (0)