diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 18fb48f52ffbbafbe34b475bd8f54cc960feb2fe..03ad79e3bc2413d5c5518b2cc81bdcddb322e0ad 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,8 +14,11 @@ Fixed * It wasn't possible to run data checks due to broken color data checks. * Recurrence information for calendar events weren't removed on deletion. -* Recurring events without until value weren't shown. +* Full day events didn't work in calendar. * [Dev] AddressInputType missed country field. +* Detail pages, e.g. for groups, did not work anymore. +* The configured theme colors were not used by the frontend. +* Recurring events without until value weren't shown. `4.0`_ - 2025-03-29 ------------------- diff --git a/aleksis/core/frontend/app/vuetify.js b/aleksis/core/frontend/app/vuetify.js index b10c696946e6310a293b408a9e1c9aae050ddd6d..d7fd8877b985bc857f995122b60317e3be892c4b 100644 --- a/aleksis/core/frontend/app/vuetify.js +++ b/aleksis/core/frontend/app/vuetify.js @@ -40,10 +40,6 @@ const vuetifyOpts = { theme: { options: { customProperties: true, - themeCache: { - get: (key) => localStorage.getItem(key), - set: (key, value) => localStorage.setItem(key, value), - }, }, }, }; diff --git a/aleksis/core/frontend/plugins/aleksis.js b/aleksis/core/frontend/plugins/aleksis.js index e268fc6c344c31a5720f9378dc68316c633b49c0..e83385ef0b8825be50288f05f900a90dddf1c608 100644 --- a/aleksis/core/frontend/plugins/aleksis.js +++ b/aleksis/core/frontend/plugins/aleksis.js @@ -56,36 +56,42 @@ AleksisVue.install = function (Vue) { Vue.$registerGlobalComponents = function () { const globalComponents = { // General stuff - AvatarClickbox: "../components/generic/AvatarClickbox.vue", - CalendarWithControls: "../components/calendar/CalendarWithControls.vue", - ErrorPage: "../components/app/ErrorPage.vue", - MessageBox: "../components/generic/MessageBox.vue", - SmallContainer: "../components/generic/SmallContainer.vue", + AvatarClickbox: import("../components/generic/AvatarClickbox.vue"), + CalendarWithControls: import( + "../components/calendar/CalendarWithControls.vue" + ), + ErrorPage: import("../components/app/ErrorPage.vue"), + MessageBox: import("../components/generic/MessageBox.vue"), + SmallContainer: import("../components/generic/SmallContainer.vue"), // Layout - DetailView: "../components/generic/DetailView.vue", - ListView: "../components/generic/ListView.vue", + DetailView: import("../components/generic/DetailView.vue"), + ListView: import("../components/generic/ListView.vue"), // Buttons: - BackButton: "../components/generic/BackButton.vue", - ButtonMenu: "../components/generic/ButtonMenu.vue", - CancelButton: "../components/generic/buttons/CancelButton.vue", - CreateButton: "../components/generic/buttons/CreateButton.vue", - DeleteButton: "../components/generic/buttons/DeleteButton.vue", - DialogCloseButton: "../components/generic/buttons/DialogCloseButton.vue", - EditButton: "../components/generic/buttons/EditButton.vue", - FabButton: "../components/generic/buttons/FabButton.vue", - FilterButton: "../components/generic/buttons/FilterButton.vue", - IconButton: "../components/generic/buttons/IconButton.vue", - PrimaryActionButton: - "../components/generic/buttons/PrimaryActionButton.vue", - SaveButton: "../components/generic/buttons/SaveButton.vue", - SecondaryActionButton: - "../components/generic/buttons/SecondaryActionButton.vue", + BackButton: import("../components/generic/BackButton.vue"), + ButtonMenu: import("../components/generic/ButtonMenu.vue"), + CancelButton: import("../components/generic/buttons/CancelButton.vue"), + CreateButton: import("../components/generic/buttons/CreateButton.vue"), + DeleteButton: import("../components/generic/buttons/DeleteButton.vue"), + DialogCloseButton: import( + "../components/generic/buttons/DialogCloseButton.vue" + ), + EditButton: import("../components/generic/buttons/EditButton.vue"), + FabButton: import("../components/generic/buttons/FabButton.vue"), + FilterButton: import("../components/generic/buttons/FilterButton.vue"), + IconButton: import("../components/generic/buttons/IconButton.vue"), + PrimaryActionButton: import( + "../components/generic/buttons/PrimaryActionButton.vue" + ), + SaveButton: import("../components/generic/buttons/SaveButton.vue"), + SecondaryActionButton: import( + "../components/generic/buttons/SecondaryActionButton.vue" + ), }; - for (let [name, path] of Object.entries(globalComponents)) { - Vue.component(name, () => import(path)); + for (let [name, module] of Object.entries(globalComponents)) { + Vue.component(name, () => module); } }; diff --git a/aleksis/core/models.py b/aleksis/core/models.py index b0cbc0c09af83511c1bd10cba2f297897ae16046..bb6e29a59e49b21f3477b38acb3749143f99c30b 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -1760,9 +1760,9 @@ class CalendarEvent( @property def real_datetime_start(self) -> datetime: """Get real start datetime of this event.""" - if hasattr(self, "odatetime"): + if hasattr(self, "odatetime") and self.odatetime: return self.get_in_timezone(self.odatetime) - elif hasattr(self, "odate"): + elif hasattr(self, "odate") and self.odate: return self.odate.date() elif self.datetime_start: return self.get_in_timezone(self.datetime_start) @@ -1771,11 +1771,11 @@ class CalendarEvent( @property def real_datetime_end(self) -> datetime: """Get real end datetime of this event.""" - if hasattr(self, "odatetime"): + if hasattr(self, "odatetime") and self.odatetime: return self.get_in_timezone(self.odatetime + self.duration) elif self.datetime_end: return self.get_in_timezone(self.datetime_end) - elif hasattr(self, "odate"): + elif hasattr(self, "odate") and self.odate: # RFC 5545 states that the end date is not inclusive return (self.odate + self.duration + timedelta(days=1)).date() return self.date_end + timedelta(days=1)