From 2e74c6fa26314d6235e6e2a0eccdd273fa809f10 Mon Sep 17 00:00:00 2001 From: GabrielCWT <77312579+GabrielCWT@users.noreply.github.com> Date: Thu, 22 Aug 2024 22:18:03 +0800 Subject: [PATCH 1/2] fix: Auto publish for non-autograded assessments --- lib/cadet/assessments/assessments.ex | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/cadet/assessments/assessments.ex b/lib/cadet/assessments/assessments.ex index 3c6eb0548..a3713a37c 100644 --- a/lib/cadet/assessments/assessments.ex +++ b/lib/cadet/assessments/assessments.ex @@ -2280,9 +2280,11 @@ defmodule Cadet.Assessments do submission = Submission |> join(:inner, [s], a in assoc(s, :assessment)) - |> preload([_, a], assessment: a) + |> preload([_, a], assessment: {a, :config}) |> Repo.get(submission_id) + is_grading_auto_published = submission.assessment.config.is_grading_auto_published + with {:answer_found?, true} <- {:answer_found?, is_map(answer)}, {:status, true} <- {:status, answer.submission.status == :submitted or is_own_submission}, @@ -2290,6 +2292,9 @@ defmodule Cadet.Assessments do {:valid, Answer.grading_changeset(answer, attrs)}, {:ok, _} <- Repo.update(changeset) do update_xp_bonus(submission) + if is_grading_auto_published and is_fully_graded?(submission_id) do + publish_grading(submission_id) + end {:ok, nil} else {:answer_found?, false} -> From 821708b7ceb5f86598b6e152cd14178f98dd3117 Mon Sep 17 00:00:00 2001 From: GabrielCWT <77312579+GabrielCWT@users.noreply.github.com> Date: Thu, 22 Aug 2024 22:23:07 +0800 Subject: [PATCH 2/2] chore: Formatting --- lib/cadet/assessments/assessments.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/cadet/assessments/assessments.ex b/lib/cadet/assessments/assessments.ex index a00b91308..143441f0f 100644 --- a/lib/cadet/assessments/assessments.ex +++ b/lib/cadet/assessments/assessments.ex @@ -2421,9 +2421,11 @@ defmodule Cadet.Assessments do {:valid, Answer.grading_changeset(answer, attrs)}, {:ok, _} <- Repo.update(changeset) do update_xp_bonus(submission) + if is_grading_auto_published and is_fully_graded?(submission_id) do publish_grading(submission_id) end + {:ok, nil} else {:answer_found?, false} ->