1
0
Fork 0
mirror of https://codeberg.org/Mo8it/AdvLabDB.git synced 2024-09-19 18:31:16 +00:00

Add warning about done semester with missing experiment marks

This commit is contained in:
Mo 2022-09-23 12:55:32 +02:00
parent 8d7ea5cae3
commit e530dceab4

View file

@ -573,6 +573,16 @@ class Semester(db.Model):
def lastSemester(): def lastSemester():
return Semester.sortedSemestersStartingWithNewest(limit=1).first() return Semester.sortedSemestersStartingWithNewest(limit=1).first()
def num_missing_experiment_marks(self):
return db.session.scalar(
select(func.count())
.select_from(ExperimentMark)
.join(GroupExperiment)
.join(SemesterExperiment)
.where(SemesterExperiment.semester == self)
.where(ExperimentMark.final_experiment_mark == None)
)
def set_done(self, next_semester=None): def set_done(self, next_semester=None):
set_next_semester = next_semester is not None set_next_semester = next_semester is not None
@ -581,6 +591,13 @@ class Semester(db.Model):
semester = db.session.get(Semester, id) semester = db.session.get(Semester, id)
if semester == self or not semester.done: if semester == self or not semester.done:
num_missing_experiment_marks = self.num_missing_experiment_marks()
if num_missing_experiment_marks > 0:
flash(
f"Semester {semester} was set as done, but it has {num_missing_experiment_marks} missing experiment marks!",
"danger",
)
semester.done = True semester.done = True
if set_next_semester: if set_next_semester: