예제 #1
0
 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
예제 #4
0
 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
예제 #5
0
    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
예제 #6
0
    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
예제 #7
0
    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