From 37a3972d04d38e973410ec32a70d444161567bba Mon Sep 17 00:00:00 2001 From: luxferre Date: Thu, 11 Jun 2026 16:35:53 +0100 Subject: [PATCH] feat: questionnaire only modifiable before submission --- src/organisation/constants.py | 6 +++++- src/organisation/router.py | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/organisation/constants.py b/src/organisation/constants.py index da4d60e..db46f43 100644 --- a/src/organisation/constants.py +++ b/src/organisation/constants.py @@ -31,7 +31,11 @@ class Status(StrEnum): @property def is_pre_approval(self): - return self in (self.PARTIAL, self.SUBMITTED) + return self in (self.PARTIAL, self.SUBMITTED, self.REMEDIATION) + + @property + def is_pre_submission(self): + return self in (self.PARTIAL, self.REMEDIATION) class ContactType(StrEnum): diff --git a/src/organisation/router.py b/src/organisation/router.py index eb74f0a..3be0a2b 100644 --- a/src/organisation/router.py +++ b/src/organisation/router.py @@ -222,6 +222,11 @@ async def update_questionnaire( The partial bool allows for submission of partially completed questionnaire and/or final "are you sure" check before setting the org to be in "submitted" status, awaiting admin approval. """ + org_status = StatusEnum(org_model.status) + if not org_status.is_pre_submission: + raise ForbiddenException( + "Questionnaire may only be modified prior to submission." + ) update_data = request_model.intake_questionnaire.model_dump(exclude_none=True) questionnaire = org_model.intake_questionnaire questions_model = QuestionnaireQuestionsVersion0(**questionnaire["questions"])