diff --git a/app/util/validator.py b/app/util/validator.py new file mode 100644 index 0000000..a6d84ff --- /dev/null +++ b/app/util/validator.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3.11 +from app.util.globals import Error + +def validateInputData(inputFileDir: str) -> Error: + with open(inputFileDir, newline='') as csvfile: + includes = ['Pupil #', 'CrsNo', 'Description', 'Alternate?'] + data = csvfile.readline().replace('\n', '').split(',') + missing = [e for e in includes if e not in data] + if len(missing) > 0: + description = 'You are missing the following: ' + for i in range(len(missing)): + if i != len(missing) - 1: description += f'{missing[i]}, ' + else: description += f'{missing[i]}' + missingErr = Error('Missing Required Fields', description) + + return missingErr + + return None diff --git a/main.py b/main.py index 7cbe5cd..00dcef1 100755 --- a/main.py +++ b/main.py @@ -9,6 +9,7 @@ from app.util.globals import Error from app.util.courses import getCourses, writeCoursesToCSV from app.util.students import getStudents, writeStudentsToCSV from app.util.errorCalculator import writeErrorsToCSV +from app.util.validator import validateInputData eel.init('template') @@ -49,6 +50,10 @@ def start( block_class_limit = int(block_class_limit) total_blocks = int(total_blocks) + eel.post_data('Validating input file...') + validateErr = validateInputData(raw_data_dir) + if validateErr is not None: return validateErr.__dict__ + # call pre-algorithm functions read raw data into a processable format eel.post_data('Collecting student information...') students = getStudents(