cr-connect-workflow/crc/services/error_service.py

61 lines
2.7 KiB
Python

# known_errors
# key - something we can search for in an error message.
# both_message - human readable message return to the user if error occurs in both
# required_message - human readable message return to the user if error only occurs in required
# all_message -human readable message return to the user if error only occurs in all
#
# known_errors = [{'key': 'Error is Non-default exclusive outgoing sequence flow without condition',
# 'message': 'Missing condition', 'hint': 'Add a Condition Type to your gateway path.'}]
known_errors = {'Error is Non-default exclusive outgoing sequence flow without condition':
{'message': 'Missing condition', 'hint': 'Add a Condition Type to your gateway path.'}}
generic_message = """Workflow validation failed. For more information about the error, see below."""
# error_keys = [error['key'] for error in known_errors]
class ValidationErrorService(object):
"""Validation Error Service interprets messages return from api.workflow.validate_workflow_specification
Validation is run twice,
once where we try to fill in all form fields
and a second time where we only fill in the required fields.
We get a list that contains possible errors from the validation."""
@staticmethod
def interpret_validation_errors(errors):
if len(errors) == 0:
return ()
# hint = ''
interpreted_errors = []
for error_type in ['all', 'required']:
if error_type in errors:
hint = generic_message
for known_key in known_errors:
if known_key in errors[error_type].message:
if 'hint' in known_errors[known_key]:
hint = known_errors[known_key]['hint']
# else:
# hint = generic_message
errors[error_type].hint = hint
interpreted_errors.append(errors[error_type])
# for known_error in known_errors:
# if known_error['key'] in errors['all'].message:
#
# # in both error all and error required
# if known_error['key'] in errors['required'].message:
# if 'hint' in known_error.keys():
# hint = known_error['hint']
# else:
# hint = generic_message
#
# # just in error all
# else:
# pass
#
# # just in error required
# if known_error['key'] in errors['required'].message:
# pass
return interpreted_errors