aboutsummaryrefslogtreecommitdiff
path: root/jb/models/assignment.py
diff options
context:
space:
mode:
authorstuppie2026-04-11 11:03:37 -0600
committerstuppie2026-04-11 11:03:40 -0600
commit67983224fbe5a33bd7bf8ea8c134b27f1afdda8a (patch)
tree86df1a608cacffaf03326e4755dc4ef919feba32 /jb/models/assignment.py
parentd0af0c38d7b59013e35eca4e2679a509b56f5980 (diff)
downloadamt-jb-67983224fbe5a33bd7bf8ea8c134b27f1afdda8a.tar.gz
amt-jb-67983224fbe5a33bd7bf8ea8c134b27f1afdda8a.zip
pydantic after model_validator doesnt raise a ValidationError if a KeyError is raised, only a ValueError.
did not know that. try except ValidationError in get_assignment bc Baddies have been known to submit assignments with purposely malformed "answer" (xml) section to break the process_assignment flow
Diffstat (limited to 'jb/models/assignment.py')
-rw-r--r--jb/models/assignment.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/jb/models/assignment.py b/jb/models/assignment.py
index 5dd0167..92e5a89 100644
--- a/jb/models/assignment.py
+++ b/jb/models/assignment.py
@@ -155,16 +155,19 @@ class Assignment(AssignmentStub):
def check_answers_alignment(self) -> Self:
if self.answers_dict is None:
return self
+ if "amt_worker_id" not in self.answers_dict:
+ raise ValueError("answers_dict missing amt_worker_id")
if self.amt_worker_id != self.answers_dict["amt_worker_id"]:
raise ValueError("Assignment answer invalid worker_id")
+ if "amt_assignment_id" not in self.answers_dict:
+ raise ValueError("answers_dict missing amt_assignment_id")
if self.amt_assignment_id != self.answers_dict["amt_assignment_id"]:
raise ValueError("Assignment answer invalid amt_assignment_id")
- if (
- self.tsid
- and self.answers_dict["tsid"]
- and self.tsid != self.answers_dict["tsid"]
- ):
- raise ValueError("Assignment answer invalid tsid")
+ if self.tsid:
+ if "tsid" not in self.answers_dict:
+ raise ValueError("answers_dict missing tsid")
+ if self.answers_dict["tsid"] and self.tsid != self.answers_dict["tsid"]:
+ raise ValueError("Assignment answer invalid tsid")
return self
# --- Properties ---