def __validate_gestation_state(integer_val, genre, document_type): is_ok = True if (integer_val == 3 and genre == "M") or \ (integer_val == 3 and genre == "F" and document_type == "TI") or \ (integer_val != 3 and genre == "F" and document_type != "TI") else False message = "gestation state doesn't correspond with the rules" return validation_result(is_ok, message)
def __validate_values(field, values): is_field_in_values = True if field in values else False message = None if is_field_in_values else \ "field '{column}' is not in the values {options}". \ format(column = field, options = values) return validation_result(is_field_in_values, message)
def __validate_length(field, min_length, max_length): field_length = len(field) is_in_limits = True if field_length >= min_length and field_length <= max_length else False message = "field '{column}' out of bounds".format(column = field) \ if not is_in_limits else None return validation_result(is_in_limits, message)
def __validate_content(opened_file): header_line = opened_file.readline() is_ok, message = __validate_line(header_line, __header_rules) for user_line in opened_file: line_result = __validate_line(user_line, __user_rules) is_ok = is_ok and line_result.is_ok message = "{previous_message} {result_message}". \ format(previous_message = message, result_message = line_result.message or ""). \ strip() return validation_result(is_ok, message)
def __validate_date_format(field): is_date_format = True message = None try: datetime.datetime.strptime(field, '%Y-%m-%d').date().isoformat() except: is_date_format = False message = "field '{column}' is not on yyyy-mm-dd format".format( column=field) return validation_result(is_date_format, message)
def validate_date_limits(string_date): is_ok = True message = None try: date = datetime.datetime.strptime(string_date, '%Y-%m-%d').date() is_ok = True if date >= min_date and date <= max_date else False message = None if is_ok else "field '{column}' is not in dates limits". \ format(column = string_date) except: is_ok = False message = "field '{column}' is not on yyyy-mm-dd format".format(column = string_date) return validation_result(is_ok, message)
def __validate_line(line, rules): is_ok = True message = "" columns = pipe_spliter(line) for i in range(len(columns)): for j in range(len(rules[i])): result = rules[i][j](columns[i]) is_ok = is_ok and result.is_ok message = format_message(message, result.message, columns[0]) if i == 10: custom_column_result = __validate_gestation_state(columns[10], columns[9], columns[2]) is_ok = is_ok and custom_column_result.is_ok message = format_message(message, custom_column_result.message, columns[0]) return validation_result(is_ok, message)