From a4ae87a538dff9f1dd53a5577040f168b7ba1786 Mon Sep 17 00:00:00 2001 From: Maarceeli Date: Wed, 16 Apr 2025 10:01:16 +0200 Subject: [PATCH] Add lesson model --- src/sdk/src/models/lesson.py | 86 ++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/sdk/src/models/lesson.py diff --git a/src/sdk/src/models/lesson.py b/src/sdk/src/models/lesson.py new file mode 100644 index 0000000..679172a --- /dev/null +++ b/src/sdk/src/models/lesson.py @@ -0,0 +1,86 @@ +from datetime import datetime, date +from pydantic import BaseModel + + +class LessonDate(BaseModel): + Timestamp: int + Date: str + DateDisplay: str + Time: str + + +class Room(BaseModel): + Id: int + Code: str + + +class TimeSlot(BaseModel): + Id: int + Start: str + End: str + Display: str + Position: int + + +class Subject(BaseModel): + Id: int + Key: str + Name: str + Kod: str + Position: int + + +class Teacher(BaseModel): + Id: int + Surname: str + Name: str + DisplayName: str + + +class Clazz(BaseModel): + Id: int + Key: str + DisplayName: str + Symbol: str + + +class Lesson(BaseModel): + Id: int + MergeChangeId: int | None + Event: str | None + Date: LessonDate + Room: Room + TimeSlot: TimeSlot + Subject: Subject + TeacherPrimary: Teacher + TeacherSecondary: Teacher | None + TeacherSecondary2: Teacher | None + Change: str | None + Clazz: Clazz + Distribution: str | None + PupilAlias: str | None + Visible: bool + Substitution: str | None + Parent: str | None + + @staticmethod + def from_hebe_dict(data: dict): + return Lesson( + Id=data["Id"], + MergeChangeId=data["MergeChangeId"], + Event=data["Event"], + Date=LessonDate(**data["Date"]), + Room=Room(**data["Room"]), + TimeSlot=TimeSlot(**data["TimeSlot"]), + Subject=Subject(**data["Subject"]), + TeacherPrimary=Teacher(**data["TeacherPrimary"]), + TeacherSecondary=Teacher(**data["TeacherSecondary"]) if data["TeacherSecondary"] else None, + TeacherSecondary2=Teacher(**data["TeacherSecondary2"]) if data["TeacherSecondary2"] else None, + Change=data["Change"], + Clazz=Clazz(**data["Clazz"]), + Distribution=data["Distribution"], + PupilAlias=data["PupilAlias"], + Visible=data["Visible"], + Substitution=data["Substitution"], + Parent=data["Parent"] + )