from core.models.Result import Result, ResultError def result_from_exception(exception: Exception, error_type: ResultError = ResultError.UNKNOWN) -> Result: message = str(exception) or type(exception).__name__ return Result(valid=False, error_type=error_type, message=message) def result_from_payload(payload) -> Result: if isinstance(payload, Result): return payload if isinstance(payload, Exception): return result_from_exception(payload) return Result( valid=False, error_type=ResultError.UNKNOWN, message=str(payload) or 'The operation could not be completed.', )