From 4c6af8eac1d61e714af641f4792ae545c3c6ff24 Mon Sep 17 00:00:00 2001 From: burnettk Date: Mon, 23 May 2022 23:10:47 -0400 Subject: [PATCH] add sonar exclusions for stuff that is not our code and refactor complex function --- sonar-project.properties | 1 + .../spiff_workflow_connector.py | 48 +++++++++++-------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/sonar-project.properties b/sonar-project.properties index 502bf085..0e3058f1 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -4,5 +4,6 @@ sonar.host.url=https://sonarcloud.io sonar.python.version=3.8,3.9,3.10 sonar.python.coverage.reportPaths=coverage.xml sonar.test.inclusions=tests +sonar.exclusions=migrations/**,bin/keycloak_test_server.py # sonar.exclusions=crc/templates/*.html,docs/**,config/**,instance/**,migrations/**,postgres/**,readme_images/**,schema/**,templates/** # sonar.sources=crc diff --git a/src/spiff_workflow_webapp/spiff_workflow_connector.py b/src/spiff_workflow_webapp/spiff_workflow_connector.py index e07a10dd..e17ae1dd 100755 --- a/src/spiff_workflow_webapp/spiff_workflow_connector.py +++ b/src/spiff_workflow_webapp/spiff_workflow_connector.py @@ -68,33 +68,43 @@ def format_task(task: Task, include_state: bool = True) -> str: return f"{lane} {task.task_spec.description} ({task.task_spec.name}) {state}" +def process_field( + field: Any, answer: Union[dict, None], required_user_input_fields: Dict[str, str] +) -> Union[str, None]: + """Handles the complexities of figuring out what to do about each necessary user field.""" + response = None + if isinstance(field, EnumFormField): + option_map = {opt.name: opt.id for opt in field.options} + options = "(" + ", ".join(option_map) + ")" + if answer is None: + required_user_input_fields[field.label] = options + else: + response = option_map[answer[field.label]] + elif field.type == "string": + if answer is None: + required_user_input_fields[field.label] = "STRING" + else: + response = answer[field.label] + else: + if answer is None: + required_user_input_fields[field.label] = "(1..)" + else: + if field.type == "long": + response = int(answer[field.label]) + + return response + + def complete_user_task( task: Task, answer: Optional[Dict[str, str]] = None ) -> Dict[Any, Any]: """Complete_user_task.""" - required_user_input_fields = {} if task.data is None: task.data = {} + required_user_input_fields: Dict[str, str] = {} for field in task.task_spec.form.fields: - if isinstance(field, EnumFormField): - option_map = {opt.name: opt.id for opt in field.options} - options = "(" + ", ".join(option_map) + ")" - if answer is None: - required_user_input_fields[field.label] = options - else: - response = option_map[answer[field.label]] - elif field.type == "string": - if answer is None: - required_user_input_fields[field.label] = "STRING" - else: - response = answer[field.label] - else: - if answer is None: - required_user_input_fields[field.label] = "(1..)" - else: - if field.type == "long": - response = int(answer[field.label]) + response = process_field(field, answer, required_user_input_fields) if answer: task.update_data_var(field.id, response) return required_user_input_fields