From 6e56e9c81ef18e88aabeafa7332c8e399eee8a4b Mon Sep 17 00:00:00 2001 From: auslin-aot <99173163+auslin-aot@users.noreply.github.com> Date: Mon, 13 Nov 2023 10:00:54 +0530 Subject: [PATCH] Forwarding error responses from Formio. (#1704) --- .../resources/form_process_mapper.py | 71 ++++++++++++------- 1 file changed, 45 insertions(+), 26 deletions(-) diff --git a/forms-flow-api/src/formsflow_api/resources/form_process_mapper.py b/forms-flow-api/src/formsflow_api/resources/form_process_mapper.py index 5fee16fb9d..9284c6640a 100644 --- a/forms-flow-api/src/formsflow_api/resources/form_process_mapper.py +++ b/forms-flow-api/src/formsflow_api/resources/form_process_mapper.py @@ -5,6 +5,7 @@ from flask import request from flask_restx import Namespace, Resource, fields +from formsflow_api_utils.exceptions import BusinessException from formsflow_api_utils.services.external import FormioService from formsflow_api_utils.utils import ( DESIGNER_GROUP, @@ -495,22 +496,30 @@ class FormioFormResource(Resource): ) def post(): """Formio form creation method.""" - data = request.get_json() - formio_service = FormioService() - form_io_token = formio_service.get_formio_access_token() - response, status = ( - formio_service.create_form(data, form_io_token), - HTTPStatus.CREATED, - ) - FormHistoryService.create_form_log_with_clone( - data={ - **response, - "parentFormId": data.get("parentFormId"), - "newVersion": data.get("newVersion"), - "componentChanged": True, - } - ) - return response, status + try: + data = request.get_json() + formio_service = FormioService() + form_io_token = formio_service.get_formio_access_token() + response, status = ( + formio_service.create_form(data, form_io_token), + HTTPStatus.CREATED, + ) + FormHistoryService.create_form_log_with_clone( + data={ + **response, + "parentFormId": data.get("parentFormId"), + "newVersion": data.get("newVersion"), + "componentChanged": True, + } + ) + return response, status + except BusinessException as err: + message = ( + err.details[0]["message"] + if hasattr(err, "details") and err.details + else err.message + ) + return message, err.status_code @cors_preflight("PUT,OPTIONS") @@ -523,16 +532,26 @@ class FormioFormUpdateResource(Resource): @profiletime def put(form_id: str): """Formio form update method.""" - FormProcessMapperService.check_tenant_authorization_by_formid(form_id=form_id) - data = request.get_json() - formio_service = FormioService() - form_io_token = formio_service.get_formio_access_token() - response, status = ( - formio_service.update_form(form_id, data, form_io_token), - HTTPStatus.OK, - ) - FormHistoryService.create_form_log_with_clone(data=data) - return response, status + try: + FormProcessMapperService.check_tenant_authorization_by_formid( + form_id=form_id + ) + data = request.get_json() + formio_service = FormioService() + form_io_token = formio_service.get_formio_access_token() + response, status = ( + formio_service.update_form(form_id, data, form_io_token), + HTTPStatus.OK, + ) + FormHistoryService.create_form_log_with_clone(data=data) + return response, status + except BusinessException as err: + message = ( + err.details[0]["message"] + if hasattr(err, "details") and err.details + else err.message + ) + return message, err.status_code @cors_preflight("GET,OPTIONS")