From e020e52f0f2dffb49c2d11e4c4704af2d29bea17 Mon Sep 17 00:00:00 2001 From: vextrixes <113197359+vextrixes@users.noreply.github.com> Date: Wed, 28 Oct 2026 15:57:23 +0100 Subject: [PATCH] user fixes --- src/user/modules.rs | 21 +++++++++++++++++++++ src/user/setting_modules.rs | 24 ++++++++++++++++++++++++ src/user/user_info.rs | 4 ++-- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/user/modules.rs b/src/user/modules.rs index d1e9677..c995e59 100644 --- a/src/user/modules.rs +++ b/src/user/modules.rs @@ -3,26 +3,47 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(tag = "Module")] pub enum Module { + #[serde(rename_all="PascalCase")] Absence { rights: Vec }, + #[serde(rename_all="PascalCase")] AccessSystem { rights: Vec }, + #[serde(rename_all="PascalCase")] Application { rights: Vec }, + #[serde(rename_all="PascalCase")] Campaign { rights: Vec }, + #[serde(rename_all="PascalCase")] Classbook { rights: Vec }, + #[serde(rename_all="PascalCase")] Emergency { rights: Vec }, + #[serde(rename_all="PascalCase")] Events { rights: Vec }, + #[serde(rename_all="PascalCase")] Gdpr { rights: Vec }, + #[serde(rename_all="PascalCase")] Homeworks { rights: Vec }, + #[serde(rename_all="PascalCase")] Komens { rights: Vec }, + #[serde(rename_all="PascalCase")] Marking { rights: Vec }, + #[serde(rename_all="PascalCase")] Marks { rights: Vec }, + #[serde(rename_all="PascalCase")] Payments { rights: Vec }, + #[serde(rename_all="PascalCase")] Semester { rights: Vec }, + #[serde(rename_all="PascalCase")] Subjects { rights: Vec }, + #[serde(rename_all="PascalCase")] Substitutions { rights: Vec }, + #[serde(rename_all="PascalCase")] Teaching { rights: Vec }, + #[serde(rename_all="PascalCase")] Timetable { rights: Vec }, + #[serde(rename_all="PascalCase")] Unknown { rights: Vec }, + #[serde(rename_all="PascalCase")] UserAccount { rights: Vec }, + #[serde(rename_all="PascalCase")] WebBased { rights: Vec }, } diff --git a/src/user/setting_modules.rs b/src/user/setting_modules.rs index e378d81..d43ada8 100644 --- a/src/user/setting_modules.rs +++ b/src/user/setting_modules.rs @@ -15,6 +15,8 @@ pub struct ModulesSetting { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct CommonModuleSettings { + #[serde(rename = "$type")] + pub r#type: ModulesSettingType, pub actual_semester: ActualSemester, pub actual_school_year: Option, } @@ -39,6 +41,8 @@ pub struct ActualSchoolYear { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct KomensModuleSettings { + #[serde(rename = "$type")] + pub r#type: ModulesSettingType, pub upload_folder_verified: bool, pub current_school_year_start_date: DateTime, } @@ -46,6 +50,8 @@ pub struct KomensModuleSettings { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct MarkinModuleSettings { + #[serde(rename = "$type")] + pub r#type: ModulesSettingType, pub required_classification_confirmation: bool, pub classification_confirmation_classes_list: Vec, pub classification_confirmation_notification: bool, @@ -55,6 +61,8 @@ pub struct MarkinModuleSettings { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct TimetableModuleSettings { + #[serde(rename = "$type")] + pub r#type: ModulesSettingType, pub display_type: TimetableDisplayType, pub header_type: TimetableHeaderType, pub days_definition: Vec, @@ -96,6 +104,8 @@ pub struct TimetableSettingsHourDefinition { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct ClassbookModuleSettings { + #[serde(rename = "$type")] + pub r#type: ModulesSettingType, pub absence_calculation_type: AbsenceCalculationType, pub absence_calculation_period: ActualSemester, } @@ -110,7 +120,21 @@ pub enum AbsenceCalculationType { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct EmergencyModuleSettings { + #[serde(rename = "$type")] + pub r#type: ModulesSettingType, pub firestore_db_name: String, pub emergency_server_url: String, pub is_sms_licensed: bool, } + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub enum ModulesSettingType { + KomensModuleSettings, + MarksModuleSettings, + TimetableModuleSettings, + HomeworksModuleSettings, + ClassBookModuleSettings, + CommonModuleSettings, + EmergencyModuleSettings, +} diff --git a/src/user/user_info.rs b/src/user/user_info.rs index 4314d2d..f2ea5d8 100644 --- a/src/user/user_info.rs +++ b/src/user/user_info.rs @@ -12,7 +12,7 @@ pub struct UserInfo { pub teacher_classes: Option>, pub full_name: Option, pub school_organization_name: Option, - pub school_type: Option, + pub school_type: Option, pub user_type: UserType, pub user_type_text: String, pub study_year: Option, @@ -35,7 +35,7 @@ pub enum UserType { #[serde(rename_all = "PascalCase")] pub struct UserInfoStudent { pub full_name: String, - pub class: Vec, + pub class: SchoolClass, pub school_type: SchoolType, pub study_year: Option, }