diff --git a/advlabdb/models.py b/advlabdb/models.py index 366c12e..6b57725 100644 --- a/advlabdb/models.py +++ b/advlabdb/models.py @@ -683,6 +683,32 @@ class User(db.Model, FsUserMixin): admin = db.relationship("Admin", back_populates="user", lazy=False, uselist=False) assistant = db.relationship("Assistant", back_populates="user", lazy=True, uselist=False) + def set_last_semester_as_active(self): + """ + Return True if changed, False otherwise. + """ + last_semester = Semester.lastSemester() + + if last_semester.done: + return False + + try: + self.active_semester = last_semester + + db.session.commit() + except Exception as ex: + flash(str(ex), "error") + + db.session.rollback() + return False + else: + flash( + f"Active semester changed to {last_semester} because your last active semester was marked as done!", + "warning", + ) + + return True + def str(self): return f"{self.first_name} {self.last_name}" diff --git a/advlabdb/routes.py b/advlabdb/routes.py index 7db5a08..552171e 100644 --- a/advlabdb/routes.py +++ b/advlabdb/routes.py @@ -36,22 +36,7 @@ def post_login(): current_active_semester = current_user.active_semester if current_active_semester.done: - last_semester = Semester.lastSemester() - - if not last_semester.done: - try: - current_user.active_semester = last_semester - - db.session.commit() - except Exception as ex: - flash(str(ex), "error") - - db.session.rollback() - else: - flash( - f"Active semester changed to {last_semester} because the semester {current_active_semester} was marked as done!", - "warning", - ) + current_user.set_last_semester_as_active() if current_user.has_role("admin"): endpoint_base = "admin"