From a912e8ef49f6e6f56bdc68c48a74c8d85b52f711 Mon Sep 17 00:00:00 2001 From: alicia pritchett Date: Fri, 18 Feb 2022 11:41:07 -0500 Subject: [PATCH 1/2] validate checks/catches default value and label value --- crc/services/workflow_service.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/crc/services/workflow_service.py b/crc/services/workflow_service.py index 4cd29f0c..3521e316 100755 --- a/crc/services/workflow_service.py +++ b/crc/services/workflow_service.py @@ -271,10 +271,14 @@ class WorkflowService(object): WorkflowService.check_field_properties(field, task) WorkflowService.check_field_type(field, task) - # Process the label of the field if it is dynamic. - if field.has_property(Task.FIELD_PROP_LABEL_EXPRESSION): - result = WorkflowService.evaluate_property(Task.FIELD_PROP_LABEL_EXPRESSION, field, task) - field.label = result + # If we have a label, try to set the label + if field.label: + try: + field.label = task.workflow.script_engine._evaluate(field.label, data) + except Exception as e: + raise ApiError.from_task("bad label", f'The label "{field.label}" in field {field.id} ' + f'could not be understood or evaluated. ', + task=task) # If a field is hidden and required, it must have a default value if field.has_property(Task.FIELD_PROP_HIDE_EXPRESSION) and field.has_validation( @@ -293,7 +297,12 @@ class WorkflowService(object): # If we have a default_value, try to set the default if field.default_value: - form_data[field.id] = WorkflowService.get_default_value(field, task, data) + try: + form_data[field.id] = WorkflowService.get_default_value(field, task, data) + except Exception as e: + raise ApiError.from_task("bad default value", f'The default value "{field.default_value}" in field {field.id} ' + f'could not be understood or evaluated. ', + task=task) if not field.has_property(Task.FIELD_PROP_REPEAT): continue From 4b92b0ee71a9aa3c41878ce979e4b9b010db80bf Mon Sep 17 00:00:00 2001 From: alicia pritchett Date: Fri, 18 Feb 2022 11:57:13 -0500 Subject: [PATCH 2/2] oops --- crc/services/workflow_service.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crc/services/workflow_service.py b/crc/services/workflow_service.py index 3521e316..6def9387 100755 --- a/crc/services/workflow_service.py +++ b/crc/services/workflow_service.py @@ -305,6 +305,9 @@ class WorkflowService(object): task=task) if not field.has_property(Task.FIELD_PROP_REPEAT): continue + else: + form_data[field.id] = None + # If we are only populating required fields, and this isn't required. stop here. if required_only: