def validate(self, user_answer): """ Validate that the users answer is a string and only contains alphanumeric characters :param user_answer: The answer the user provided for the response :return: ValidationResult(): An object containing the result of the validation """ result = ValidationResult(False) if isinstance(user_answer, str): result.is_valid = not user_answer.isspace() else: result.is_valid = False result.errors.append(AbstractValidator.NOT_STRING) return result
def validate(self, user_answer): result = ValidationResult(False) try: integer_value = int(user_answer) # NOQA if integer_value > 9999999999: # 10 digits result.is_valid = False result.errors.append(AbstractValidator.INTEGER_TOO_LARGE) return result result.is_valid = True except Exception: result.is_valid = False result.errors.append(AbstractValidator.NOT_INTEGER) return result
def validate(self, user_answer): validation_result = ValidationResult() validation_result.is_valid = False if isinstance(user_answer, list): self._validate_list(user_answer, validation_result) else: self._validate_single(user_answer, validation_result) # We only want ONE error message if not validation_result.is_valid: validation_result.errors.append(AbstractValidator.MANDATORY) return validation_result
def validate(self, user_answer): """ Validate that the users answer is a valid date :param user_answer: The answer the user provided for the response :return: ValidationResult(): An object containing the result of the validation """ result = ValidationResult(False) try: time.strptime(user_answer, "%m/%Y") return ValidationResult(True) except ValueError: result.errors.append(AbstractValidator.INVALID_DATE) except TypeError: result.errors.append(AbstractValidator.INVALID_DATE) return result
def validate(self, user_answer): """ Validate that a field is mandatory :param user_answer: The answer the user provided for the response :return: ValidationResult(): An object containing the result of the validation """ validation_result = ValidationResult() validation_result.is_valid = False if isinstance(user_answer, list): self._validate_list(user_answer, validation_result) else: self._validate_single(user_answer, validation_result) # We only want ONE error message if not validation_result.is_valid: validation_result.errors.append(AbstractValidator.MANDATORY) return validation_result
def validate(self, user_answer): """ Validate that the users answer is an integer :param user_answer: The answer the user provided for the response :return: ValidationResult(): An object containing the result of the validation """ result = ValidationResult(False) try: integer_value = int(user_answer) # NOQA if integer_value > 9999999999: # 10 digits result.is_valid = False result.errors.append(AbstractValidator.INTEGER_TOO_LARGE) return result result.is_valid = True except (ValueError, TypeError): result.is_valid = False result.errors.append(AbstractValidator.NOT_INTEGER) return result
def validate(self, user_answers): """ Validate that the users answer is a valid date range :param user_answers: The answer the user provided for the response :return: ValidationResult(): An object containing the result of the validation """ result = ValidationResult(False) logger.debug('Type Checking question date range with data %s', user_answers) try: if len(user_answers) == 2: from_date = datetime.strptime(user_answers[0], "%d/%m/%Y") to_date = datetime.strptime(user_answers[1], "%d/%m/%Y") date_diff = to_date - from_date if date_diff.total_seconds() > 0: return ValidationResult(True) elif date_diff.total_seconds() == 0: result.errors.append( AbstractValidator.INVALID_DATE_RANGE_TO_FROM_SAME) return result else: result.errors.append( AbstractValidator.INVALID_DATE_RANGE_TO_BEFORE_FROM) return result except ValueError: result.errors.append(AbstractValidator.INVALID_DATE) except TypeError: result.errors.append(AbstractValidator.INVALID_DATE) except AttributeError: result.errors.append(AbstractValidator.INVALID_DATE) return result