mirror of
https://codeberg.org/Mo8it/AdvLabDB.git
synced 2024-11-08 21:21:06 +00:00
Only lower if not None
This commit is contained in:
parent
19819d7e99
commit
b1195fff7f
2 changed files with 18 additions and 16 deletions
|
@ -6,7 +6,7 @@ from flask import flash
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
from . import data_dir
|
from . import data_dir
|
||||||
from .exceptions import DataBaseImportException
|
from .exceptions import DatabaseImportException
|
||||||
from .models import (
|
from .models import (
|
||||||
Appointment,
|
Appointment,
|
||||||
Assistant,
|
Assistant,
|
||||||
|
@ -42,7 +42,7 @@ def nullable(entry):
|
||||||
|
|
||||||
def not_nullable(entry):
|
def not_nullable(entry):
|
||||||
if is_null(entry):
|
if is_null(entry):
|
||||||
raise DataBaseImportException("Unnullable entry is NULL!")
|
raise DatabaseImportException("Unnullable entry is NULL!")
|
||||||
|
|
||||||
return entry.strip()
|
return entry.strip()
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ def importFromFile(filePath: Path):
|
||||||
db_bk_dir.mkdir(exist_ok=True)
|
db_bk_dir.mkdir(exist_ok=True)
|
||||||
|
|
||||||
if filePath.name[-4:] != ".txt":
|
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)!"
|
"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 expectingTable:
|
||||||
if line[0] != "#":
|
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
|
expectingTable = False
|
||||||
tableName = line[1:]
|
tableName = line[1:]
|
||||||
|
@ -104,7 +104,7 @@ def importFromFile(filePath: Path):
|
||||||
elif tableName == "Appointment":
|
elif tableName == "Appointment":
|
||||||
activeDict = appointments
|
activeDict = appointments
|
||||||
else:
|
else:
|
||||||
raise DataBaseImportException(f"{tableName} is not a valid table name!")
|
raise DatabaseImportException(f"{tableName} is not a valid table name!")
|
||||||
|
|
||||||
readHeader = True
|
readHeader = True
|
||||||
continue
|
continue
|
||||||
|
@ -122,7 +122,7 @@ def importFromFile(filePath: Path):
|
||||||
|
|
||||||
cellsLen = len(cells)
|
cellsLen = len(cells)
|
||||||
if cellsLen != len(activeDict["_header"]):
|
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}!"
|
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...")
|
flash("Semester...")
|
||||||
|
|
||||||
if len(semesters["label"]) != 1:
|
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])
|
semesterLabel = not_nullable(semesters["label"][0])
|
||||||
semesterYear = int(not_nullable(semesters["year"][0]))
|
semesterYear = int(not_nullable(semesters["year"][0]))
|
||||||
dbSemester = get_first(select(Semester).where(Semester.label == semesterLabel, Semester.year == semesterYear))
|
dbSemester = get_first(select(Semester).where(Semester.label == semesterLabel, Semester.year == semesterYear))
|
||||||
|
|
||||||
if dbSemester is None:
|
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."
|
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:
|
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."
|
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])
|
first_name = not_nullable(students["first_name"][i])
|
||||||
last_name = not_nullable(students["last_name"][i])
|
last_name = not_nullable(students["last_name"][i])
|
||||||
uni_email = not_nullable(students["uni_email"][i]).lower()
|
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 = nullable(students["bachelor_thesis"][i])
|
||||||
bachelor_thesis_work_group = nullable(students["bachelor_thesis_work_group"][i])
|
bachelor_thesis_work_group = nullable(students["bachelor_thesis_work_group"][i])
|
||||||
note = nullable(students["note"][i])
|
note = nullable(students["note"][i])
|
||||||
|
@ -277,7 +279,7 @@ def importFromFile(filePath: Path):
|
||||||
|
|
||||||
if dbExperiment is None:
|
if dbExperiment is None:
|
||||||
# TODO: Check if experimentProgram 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."
|
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:
|
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"
|
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))
|
assistant = get_first(select(Assistant).join(User).where(User.email == assistantEmail))
|
||||||
|
|
||||||
if assistant is None:
|
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."
|
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(f"Made a backup of the database after the import at {dest}")
|
||||||
|
|
||||||
flash("\nImport done!")
|
flash("\nImport done!", "success")
|
||||||
flash("Please check that everything worked as expected. Restore the database backup otherwise!")
|
flash("Please check that everything worked as expected. Restore the database backup otherwise!", "warning")
|
||||||
|
|
|
@ -6,5 +6,5 @@ class DatabaseException(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class DataBaseImportException(Exception):
|
class DatabaseImportException(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
Loading…
Reference in a new issue