from imgui_bundle import hello_imgui from model import * from datetime import datetime class AppState: current_class_id: int current_lecture_id: int current_student_id: int current_submission_id: int def __init__(self): self.current_class_id = None self.current_lecture_id = None self.current_student_id = None self.current_submission_id = None def update(self): clas = Class.select() self.current_class_id = clas[0].id if clas else None lectures = Lecture.select().where(Lecture.class_id == self.current_class_id) self.current_lecture_id = lectures[0].id if lectures else None students = Student.select().where(Student.class_id == self.current_class_id) self.current_student_id = students[0].id if students else None submissions = Submission.select().where(Submission.lecture_id == self.current_lecture_id and Submission.student_id == self.current_student_id) self.current_submission_id = submissions[0].id if submissions else None LOG_DEBUG(f"Updated App State {repr(self)}") def __repr__(self): return f''' Class ID: {self.current_class_id} Lecture ID: {self.current_lecture_id} Student ID: {self.current_student_id} Submission ID: {self.current_submission_id} ''' def log(log_level: hello_imgui.LogLevel, msg: str) -> None: time = datetime.now().strftime("%X") hello_imgui.log(log_level, f"[{time}] {msg}") LOG_DEBUG = lambda msg: log(hello_imgui.LogLevel.debug, msg) LOG_INFO = lambda msg: log(hello_imgui.LogLevel.info, msg) LOG_WARNING = lambda msg: log(hello_imgui.LogLevel.warning, msg) LOG_ERROR = lambda msg: log(hello_imgui.LogLevel.error, msg)