From aee7aed67688a050a57029be1e2af5e4908643aa Mon Sep 17 00:00:00 2001 From: Albert Artur Kolozsvari Date: Tue, 19 Nov 2024 18:56:32 +0000 Subject: [PATCH] Add migration --- api/routes/application/routes.py | 13 +++++------ db/migrations/versions/4a40deca2d61_.py | 29 +++++++++++++++++++++++++ db/models/application/enums.py | 1 + db/models/forms/enums.py | 1 + db/models/forms/forms.py | 2 ++ db/queries/form/queries.py | 1 + 6 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 db/migrations/versions/4a40deca2d61_.py diff --git a/api/routes/application/routes.py b/api/routes/application/routes.py index 947fd5ef..a1094eda 100644 --- a/api/routes/application/routes.py +++ b/api/routes/application/routes.py @@ -427,7 +427,6 @@ def post_request_changes(self, application_id: str): as_json=True, include_forms=True, ) - except NoResultFound: return { "code": 404, @@ -436,10 +435,7 @@ def post_request_changes(self, application_id: str): args = request.get_json() field_ids = args["field_ids"] - # column needs adding - # feedback_message = args["feedback_message"] - - print("Fields needing status update: ", field_ids) + feedback_message = args["feedback_message"] application_requires_changes = False for application_form in application["forms"]: @@ -452,7 +448,7 @@ def post_request_changes(self, application_id: str): if field["key"] in field_ids: from_requires_changes = True application_requires_changes = True - forms_json_queston["status"] = "NOT_STARTED" + forms_json_queston["status"] = "CHANGES_REQUESTED" forms_json_queston["fields"] = [field] forms_json.append(forms_json_queston) @@ -460,15 +456,16 @@ def post_request_changes(self, application_id: str): if from_requires_changes: form_patch_fields = { "json": forms_json, - "status": "NOT_STARTED", + "status": "CHANGES_REQUESTED", "has_completed": False, + "feedback_message": feedback_message, } patch_form(application_id, application_form["name"], form_patch_fields) if application_requires_changes: application_patch_fields = { - "status": "NOT_STARTED", + "status": "CHANGES_REQUESTED", } patch_application(application_id, application_patch_fields) diff --git a/db/migrations/versions/4a40deca2d61_.py b/db/migrations/versions/4a40deca2d61_.py new file mode 100644 index 00000000..020b4bc9 --- /dev/null +++ b/db/migrations/versions/4a40deca2d61_.py @@ -0,0 +1,29 @@ +"""empty message + +Revision ID: 4a40deca2d61 +Revises: eb61bc354c57 +Create Date: 2024-11-19 18:51:54.942195 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = "4a40deca2d61" +down_revision = "eb61bc354c57" +branch_labels = None +depends_on = None + + +def upgrade(): + op.execute("ALTER TYPE status ADD VALUE 'CHANGES_REQUESTED'") + + with op.batch_alter_table("forms", schema=None) as batch_op: + batch_op.add_column(sa.Column("feedback_message", sa.String(), nullable=True)) + + +def downgrade(): + # remove CHANGES_REQUESTED from the status enum is a bit harder + + with op.batch_alter_table("forms", schema=None) as batch_op: + batch_op.drop_column("feedback_message") diff --git a/db/models/application/enums.py b/db/models/application/enums.py index 40e818c0..b2555b0a 100644 --- a/db/models/application/enums.py +++ b/db/models/application/enums.py @@ -11,3 +11,4 @@ class Status(Enum): IN_PROGRESS = 1 SUBMITTED = 2 COMPLETED = 3 + CHANGES_REQUESTED = 4 diff --git a/db/models/forms/enums.py b/db/models/forms/enums.py index a83052e2..adc3f810 100644 --- a/db/models/forms/enums.py +++ b/db/models/forms/enums.py @@ -6,3 +6,4 @@ class Status(Enum): IN_PROGRESS = 1 SUBMITTED = 2 COMPLETED = 3 + CHANGES_REQUESTED = 4 diff --git a/db/models/forms/forms.py b/db/models/forms/forms.py index 2cea96b4..4e68770d 100644 --- a/db/models/forms/forms.py +++ b/db/models/forms/forms.py @@ -25,10 +25,12 @@ class Forms(BaseModel): status = db.Column("status", db.Enum(Status), default="NOT_STARTED", nullable=False) name = db.Column("name", db.String(), nullable=False) has_completed = db.Column("has_completed", db.Boolean(), default=False) + feedback_message = db.Column("feedback_message", db.String(), nullable=True) def as_json(self): return { "status": self.status.name, "name": self.name, "questions": self.json, + "feedback_message": self.feedback_message, } diff --git a/db/queries/form/queries.py b/db/queries/form/queries.py index 4e6a2811..1f69beac 100644 --- a/db/queries/form/queries.py +++ b/db/queries/form/queries.py @@ -33,6 +33,7 @@ def patch_form(application_id: str, name, patch_fields: dict) -> Forms: form.json = patch_fields.get("json", form.json) form.status = patch_fields.get("status", form.status) form.has_completed = patch_fields.get("has_completed", form.has_completed) + form.feedback_message = patch_fields.get("feedback_message", form.feedback_message) db.session.commit()