From a4e938e90fcb0f88cc222216b0c7a10e095ceb18 Mon Sep 17 00:00:00 2001 From: Maarceeli Date: Sat, 5 Apr 2025 10:24:48 +0200 Subject: [PATCH] Add semester saving to grades db and config file --- src/constants.py | 1 + src/main.py | 10 +++++++--- src/sqlitehandlernr.py | 29 +++++++++++++++++++++++++---- src/utils.py | 23 +++++++++++++++++++++++ 4 files changed, 56 insertions(+), 7 deletions(-) diff --git a/src/constants.py b/src/constants.py index e144277..95f6ba3 100644 --- a/src/constants.py +++ b/src/constants.py @@ -17,4 +17,5 @@ defconf = { usrconf = { 'fullName': '', 'grade': '', + 'semester': 1, } \ No newline at end of file diff --git a/src/main.py b/src/main.py index 502919a..39893f3 100644 --- a/src/main.py +++ b/src/main.py @@ -50,12 +50,16 @@ def sync(page: ft.Page): saveauth("Fuji", "Auth Context", jsoncontext) student = students[student] - current_period = next(period for period in student.periods if period.current) - grades = interface.get_grades(current_period.number) + setcurrentsemester(next(period for period in student.periods if period.current)) notes = interface.get_notes() + grades = interface.get_grades(1) + create_grades_database(grades_list=grades, smstr=1) + grades = interface.get_grades(2) + add_grades_to_database(grades_list=grades, smstr=2) + + create_notes_database(notes_list=notes) - create_grades_database(grades_list=grades) def change_page(route): routes = { diff --git a/src/sqlitehandlernr.py b/src/sqlitehandlernr.py index aa562a4..8a3d507 100644 --- a/src/sqlitehandlernr.py +++ b/src/sqlitehandlernr.py @@ -14,6 +14,7 @@ class Grades(SQLModel, table=True): created_at: datetime subject: str creator: str + semester: int class Notes(SQLModel, table=True): id: int = Field(default=None, primary_key=True) # Add an auto-incrementing id @@ -26,7 +27,7 @@ class Notes(SQLModel, table=True): engine = create_engine("sqlite:///database.db") SQLModel.metadata.create_all(engine) -def create_grades_database(grades_list): +def create_grades_database(grades_list, smstr): with Session(engine) as session: session.execute(delete(Grades)) for grade in grades_list: @@ -40,6 +41,26 @@ def create_grades_database(grades_list): created_at=grade.created_at, subject=grade.subject, creator=grade.creator, + semester=smstr + ) + + session.add(grade_obj) + session.commit() + +def add_grades_to_database(grades_list, smstr): + with Session(engine) as session: + for grade in grades_list: + grade_obj = Grades( + value=grade.value, + is_point=grade.is_point, + point_numerator=grade.point_numerator, + point_denominator=grade.point_denominator, + weight=grade.weight, + name=grade.name, + created_at=grade.created_at, + subject=grade.subject, + creator=grade.creator, + semester=smstr ) session.add(grade_obj) @@ -55,12 +76,12 @@ def fetch_grades_this_week(): return grades -def fetch_all_grades(): +def fetch_all_grades(semester: int): with Session(engine) as session: - grades = session.query(Grades).all() - + grades = session.query(Grades).filter(Grades.semester == semester).all() return grades + def create_notes_database(notes_list): with Session(engine) as session: session.execute(delete(Notes)) diff --git a/src/utils.py b/src/utils.py index 46510b1..c8ddc2b 100644 --- a/src/utils.py +++ b/src/utils.py @@ -60,6 +60,29 @@ def setlanguage(lang): with open(f"{getconfigpath()}/config.ini", "w") as file: config.write(file) +def getcurrentsemester(): + config = configparser.ConfigParser() + config.read(f"{getconfigpath()}/config.ini") + + try: + semester = int(config['User']['semester']) + except ValueError: + semester = 1 + + return semester + +def setcurrentsemester(semester): + config = configparser.ConfigParser() + config.read(f"{getconfigpath()}/config.ini") + + try: + config["User"]["semester"] = str(semester.number) + except ValueError: + config["User"]["semester"] = "1" + + with open(f"{getconfigpath()}/config.ini", "w") as file: + config.write(file) + def restart(page: ft.Page): try: python = sys.executable