diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 71396778ddadc91ab25156c9a57bf15a01a66d10..88dfb6f16268d8da0ec01743bca8b7b917cf66cc 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,24 +6,14 @@ All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog`_, and this project adheres to `Semantic Versioning`_. -`4.0.0.dev10`_ - 2024-12-23 ---------------------------- - -Added -~~~~~ - -* Calendar alarms and notifications on creating, changing and deleting lesson substitutions. - -`4.0.0.dev9`_ - 2024-12-08 --------------------------- - -Added -~~~~~ +Unreleased +---------- -* Substitution planning interface based on teacher absences. +`4.0.0`_ - 2025-04-13 +--------------------- -`4.0.0.dev8`_ - 2024-10-17 --------------------------- +This version requires AlekSIS-Core 4.0. It is incompatible with any previous +version. Upgrade notice ~~~~~~~~~~~~~~ @@ -36,14 +26,16 @@ Added ~~~~~ * New timetable interface based on calendar system. -* Dialog for fast changing lessons and creating substitutions in the calendar. +* Dialog for fast changing lessons and creating substitutions in the calendar. +* Substitution planning interface based on teacher absences. +* Calendar alarms and notifications on creating, changing and deleting lesson substitutions. * [Dev] LessonEvent and SupervisionEvent basing on calendar system. Changed ~~~~~~~ * Substitution table was updated to new frontend. -* Substitution PDF was updated to new timetable interface and +* Substitution PDF was updated to new timetable interface and therefore has a slightly different look. Removed @@ -103,7 +95,7 @@ Fixed * The daily lessons page did not work correctly due to faulty pre-filtering of lessons. * Substitution form teacher selections also included students in some cases * Getting the max and min periods for events failed due to using always the current school term. - Typically, that caused problems when the schedule changed (more or less periods on a day). + Typically, that caused problems when the schedule changed (more or less periods on a day). `2.5`_ - 2022-11-12 ------------------- @@ -447,6 +439,4 @@ Fixed .. _3.0: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/3.0 .. _3.0.1: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/3.0.1 .. _3.0.2: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/3.0.2 -.. _4.0.0.dev8: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/4.0.0.dev8 -.. _4.0.0.dev9: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/4.0.0.dev9 -.. _4.0.0.dev10: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/4.0.0.dev10 +.. _4.0.0: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/4.0.0 diff --git a/aleksis/apps/chronos/frontend/components/substitutions.graphql b/aleksis/apps/chronos/frontend/components/substitutions.graphql index eb4da41ff0cccef96a6481a75c5179446b6dadf0..d364db975422241f568b600760bcf84c2201eef3 100644 --- a/aleksis/apps/chronos/frontend/components/substitutions.graphql +++ b/aleksis/apps/chronos/frontend/components/substitutions.graphql @@ -12,9 +12,11 @@ query substitutionsForDate($date: Date!) { } substitutions { oldGroups { + id shortName } newGroups { + id shortName } startSlot @@ -22,20 +24,24 @@ query substitutionsForDate($date: Date!) { startTime endTime oldTeachers { + id shortName fullName } newTeachers { + id shortName fullName } oldSubject newSubject oldRooms { + id shortName name } newRooms { + id shortName name } diff --git a/aleksis/apps/chronos/locale/de_DE/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/de_DE/LC_MESSAGES/django.po index bb22bcf5b006abc0148abd408c185437a05a9066..5af3f07ddf0b4482114a3d75d4e359047456f0ef 100644 --- a/aleksis/apps/chronos/locale/de_DE/LC_MESSAGES/django.po +++ b/aleksis/apps/chronos/locale/de_DE/LC_MESSAGES/django.po @@ -2,60 +2,50 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# Jonathan Weth <git@jonathanewth.de>, 2024. +# Jonathan Weth <git@jonathanewth.de>, 2024-2025. # msgid "" msgstr "" "Project-Id-Version: unnamed project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-12-23 13:03+0100\n" -"PO-Revision-Date: 2025-01-15 05:48+0000\n" -"Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n" -"Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-app-chronos/de/>\n" -"Language: de_DE\n" +"PO-Revision-Date: 2025-04-13 17:04+0200\n" +"Last-Translator: Jonathan Weth <git@jonathanewth.de>\n" +"Language-Team: English\n" +"Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.8.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 47.1\n" #: aleksis/apps/chronos/model_extensions.py:10 msgid "Can view group timetable" msgstr "Kann Gruppenstundenpläne sehen" #: aleksis/apps/chronos/model_extensions.py:14 -#, fuzzy -#| msgid "Manage substitution" msgid "Can manage group substitutions" -msgstr "Vertretung verwalten" +msgstr "Kann Gruppenvertretungen verwalten" #: aleksis/apps/chronos/model_extensions.py:18 msgid "Can view person timetable" msgstr "Kann Personenstundenpläne sehen" #: aleksis/apps/chronos/model_extensions.py:22 -#, fuzzy -#| msgid "Can view all supervisions per day" msgid "Can view group supervisions" -msgstr "Kann alle Tagesaufsichten sehen" +msgstr "Kann Gruppenaufsichten sehen" #: aleksis/apps/chronos/model_extensions.py:26 -#, fuzzy -#| msgid "Can view all supervisions per day" msgid "Can view person supervisions" -msgstr "Kann alle Tagesaufsichten sehen" +msgstr "Kann Personenaufsichten sehen" #: aleksis/apps/chronos/model_extensions.py:30 -#, fuzzy -#| msgid "Can view all supervisions per day" msgid "Can view room supervisions" -msgstr "Kann alle Tagesaufsichten sehen" +msgstr "Kann Raumaufsichten sehen" #: aleksis/apps/chronos/model_extensions.py:34 -#, fuzzy -#| msgid "Can view group timetable" msgid "Can view course timetable" -msgstr "Kann Gruppenstundenpläne sehen" +msgstr "Kann Kursstundenpläne sehen" #: aleksis/apps/chronos/models.py:48 msgid "Number of days shown in the plan" @@ -94,10 +84,8 @@ msgid "Can view all person timetables" msgstr "Kann alle Personenstundenpläne sehen" #: aleksis/apps/chronos/models.py:150 -#, fuzzy -#| msgid "Can view all group timetables" msgid "Can view all course timetables" -msgstr "Kann alle Gruppenstundenpläne sehen" +msgstr "Kann alle Kursstundenpläne sehen" #: aleksis/apps/chronos/models.py:151 msgid "Can view timetable overview" @@ -108,42 +96,32 @@ msgid "Can view substitutions table" msgstr "Kann Vertretungstabelle sehen" #: aleksis/apps/chronos/models.py:153 -#, fuzzy -#| msgid "Can view all supervisions per day" msgid "Can view all room supervisions" -msgstr "Kann alle Tagesaufsichten sehen" +msgstr "Kann alle Raumaufsichten sehen" #: aleksis/apps/chronos/models.py:154 -#, fuzzy -#| msgid "Can view all supervisions per day" msgid "Can view all group supervisions" -msgstr "Kann alle Tagesaufsichten sehen" +msgstr "Kann alle Gruppenaufsichten sehen" #: aleksis/apps/chronos/models.py:155 -#, fuzzy -#| msgid "Can view all supervisions per day" msgid "Can view all person supervisions" -msgstr "Kann alle Tagesaufsichten sehen" +msgstr "Kann alle Personenaufsichten sehen" #: aleksis/apps/chronos/models.py:156 -#, fuzzy -#| msgid "Manage substitution" msgid "Can manage all substitutions" -msgstr "Vertretung verwalten" +msgstr "Kann alle Vertretungen verwalten" #: aleksis/apps/chronos/models.py:161 msgid "Created" -msgstr "" +msgstr "Erstellt" #: aleksis/apps/chronos/models.py:162 msgid "Edited" -msgstr "" +msgstr "Bearbeitet" #: aleksis/apps/chronos/models.py:163 -#, fuzzy -#| msgid "Delete" msgid "Deleted" -msgstr "Löschen" +msgstr "Gelöscht" #: aleksis/apps/chronos/models.py:170 msgid "Lessons" @@ -204,7 +182,7 @@ msgstr "Kommentar" #: aleksis/apps/chronos/models.py:226 msgid "Is this a current change?" -msgstr "" +msgstr "Ist dies eine aktuelle Änderung?" #: aleksis/apps/chronos/models.py:268 aleksis/apps/chronos/models.py:280 #: aleksis/apps/chronos/models.py:292 @@ -226,25 +204,19 @@ msgstr "Unterrichtsstunden" #: aleksis/apps/chronos/models.py:685 msgid "Status" -msgstr "" +msgstr "Status" #: aleksis/apps/chronos/models.py:707 -#, fuzzy -#| msgid "Lesson substitution" msgid "Lesson notification" -msgstr "Vertretung" +msgstr "Unterrichtsstundenbenachrichtigung" #: aleksis/apps/chronos/models.py:752 -#, fuzzy -#| msgid "Lesson Event" msgid "Lesson event alarm" -msgstr "Unterrichtsstunde" +msgstr "Unterrichtsstundenalarm" #: aleksis/apps/chronos/models.py:753 -#, fuzzy -#| msgid "Lesson Events" msgid "Lesson event alarms" -msgstr "Unterrichtsstunden" +msgstr "Unterrichtsstundenalarme" #: aleksis/apps/chronos/models.py:760 msgid "Supervisions" @@ -263,8 +235,12 @@ msgid "Use parent groups in timetable views" msgstr "Elterngruppen in Stundenplanansichten benutzen" #: aleksis/apps/chronos/preferences.py:32 -msgid "If a lesson or substitution has only one group and this group has parent groups, show the parent groups instead of the original group." -msgstr "Wenn eine Stunde oder Vertretung nur eine Gruppe hat und diese Gruppe Elterngruppen hat, zeige die Elterngruppen anstelle der eigentlichen Gruppe." +msgid "" +"If a lesson or substitution has only one group and this group has parent " +"groups, show the parent groups instead of the original group." +msgstr "" +"Wenn eine Stunde oder Vertretung nur eine Gruppe hat und diese Gruppe " +"Elterngruppen hat, zeige die Elterngruppen anstelle der eigentlichen Gruppe." #: aleksis/apps/chronos/preferences.py:45 msgid "Relevant days for substitution plans" @@ -276,15 +252,21 @@ msgstr "Zeit zu der Vertretungspläne zum nächsten Tag wechseln" #: aleksis/apps/chronos/preferences.py:71 msgid "Number of days shown on substitutions print view" -msgstr "Anzahl der Tage, die in der Druckansicht des Vertretungsplanes angezeigt werden soll" +msgstr "" +"Anzahl der Tage, die in der Druckansicht des Vertretungsplanes angezeigt " +"werden soll" #: aleksis/apps/chronos/preferences.py:79 msgid "Show header box in substitution views" msgstr "Kopfbox in Vertretungsplänen anzeigen" #: aleksis/apps/chronos/preferences.py:89 -msgid "Show parent groups in header box in substitution views instead of original groups" -msgstr "Elterngruppen in der Kopfbox in Vertretungsplänen an Stelle der eigentlichen Gruppen anzeigen" +msgid "" +"Show parent groups in header box in substitution views instead of original " +"groups" +msgstr "" +"Elterngruppen in der Kopfbox in Vertretungsplänen an Stelle der eigentlichen " +"Gruppen anzeigen" #: aleksis/apps/chronos/preferences.py:100 msgid "Group types to show in timetables" @@ -303,30 +285,33 @@ msgid "Supervision calendar feed color" msgstr "Aufsichts-Kalenderfarbe" #: aleksis/apps/chronos/preferences.py:134 -msgid "Send notifications to affected teachers when substitution lessons are created or edited." +msgid "" +"Send notifications to affected teachers when substitution lessons are " +"created or edited." msgstr "" +"Benachrichtigungen an betroffenen Lehrkräfte schicken, wenn " +"Vertretungsstunden erstellt oder bearbeitet wurden." #: aleksis/apps/chronos/preferences.py:145 msgid "Trigger mode for lesson event alarms" -msgstr "" +msgstr "Trigger-Modus für Unterrichtsstundenalarme" #: aleksis/apps/chronos/preferences.py:161 -#, fuzzy -#| msgid "How many days in advance users should be notified about timetable changes?" msgid "How many days in advance should lesson event alarms be sent?" -msgstr "Wie viele Tage im Voraus sollen Benutzer über Stundenplanänderungen benachrichtigt werden?" +msgstr "" +"Wie viele Tage im Voraus sollen Unterrichtsstundenalarme versendet werden?" #: aleksis/apps/chronos/preferences.py:170 msgid "Time for sending lesson event alarms" -msgstr "" +msgstr "Zeit für das Versenden von Unterrichtsstundenalarmen" #: aleksis/apps/chronos/preferences.py:179 msgid "How much in advance should lesson event alarms be sent?" -msgstr "" +msgstr "Wie viel vorher sollen Unterrichtsstundenalarme versendet werden?" #: aleksis/apps/chronos/preferences.py:187 msgid "Days of the week that appear in the timetable" -msgstr "" +msgstr "Wochentage, die im Stundenplan erscheinen" #: aleksis/apps/chronos/preferences.py:189 msgid "Sunday" @@ -358,11 +343,9 @@ msgstr "Samstag" #: aleksis/apps/chronos/templates/chronos/lesson_event_notification_title.txt:1 msgid "cancellation" -msgstr "" +msgstr "Entfall" #: aleksis/apps/chronos/templates/chronos/lesson_event_notification_title.txt:1 -#, fuzzy -#| msgid "Substitution" msgid "substitution" msgstr "Vertretung" @@ -436,8 +419,11 @@ msgstr "Bereiche" #~ msgid "The validity range must be within the school term." #~ msgstr "Der Gültigkeitsbereich muss innerhalb des Schuljahres liegen." -#~ msgid "There is already a validity range for this time or a part of this time." -#~ msgstr "Es gibt bereits einen Gültigkeitsbereich für diesen Zeitraum oder einen Teil diesen Zeitraumes." +#~ msgid "" +#~ "There is already a validity range for this time or a part of this time." +#~ msgstr "" +#~ "Es gibt bereits einen Gültigkeitsbereich für diesen Zeitraum oder einen " +#~ "Teil diesen Zeitraumes." #~ msgid "Validity range" #~ msgstr "Gültigkeitsbereich" @@ -497,7 +483,8 @@ msgstr "Bereiche" #~ msgstr "Entfällt für Lehrkräfte?" #~ msgid "Lessons can only be either substituted or cancelled." -#~ msgstr "Unterrichtsstunden können nur entweder vertreten werden oder ausfallen." +#~ msgstr "" +#~ "Unterrichtsstunden können nur entweder vertreten werden oder ausfallen." #~ msgid "Lesson substitutions" #~ msgstr "Vertretungen" @@ -609,30 +596,48 @@ msgstr "Bereiche" #~ msgstr "Gruppen in Stundenplanansichten kürzen" #~ msgid "If there are more groups than the set limit, they will be collapsed." -#~ msgstr "Wenn es mehr Gruppen als das gesetzte Limit gibt, werden die Gruppenangaben gekürzt." +#~ msgstr "" +#~ "Wenn es mehr Gruppen als das gesetzte Limit gibt, werden die " +#~ "Gruppenangaben gekürzt." #~ msgid "Limit of groups for shortening of groups" #~ msgstr "Anzahl der Gruppen, ab der gekürzt wird" -#~ msgid "If a user activates shortening of groups,they will be collapsed if there are more groups than this limit." -#~ msgstr "Wenn Benutzer*innen die Kürzung von Gruppen aktiviert hat, werden sie ab diesem Limit gekürzt." +#~ msgid "" +#~ "If a user activates shortening of groups,they will be collapsed if there " +#~ "are more groups than this limit." +#~ msgstr "" +#~ "Wenn Benutzer*innen die Kürzung von Gruppen aktiviert hat, werden sie ab " +#~ "diesem Limit gekürzt." #~ msgid "Time for sending notifications about timetable changes" -#~ msgstr "Zeitpunkt zum Senden von Benachrichtigungen über Stundenplanänderungen" +#~ msgstr "" +#~ "Zeitpunkt zum Senden von Benachrichtigungen über Stundenplanänderungen" -#~ msgid "This is only used for scheduling notifications which doesn't affect the time period configured above. All other notifications affecting the next days are sent immediately." -#~ msgstr "Dies wird nur benutzt, um Benachrichtigungen zu planen, welche nicht den oben konfigurierten Zeitraum betreffen. Alle weiteren Benachrichtigungen, die die nächsten Tage betreffen, werden sofort gesendet." +#~ msgid "" +#~ "This is only used for scheduling notifications which doesn't affect the " +#~ "time period configured above. All other notifications affecting the next " +#~ "days are sent immediately." +#~ msgstr "" +#~ "Dies wird nur benutzt, um Benachrichtigungen zu planen, welche nicht den " +#~ "oben konfigurierten Zeitraum betreffen. Alle weiteren Benachrichtigungen, " +#~ "die die nächsten Tage betreffen, werden sofort gesendet." #~ msgid "Send notifications for current timetable changes" #~ msgstr "Benachrichtigungen für aktuelle Stundenplanänderungen verschicken" #, python-brace-format -#~ msgid "The {subject} lesson in the {period}. period on {day} has been cancelled." +#~ msgid "" +#~ "The {subject} lesson in the {period}. period on {day} has been cancelled." #~ msgstr "Die {subject}-Stunde in der {period}. Stunde am {day} fällt aus." #, python-brace-format -#~ msgid "The {subject} lesson in the {period}. period on {day} has some current changes." -#~ msgstr "Die {subject}-Stunde in der {period}. Stunde am {day} hat aktuelle Änderungen." +#~ msgid "" +#~ "The {subject} lesson in the {period}. period on {day} has some current " +#~ "changes." +#~ msgstr "" +#~ "Die {subject}-Stunde in der {period}. Stunde am {day} hat aktuelle " +#~ "Änderungen." #, python-brace-format #~ msgid "The teacher {old} is substituted by {new}." @@ -653,12 +658,20 @@ msgstr "Bereiche" #~ msgstr "Es gibt einen zusätzlichen Hinweis: {comment}." #, python-brace-format -#~ msgid "There is an event that starts on {date_start}, {period_from}. period and ends on {date_end}, {period_to}. period:" -#~ msgstr "Es gibt eine Veranstaltung, die am {date_start} in der {period_from}. Stunde startet und am {date_end} in der {period_to}. Stunde endet:" +#~ msgid "" +#~ "There is an event that starts on {date_start}, {period_from}. period and " +#~ "ends on {date_end}, {period_to}. period:" +#~ msgstr "" +#~ "Es gibt eine Veranstaltung, die am {date_start} in der {period_from}. " +#~ "Stunde startet und am {date_end} in der {period_to}. Stunde endet:" #, python-brace-format -#~ msgid "There is an event on {date} from the {period_from}. period to the {period_to}. period:" -#~ msgstr "Es gibt eine Veranstaltung am {date} von der {period_from}. Stunde bis zur {period_to}. Stunde:" +#~ msgid "" +#~ "There is an event on {date} from the {period_from}. period to the " +#~ "{period_to}. period:" +#~ msgstr "" +#~ "Es gibt eine Veranstaltung am {date} von der {period_from}. Stunde bis " +#~ "zur {period_to}. Stunde:" #, python-brace-format #~ msgid "Groups: {groups}" @@ -689,8 +702,12 @@ msgstr "Bereiche" #~ msgstr "Kommentar: {comment}." #, python-brace-format -#~ msgid "The supervision of {old} on {date} between the {period_from}. period and the {period_to}. period in the area {area} is substituted by {new}." -#~ msgstr "Die Aufsicht von {old} am {date} zwischen der {period_from}. Stunde un der {period_to}. Stunde im Gebiet {area} wird von {new} vertreten." +#~ msgid "" +#~ "The supervision of {old} on {date} between the {period_from}. period and " +#~ "the {period_to}. period in the area {area} is substituted by {new}." +#~ msgstr "" +#~ "Die Aufsicht von {old} am {date} zwischen der {period_from}. Stunde un " +#~ "der {period_to}. Stunde im Gebiet {area} wird von {new} vertreten." #~ msgid "Timetable" #~ msgstr "Stundenplan" @@ -798,11 +815,20 @@ msgstr "Bereiche" #~ msgid "The substitution has been deleted." #~ msgstr "Die Vertretung wurde gelöscht." -#~ msgid "If an lesson or substitution has only one group and this group has parent groups, show the parent groups instead of the original group." -#~ msgstr "Wenn eine Stunde oder Vertretung nur eine Gruppe hat und diese Gruppe Elterngruppen hat, zeige die Elterngruppen anstelle der eigentlichen Gruppe." +#~ msgid "" +#~ "If an lesson or substitution has only one group and this group has parent " +#~ "groups, show the parent groups instead of the original group." +#~ msgstr "" +#~ "Wenn eine Stunde oder Vertretung nur eine Gruppe hat und diese Gruppe " +#~ "Elterngruppen hat, zeige die Elterngruppen anstelle der eigentlichen " +#~ "Gruppe." -#~ msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit." -#~ msgstr "Wenn ein Benutzer die Kürzung von Gruppen aktiviert hat, werden sie ab diesem Limit gekürzt." +#~ msgid "" +#~ "If an user activates shortening of groups,they will be collapsed if there " +#~ "are more groups than this limit." +#~ msgstr "" +#~ "Wenn ein Benutzer die Kürzung von Gruppen aktiviert hat, werden sie ab " +#~ "diesem Limit gekürzt." #~ msgid "View class register of the current week" #~ msgstr "Klassenbuch der aktuellen Woche anzeigen" @@ -876,8 +902,12 @@ msgstr "Bereiche" #~ msgid "Effective end period of event" #~ msgstr "Effektive Endstunde der Veranstaltung" -#~ msgid "If there are more groups than this limit and CHRONOS_SHORTEN_GROUPS is enabled, add text collapsible." -#~ msgstr "Wenn es mehr Gruppen als dieses Limit gibt und CHRONOS_SHORTEN_GROUPS aktiviert ist, werden die Gruppenangaben gekürzt." +#~ msgid "" +#~ "If there are more groups than this limit and CHRONOS_SHORTEN_GROUPS is " +#~ "enabled, add text collapsible." +#~ msgstr "" +#~ "Wenn es mehr Gruppen als dieses Limit gibt und CHRONOS_SHORTEN_GROUPS " +#~ "aktiviert ist, werden die Gruppenangaben gekürzt." #~ msgid "Abbreviation of subject in timetable" #~ msgstr "Kürzel des Faches im Stundenplan" diff --git a/docs/_static/all_timetables.png b/docs/_static/all_timetables.png index c9da9f4f06660827154cababd80a6b30ccca9733..c45cdb5bfd5b3fb2a2b8a88ac3cf2353a3feb187 100644 Binary files a/docs/_static/all_timetables.png and b/docs/_static/all_timetables.png differ diff --git a/docs/_static/change_lesson.png b/docs/_static/change_lesson.png new file mode 100644 index 0000000000000000000000000000000000000000..7665785e2fc467c5cbc7e5d51de3f7c25d8c61b1 Binary files /dev/null and b/docs/_static/change_lesson.png differ diff --git a/docs/_static/class_timetable.png b/docs/_static/class_timetable.png deleted file mode 100644 index 0d427d3f5bb6e2d50f50a7e05a83eee30bbe52f4..0000000000000000000000000000000000000000 Binary files a/docs/_static/class_timetable.png and /dev/null differ diff --git a/docs/_static/daily_lessons.png b/docs/_static/daily_lessons.png deleted file mode 100644 index 6415ce7c22ff24443171d0dbb48ec83b808c4b81..0000000000000000000000000000000000000000 Binary files a/docs/_static/daily_lessons.png and /dev/null differ diff --git a/docs/_static/group_timetable.png b/docs/_static/group_timetable.png new file mode 100644 index 0000000000000000000000000000000000000000..214ca2ee4b6b63ffc5f60cf862f1fa3fc64eb0f5 Binary files /dev/null and b/docs/_static/group_timetable.png differ diff --git a/docs/_static/my_timetable.png b/docs/_static/my_timetable.png deleted file mode 100644 index a8188779507071d465670bdcaedbdb373b955e0a..0000000000000000000000000000000000000000 Binary files a/docs/_static/my_timetable.png and /dev/null differ diff --git a/docs/_static/plan_substitutions.png b/docs/_static/plan_substitutions.png new file mode 100644 index 0000000000000000000000000000000000000000..dd364aca1fb8c8351ecf810f587bbf8048c04a08 Binary files /dev/null and b/docs/_static/plan_substitutions.png differ diff --git a/docs/_static/plan_substitutions_select_teacher.png b/docs/_static/plan_substitutions_select_teacher.png new file mode 100644 index 0000000000000000000000000000000000000000..edf6c6c837072df386f0919ef1aa564200efcb0a Binary files /dev/null and b/docs/_static/plan_substitutions_select_teacher.png differ diff --git a/docs/_static/print_timetable.png b/docs/_static/print_timetable.png deleted file mode 100644 index 058c302c9114c17f0a0bbdaa62c25745d0eeecc6..0000000000000000000000000000000000000000 Binary files a/docs/_static/print_timetable.png and /dev/null differ diff --git a/docs/_static/substitutions.png b/docs/_static/substitutions.png index 19b8cac23f751cff050642fe4b724a969f2cd38c..965f240ce6df1bc028e0c437502ded179fb170ff 100644 Binary files a/docs/_static/substitutions.png and b/docs/_static/substitutions.png differ diff --git a/docs/_static/substitutions_print.png b/docs/_static/substitutions_print.png index 3ab31a0c9445ffd05f62539f6b78a24a6d166527..8b3db471d44c74f8d5a1818e247d4fcc2c89bd11 100644 Binary files a/docs/_static/substitutions_print.png and b/docs/_static/substitutions_print.png differ diff --git a/docs/_static/timetable_calendar.png b/docs/_static/timetable_calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..807e30526307a41eefcd76d32b718923a18179d6 Binary files /dev/null and b/docs/_static/timetable_calendar.png differ diff --git a/docs/_static/timetable_calendar_details.png b/docs/_static/timetable_calendar_details.png new file mode 100644 index 0000000000000000000000000000000000000000..46069122605386dbf42fc3d64279c4e934a61f0f Binary files /dev/null and b/docs/_static/timetable_calendar_details.png differ diff --git a/docs/admin/10_managing_data.rst b/docs/admin/10_managing_data.rst index 536a36afc2abc323c99f6442b8efa3af6963bd36..73ecb134bed74cfd8d0d1d7ab3577ddb67244430 100644 --- a/docs/admin/10_managing_data.rst +++ b/docs/admin/10_managing_data.rst @@ -1,13 +1,27 @@ Managing timetable and substitution data ======================================== -Currently, Chronos does not provide an interface for -interactively managing timetable data. +Creating timetables +------------------- -Instead, data is imported from an external source. The -official distribution handbook contains documentation about +For interactively planning timetables using +time grids, please use AlekSIS-App-Lesrooster. + +Alternatively, data can be imported from an external source. +The official distribution handbook contains documentation about the existing integration apps. -While there is basic support for editing substitutions, the -interface should not be used when substitution data is -imported from an external source. +Managing substitutions +---------------------- + +You can use *Timetables → Plan substitutions* to interactively +plan substitutions and cancellations for lessons affected by +absences. This consists of the following workflow: + +1. Create absences of teachers at *Absences → Absences* + (a link leading to this page is also including in the + substitution planning frontend). +2. See all affected lessons at *Plan substitutions* and + assign new teachers, subjects, and/or rooms. It is also + possible to cancel the lesson. Students and teachers then + can see the changed data and also will be notified, if activated. diff --git a/docs/admin/11_notifications.rst b/docs/admin/11_notifications.rst index 87dd529abdf375463e543510d3f8f77e2661c376..ac9ef72c1f5d5cfeee3466ce6a614af9ebe0fa4b 100644 --- a/docs/admin/11_notifications.rst +++ b/docs/admin/11_notifications.rst @@ -4,18 +4,20 @@ Setup notifications about current changes Users can get notifications about current changes to their personal timetables. To activate this behavior, the system administrator has to ensure multiple things: -* The data come from a compatible source, for example, AlekSIS-App-Untis. * The notifications have been activated in the preferences (see below). * There is at least one notification channel available to your users (cf. :ref:`core-admin-notifications`). Preferences ----------- -You can customize the way how and when notifications are sent at the configuration page at **Admin → Configuration → Timetables**: +You can customize the way how and when notifications are sent at the configuration page at *Admin → Configuration → Timetables*: -* **Send notifications for current timetable changes:** With this checkbox, the whole feature can be activated or deactivated. -* **How many days in advance users should be notified about timetable changes?** Here the number of days can be configured notifications will be sent +* **Send notifications to affected teachers when substitution lessons are created or edited:** + With this checkbox, the whole feature can be activated or deactivated. +* **Trigger mode for lesson event alarms:** Notifications can be sent at a fixed time one or more days earlier or relative to the events start time. +* **How many days in advance should lesson event alarms be sent?** Here the number of days can be configured notifications will be sent before the actual affected day. A common value is one or two days. -* **Time for sending notifications about timetable changes:** At this time, the notifications for the next days will be sent. +* **Time for sending lesson event alarms:** At this time, the notifications for the next days will be sent (if fixed select, see above). This is only used if the changes are created before the period configured with the above mentioned option. If they affect a day in this period, the notification will be sent immediately. +* **How much in advance should lesson event alarms be sent?**: This says how early notifications should be sent (in relation to the lesson start time). diff --git a/docs/admin/40_preferences.rst b/docs/admin/40_preferences.rst index 4b7b06bd5e7295748900183d7caad37ab3da681d..41958be8fa826b55cdb6afd71267fc43824c08c0 100644 --- a/docs/admin/40_preferences.rst +++ b/docs/admin/40_preferences.rst @@ -2,15 +2,16 @@ System-wide settings for timetable and substitution display =========================================================== The display of timetables and substitution plans can be customised -under `Admin → Configuration → Timetables`. The section contains the +under *Admin → Configuration → Timetables*. The section contains the following preferences: * **Use parent groups in timetable views**: If a lesson or substitution has only one group and this group has parent groups, these groups will be shown. -* **Limit of groups for shortening of groups**: If a user has activated - the preference for shortening too long group lists, this limit will be - used to determine at what number of groups shortening will happen. +* **Relevant days for substitution plans**: Substitution plans are only + created for these days. +* **Time when substitution plans switch to next day**: At this time, + the generated substitution plan will switch to the next day. * **Number of days shown on substitutions print view**: Here you can set the number of days that will be shown on the substitutions print view (PDF file). @@ -19,3 +20,9 @@ following preferences: * **Show parent groups in header box in substitution views instead of original groups**: This setting determines the same setting as `Use parent groups in timetable views`, but for the printout. +* **Group types to show in timetables**: Only groups with these types will be shown + in the timetable select. +* **Lesson calendar feed color**: Default color for lesson calendar feed. +* **Supervision calendar feed color**: Default color for supervision calendar feed. +* **Days of the week that appear in the timetable**: Only these days are shown + in the timetable calendar. diff --git a/docs/conf.py b/docs/conf.py index 019586d7d6674aac00e67f8fd079925ec2e29aa1..e36e4ab81dc95f20231c42b9281cbbae3c1b74a1 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -29,9 +29,9 @@ copyright = "2018-2022 The AlekSIS team" author = "The AlekSIS Team" # The short X.Y version -version = "3.0" +version = "4.0" # The full version, including alpha/beta/rc tags -release = "3.0.3.dev0" +release = "4.1.0.dev0" # -- General configuration --------------------------------------------------- diff --git a/docs/user/01_using_timetables.rst b/docs/user/01_using_timetables.rst index 0cdbd539ad044f86cfeda0038d3251a26f2e5010..7cc614303a13741f35c1aa1fa9fba75644772339 100644 --- a/docs/user/01_using_timetables.rst +++ b/docs/user/01_using_timetables.rst @@ -10,78 +10,59 @@ Viewing the personal timetable ------------------------------ One of the most useful features is the ability to see your daily or weekly -timetable at a glance – with all recent information included. This view, -called "My timetable", can be accessed in two ways: Just add the timetable -widget to the dashboard or use the menu entry `Timetables → My timetable`. -On this page, you can switch between different days (on mobile devices) -or different weeks (on desktop devices) to see future information. - -Smart plan -~~~~~~~~~~ - -By default, the personal timetable id displayed in `smart plan` mode. -This means that all available information, like substitutions or -cancellations, is merged into the regular plan to create an up-to-date -version of the timetable. At one glance, the actual timetable for a -specific day can thus be viewed. - -Using the button `Show regular timetable` above the plan, the view can -be switched into regular mode, showing only what was planned ahead, -without up-to-date information. - -.. image:: ../_static/my_timetable.png - :width: 600 - :alt: My timetable - -The colours of the lessons are defined by the subject of the lesson, -and was probably imported from a time-tabling software. In addition, -the following highlighting is done for changes: - - * Substituted lessons are decorated with a red border, and changes - in the lesson data are struck through and replaced with the - new information - * Cancelled lessons have their background removed, and a `Cancelled` - label added - * Remarks from the substitution plan are added in italics underneath - the lesson information - -Dashboard widget -~~~~~~~~~~~~~~~~ - -A dashboard widget is provided that shows the `smart plan` for the current -day. Right when logging into AlekSIS, or opening the PWA, the timetable -can thus be immediately viewed. - -The widget needs to be enabled by an administrator. - -Week timetables ---------------- - -Using the menu entry `Timetables → All timetables` will give you access +timetable at a glance – with all recent information included. This personal +timetable is provided in your personal calendar. Just open *Calendar** in +the menu and tick the box next to the *Lesson* calendar. + +How does the timetable look? +---------------------------- + +In the timetable, you can see the single lessons. By default, they are +showing the lessons reguraly taking place. Sometimes, they include +current changes like substitutions or cancellations. + +.. image:: ../_static/timetable_calendar.png + :alt: Timetable in personal calendar with different lessons + +The colours of the lessons are defined by the subject of the lesson. +In addition, the following highlighting is done for current changes: + +* Substituted lessons are decorated with a red border, and changes + in the lesson data are struck through and replaced with the + new information +* Cancelled lessons have their background removed and everything + is struck through +* Remarks from the substitution plan are added in italics underneath + the lesson information + +For more details on single lessons, just click on them for the following dialog: + +.. image:: ../_static/timetable_calendar_details.png + :alt: Timetable in personal calendar with lesson details + +Other timetables +---------------- + +Using the menu entry *Timetables → Timetables* will give you access to all timetables of your institution (or whatever your administrator -allowed you to see). It's divided into three main sections: +allowed you to see). It's divided into two main sections: On the left side, you +can select the timetable you want to see. You can switch between *Groups*, +*Teachers*, and *Rooms*. Using the search field above the switch, you can filter +the list by their names. - * Teachers - * Groups - * Rooms +It's divided into three main sections: + +* Teachers +* Groups +* Rooms .. image:: ../_static/all_timetables.png - :width: 600 :alt: All timetables -If you open one of these timetables, by default you see the `smart plan` -of the current week. By clicking on `Show regular plan` or using the `print` -button, you can access the corresponding regular plan. To easily jump between -timetables, every teacher, subject, or group short name is linked to the -respective timetable. - -.. image:: ../_static/class_timetable.png - :width: 600 - :alt: Class timetable - -The `print` button will generate the currently displayed plan as a PDF -file, which can either be printed, or used for display on digital signage. +If you open one of these timetables, you see the current timetable in form of +a calendar. Use the calendar controls to move forward or backwards in time. +Additionally, you can use the arrows on the top right to move forward/backwards +between different timetables in the list. -.. image:: ../_static/print_timetable.png - :width: 600 - :alt: Print timetable +.. image:: ../_static/group_timetable.png + :alt: Group timetable diff --git a/docs/user/10_substitution_plan.rst b/docs/user/10_substitution_plan.rst index 969a189184e7d01ba06745b1b245b7859c332c34..ed7e24b0860b002b99091cc9a9469ebabb3383a9 100644 --- a/docs/user/10_substitution_plan.rst +++ b/docs/user/10_substitution_plan.rst @@ -1,7 +1,7 @@ Substitution plan ================= -In addition to the `smart plan`, substitutions can be +In addition to the calendar, substitutions can be displayed as a traditional substitution plan. The substitution plan lists all changes made to the regular plan, on a daily basis, as a table. @@ -10,20 +10,17 @@ View in AlekSIS ~~~~~~~~~~~~~~~ In AlekSIS, the substitution plan is available from the menu under -`Timetable → Substitutions`. This function provides a browsable list, -where substitution plans can be navigated by week. +*Timetables → Substitutions*. This function provides a browsable list, +where substitution plans can be navigated by day. .. image:: ../_static/substitutions.png - :width: 600 :alt: Substitutions Print view ~~~~~~~~~~ -Like for the regular timetable, the substitution plan can be -printed (as a PDF file), to make hardcopies, or to display it -on digital signage. +The substitution plan can also be printed (as a PDF file), +to make hardcopies, or to display it on digital signage. .. image:: ../_static/substitutions_print.png - :width: 600 - :alt: Print view of substitutions \ No newline at end of file + :alt: Print view of substitutions diff --git a/docs/user/11_notifications.rst b/docs/user/11_notifications.rst index 5d1cc5f58567ee81dd535d3fceb02a2c01b0b028..4f751319125011b503f3a9ed6d8da32cb7e46ca7 100644 --- a/docs/user/11_notifications.rst +++ b/docs/user/11_notifications.rst @@ -2,9 +2,7 @@ Notifications about current changes =================================== Users can get notifications about current changes to their personal timetables. -If the system administrator has enabled the feature, they can activate it by -setting the personal preference **Send notifications for current timetable changes** (cf. :ref:`core-user-preferences`). - -The notifications are sent as standard AlekSIS notifications. In :ref:`core-notifications`, you can find more information -about the available channels and your configuration options. +If the system administrator has enabled the feature, they are sent automatically. +The notifications are sent as standard AlekSIS notifications. In :ref:`core-notifications`, +you can find more information about the available channels and your configuration options. diff --git a/docs/user/15_manage_substitutions.rst b/docs/user/15_manage_substitutions.rst index ee55794860da42026664a7ab4548afef23cfdecf..32757ae9ce4560451aceaea4388429b76f37fda5 100644 --- a/docs/user/15_manage_substitutions.rst +++ b/docs/user/15_manage_substitutions.rst @@ -1,25 +1,42 @@ Managing substitutions ====================== -AlekSIS has basic support for managing substitutions and cancellations. +AlekSIS has two different ways for managing substitutions and cancellations. -In the mnue under `Timetable → Daily lessons`, a list of all lessons taking -place on a day can be found. +Simple changing of lessons +-------------------------- -.. image:: ../_static/daily_lessons.png - :width: 600 - :alt: Daily lessons +For small changes, you can just open the timetable you want +to change a lesson in, select the lesson, and click the *Change* button. +The dialog then allows you to change the following data for a single lesson: -The list allows editing a substitution for each lesson. +- Subject +- Teachers +- Rooms +- Cancellation +- Comment -.. image:: ../_static/substitution_edit.png - :width: 600 - :alt: Edit a substitution +.. image:: ../_static/change_lesson.png + :alt: Change single lesson -When editing a substitution, the week, date, and lesson is pre-filled. -The fields for `teacher`, `room`, and `subject` allow replacing -the respective information for the selected lesson. +Planing based on absences +------------------------- -It should be noted that support for editing substitutions is currently -very basic, and the feature should not be used when substitution data -is imported from an external source. +Additionally, you can plan substitutions based on teacher absences. + +The first step is creating absences of teachers at *Absences → Absences* +(a link leading to this page is also including in the substitution +planning frontend). + +Then you can see all affected lessons at *Timetables → Plan substitutions* and +assign new teachers, subjects, and/or rooms. It is also possible to cancel the lesson. +Students and teachers then can see the changed data and also will be notified, if activated. + +.. image:: ../_static/plan_substitutions.png + :alt: Plan substitutions + +Especially helpful is the select for substitution teachers. It will show you +which teachers are available at the time and teach the same subject. + +.. image:: ../_static/plan_substitutions_select_teacher.png + :alt: Teacher select for substitutions diff --git a/docs/user/40_preferences.rst b/docs/user/40_preferences.rst deleted file mode 100644 index f100063774a3994a42517314c29beab0ca352989..0000000000000000000000000000000000000000 --- a/docs/user/40_preferences.rst +++ /dev/null @@ -1,8 +0,0 @@ -Configuring the timetable display -================================= - -Some display options can be changed by the user, under `Account → Settings → Timetables`: - -* **Shorten groups in timetable views**: With this setting activated, lists - with more groups than set in the system-wide limit will be collapsed into - a shorter string (e.g. 5a,b,c,d,e,f might be abbreviated as 5a-f) diff --git a/pyproject.toml b/pyproject.toml index 3163cb73181383e0f4036f5f5297fc8031dda1e3..ba6472420510dea63a2a47152e361d3ec013397e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "AlekSIS-App-Chronos" -version = "4.0.0.dev11" +version = "4.1.0.dev0" packages = [ { include = "aleksis" } ] @@ -50,10 +50,10 @@ priority = "supplemental" [tool.poetry.dependencies] python = "^3.10" calendarweek = "^0.5.0" -aleksis-core = "^4.0.0.dev13" -aleksis-app-resint = "^4.0.0.dev1" -aleksis-app-cursus = "^0.1.0.dev4" -aleksis-app-kolego = "^0.1.0.dev0" +aleksis-core = "^4.0.0" +aleksis-app-resint = "^4.0.0" +aleksis-app-cursus = "^1.0.0" +aleksis-app-kolego = "^1.0.0" [tool.poetry.plugins."aleksis.app"]