diff --git a/advlabdb/database_import.py b/advlabdb/database_import.py index 959097e..31efcfc 100644 --- a/advlabdb/database_import.py +++ b/advlabdb/database_import.py @@ -6,7 +6,7 @@ from flask import flash from sqlalchemy import select from . import data_dir -from .exceptions import DataBaseImportException +from .exceptions import DatabaseImportException from .models import ( Appointment, Assistant, @@ -42,7 +42,7 @@ def nullable(entry): def not_nullable(entry): if is_null(entry): - raise DataBaseImportException("Unnullable entry is NULL!") + raise DatabaseImportException("Unnullable entry is NULL!") return entry.strip() @@ -54,7 +54,7 @@ def importFromFile(filePath: Path): db_bk_dir.mkdir(exist_ok=True) if filePath.name[-4:] != ".txt": - raise DataBaseImportException( + raise DatabaseImportException( "The import file has to be a text file with txt extension (.txt at the end of the filename)!" ) @@ -82,7 +82,7 @@ def importFromFile(filePath: Path): if expectingTable: if line[0] != "#": - raise DataBaseImportException(f"Expected a Table name starting with # but got this line: {line}") + raise DatabaseImportException(f"Expected a Table name starting with # but got this line: {line}") expectingTable = False tableName = line[1:] @@ -104,7 +104,7 @@ def importFromFile(filePath: Path): elif tableName == "Appointment": activeDict = appointments else: - raise DataBaseImportException(f"{tableName} is not a valid table name!") + raise DatabaseImportException(f"{tableName} is not a valid table name!") readHeader = True continue @@ -122,7 +122,7 @@ def importFromFile(filePath: Path): cellsLen = len(cells) if cellsLen != len(activeDict["_header"]): - raise DataBaseImportException( + raise DatabaseImportException( f"The number of header cells is not equal to the number of row cells in row {cells}!" ) @@ -134,14 +134,14 @@ def importFromFile(filePath: Path): flash("Semester...") if len(semesters["label"]) != 1: - raise DataBaseImportException("Only one semester is allowed in an import file!") + raise DatabaseImportException("Only one semester is allowed in an import file!") semesterLabel = not_nullable(semesters["label"][0]) semesterYear = int(not_nullable(semesters["year"][0])) dbSemester = get_first(select(Semester).where(Semester.label == semesterLabel, Semester.year == semesterYear)) if dbSemester is None: - raise DataBaseImportException( + raise DatabaseImportException( f"{semesterLabel}{semesterYear} does not exist in the database! Please make sure that you create the semester from the web interface first." ) @@ -164,7 +164,7 @@ def importFromFile(filePath: Path): ) if dbPart is None: - raise DataBaseImportException( + raise DatabaseImportException( f"Part with number {partNumber} and program label {partProgramLabel} does not exist in the database! Please make sure that you create parts from the web interface first." ) @@ -179,7 +179,9 @@ def importFromFile(filePath: Path): first_name = not_nullable(students["first_name"][i]) last_name = not_nullable(students["last_name"][i]) uni_email = not_nullable(students["uni_email"][i]).lower() - contact_email = nullable(students["contact_email"][i]).lower() + contact_email = nullable(students["contact_email"][i]) + if contact_email is not None: + contact_email = contact_email.lower() bachelor_thesis = nullable(students["bachelor_thesis"][i]) bachelor_thesis_work_group = nullable(students["bachelor_thesis_work_group"][i]) note = nullable(students["note"][i]) @@ -277,7 +279,7 @@ def importFromFile(filePath: Path): if dbExperiment is None: # TODO: Check if experimentProgram is None - raise DataBaseImportException( + raise DatabaseImportException( f"Experiment with number {experimentNumber} and program {experimentProgram} does not exist in the database. Please make sure that experiments are created from the web interface." ) @@ -288,7 +290,7 @@ def importFromFile(filePath: Path): ) if dbSemesterExperiment is None: - raise DataBaseImportException( + raise DatabaseImportException( f"No semester experiment exists in the database to the experiment with number {experimentNumber} and program {experimentProgram}. Please make sure that semester experiments are created in the web interface. The problem might be that the experiment was not active while creating a new semester" ) @@ -316,7 +318,7 @@ def importFromFile(filePath: Path): assistant = get_first(select(Assistant).join(User).where(User.email == assistantEmail)) if assistant is None: - raise DataBaseImportException( + raise DatabaseImportException( f"Assistant with email {assistantEmail} does not exist in the database! Please make sure that you create assistants in the web interface." ) @@ -345,5 +347,5 @@ def importFromFile(filePath: Path): flash(f"Made a backup of the database after the import at {dest}") - flash("\nImport done!") - flash("Please check that everything worked as expected. Restore the database backup otherwise!") + flash("\nImport done!", "success") + flash("Please check that everything worked as expected. Restore the database backup otherwise!", "warning") diff --git a/advlabdb/exceptions.py b/advlabdb/exceptions.py index fe4c341..52d75b4 100644 --- a/advlabdb/exceptions.py +++ b/advlabdb/exceptions.py @@ -6,5 +6,5 @@ class DatabaseException(Exception): pass -class DataBaseImportException(Exception): +class DatabaseImportException(Exception): pass