Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
	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)
Esempio n. 7
0
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)