From 2496a2a82fc1d6d9b9b02f770ceac2f9731cf369 Mon Sep 17 00:00:00 2001 From: dinesh Date: Thu, 6 Feb 2025 13:35:47 -0800 Subject: [PATCH] Close status for inspection --- compliance-api/Makefile | 2 +- ...a492aa47db_remove_closed_as_note_status.py | 46 +++++++++++++++++++ .../models/inspection/inspection_enum.py | 1 - .../src/compliance_api/schemas/inspection.py | 12 +++-- .../src/compliance_api/services/inspection.py | 2 +- .../Profile/InspectionFileActions.tsx | 13 ++++-- compliance-web/src/models/Inspection.ts | 1 + 7 files changed, 64 insertions(+), 13 deletions(-) create mode 100644 compliance-api/migrations/versions/3aa492aa47db_remove_closed_as_note_status.py diff --git a/compliance-api/Makefile b/compliance-api/Makefile index 5f15659e..da3123a2 100644 --- a/compliance-api/Makefile +++ b/compliance-api/Makefile @@ -68,7 +68,7 @@ install-dev: ## Install local application ci: lint flake8 test ## CI flow pylint: ## Linting with pylint - . venv/bin/activate && pylint --rcfile=setup.cfg src/$(PROJECT_NAME) + . venv/bin/activate && pylint --rcfile=setup.cfg --jobs=5 src/$(PROJECT_NAME) flake8: ## Linting with flake8 . venv/bin/activate && flake8 --ignore=Q000,W503 src/$(PROJECT_NAME) tests diff --git a/compliance-api/migrations/versions/3aa492aa47db_remove_closed_as_note_status.py b/compliance-api/migrations/versions/3aa492aa47db_remove_closed_as_note_status.py new file mode 100644 index 00000000..71b84014 --- /dev/null +++ b/compliance-api/migrations/versions/3aa492aa47db_remove_closed_as_note_status.py @@ -0,0 +1,46 @@ +"""Remove closed as note status + +Revision ID: 3aa492aa47db +Revises: 91f76d883f32 +Create Date: 2025-02-06 13:22:09.682441 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '3aa492aa47db' +down_revision = '91f76d883f32' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.execute("UPDATE inspections set inspection_status='CLOSED' WHERE inspection_status='CLOSED_AS_NOTE'") + op.execute("UPDATE inspections_version SET inspection_status='CLOSED' WHERE inspection_status='CLOSED_AS_NOTE'") + op.execute(""" + CREATE TYPE inspectionstatusenum_old AS ENUM ('OPEN', 'CLOSED', 'CANCELED'); + """) + op.execute(""" + ALTER TABLE inspections + ALTER COLUMN inspection_status TYPE inspectionstatusenum_old + USING inspection_status::text::inspectionstatusenum_old; + """) + op.execute(""" + ALTER TABLE inspections_version + ALTER COLUMN inspection_status TYPE inspectionstatusenum_old + USING inspection_status::text::inspectionstatusenum_old; + """) + op.execute("DROP TYPE inspectionstatusenum;") + op.execute("ALTER TYPE inspectionstatusenum_old RENAME TO inspectionstatusenum;") + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + + # ### end Alembic commands ### diff --git a/compliance-api/src/compliance_api/models/inspection/inspection_enum.py b/compliance-api/src/compliance_api/models/inspection/inspection_enum.py index 2a4395b7..d10c0bc6 100644 --- a/compliance-api/src/compliance_api/models/inspection/inspection_enum.py +++ b/compliance-api/src/compliance_api/models/inspection/inspection_enum.py @@ -21,5 +21,4 @@ class InspectionStatusEnum(enum.Enum): OPEN = "Open" CLOSED = "Closed" - CLOSED_AS_NOTE = "Closed as note" CANCELED = "Canceled" diff --git a/compliance-api/src/compliance_api/schemas/inspection.py b/compliance-api/src/compliance_api/schemas/inspection.py index 9d89b1e7..cb7f9af0 100644 --- a/compliance-api/src/compliance_api/schemas/inspection.py +++ b/compliance-api/src/compliance_api/schemas/inspection.py @@ -372,6 +372,12 @@ class Meta: # pylint: disable=too-few-public-methods metadata={"description": "The status of the complaint"}, required=True, ) + alt_status_text = fields.Str( + metadata={ + "description": "Alternate text for the status to be written to continuation report" + }, + allow_none=True + ) @post_load def extract_status_value( @@ -390,11 +396,7 @@ def validate_status( """Ensure only Closed and Canceled status are passed.""" # Retrieve the context to access other fields status = data.get("status") - if status not in [ - InspectionStatusEnum.CANCELED, - InspectionStatusEnum.CLOSED, - InspectionStatusEnum.CLOSED_AS_NOTE - ]: + if status not in [InspectionStatusEnum.CANCELED, InspectionStatusEnum.CLOSED]: raise ValidationError( "Invalid status value passed", field_name="status", diff --git a/compliance-api/src/compliance_api/services/inspection.py b/compliance-api/src/compliance_api/services/inspection.py index 8230cb63..b03df85f 100644 --- a/compliance-api/src/compliance_api/services/inspection.py +++ b/compliance-api/src/compliance_api/services/inspection.py @@ -315,7 +315,7 @@ def change_status(cls, inspection_id, status): inspection.id, inspection.ir_number, inspection.case_file_id, - status_enum.value.lower(), + status.get("alt_status_text", status_enum.value).lower() ) ContinuationReportService.create( cr_entry, sys_generated=True, ho_session=session diff --git a/compliance-web/src/components/App/Inspections/Profile/InspectionFileActions.tsx b/compliance-web/src/components/App/Inspections/Profile/InspectionFileActions.tsx index 4a933b1d..bbaba28a 100644 --- a/compliance-web/src/components/App/Inspections/Profile/InspectionFileActions.tsx +++ b/compliance-web/src/components/App/Inspections/Profile/InspectionFileActions.tsx @@ -73,10 +73,10 @@ const InspectionFileActions: React.FC = ({ ), }); }, - hidden: ["canceled", "closed", "closed as note"].includes(status?.toLowerCase()), + hidden: ["canceled", "closed"].includes(status?.toLowerCase()), }, { - text: "Close as Note to File", + text: "Closed as note to file", onClick: () => { // Handle closing inspection setOpen({ @@ -88,7 +88,10 @@ const InspectionFileActions: React.FC = ({ onConfirm={() => { updateInspectionInspection({ id: inspectionData?.id ?? 0, - inspectionStatus: { status: "CLOSED_AS_NOTE" }, + inspectionStatus: { + status: "CLOSED", + alt_status_text: "Closed as note to file", + }, }); }} /> @@ -96,7 +99,7 @@ const InspectionFileActions: React.FC = ({ width: "420px", }); }, - hidden: ["canceled", "closed as note", "closed"].includes(status?.toLowerCase()), + hidden: ["canceled", "closed"].includes(status?.toLowerCase()), }, { text: "Closed", @@ -119,7 +122,7 @@ const InspectionFileActions: React.FC = ({ width: "420px", }); }, - hidden: ["canceled", "closed", "closed as note"].includes(status?.toLowerCase()), + hidden: ["canceled", "closed"].includes(status?.toLowerCase()), }, { text: "Delete Inspection", diff --git a/compliance-web/src/models/Inspection.ts b/compliance-web/src/models/Inspection.ts index 25355079..10eb7e31 100644 --- a/compliance-web/src/models/Inspection.ts +++ b/compliance-web/src/models/Inspection.ts @@ -82,4 +82,5 @@ export interface InspectionAPIData { export interface InspectionStatusAPIData { status: string; + alt_status_text: string; }