diff --git a/README.rst b/README.rst index 1b7d279d7cc7917ac713f01ee3be3741f9bb80c3..f7dbefe98161e5054e16084a6d6bac51a842edff 100644 --- a/README.rst +++ b/README.rst @@ -29,13 +29,14 @@ Licence :: - Copyright © 2018, 2019, 2020, 2021, 2022 Jonathan Weth <dev@jonathanweth.de> + Copyright © 2018, 2019, 2020, 2021, 2022, 2023, 2024 Jonathan Weth <dev@jonathanweth.de> Copyright © 2018, 2019 Frank Poetzsch-Heffter <p-h@katharineum.de> Copyright © 2019, 2020, 2022 Dominik George <dominik.george@teckids.org> - Copyright © 2019, 2021 Hangzhi Yu <yuha@katharineum.de> - Copyright © 2019 Julian Leucker <leuckeju@katharineum.de> + Copyright © 2019, 2021, 2022, 2023, 2024 Hangzhi Yu <yuha@katharineum.de> + Copyright © 2019, 2023, 2024 Julian Leucker <leuckeju@katharineum.de> Copyright © 2019 Tom Teichler <tom.teichler@teckids.org> Copyright © 2021 Lloyd Meins <meinsll@katharineum.de> + Copyright © 2023, 2024 Michael Bauer <michael-bauer@posteo.de> Licenced under the EUPL, version 1.2 or later, by Teckids e.V. (Bonn, Germany). diff --git a/aleksis/apps/chronos/apps.py b/aleksis/apps/chronos/apps.py index 254a0a2064e244f95fcfba408017c6fbb7cc86dd..377cefd6c1a90969c1c6c650da75fad34d3f2ae5 100644 --- a/aleksis/apps/chronos/apps.py +++ b/aleksis/apps/chronos/apps.py @@ -17,13 +17,14 @@ class ChronosConfig(AppConfig): } licence = "EUPL-1.2+" copyright_info = ( - ([2018, 2019, 2020, 2021, 2022], "Jonathan Weth", "wethjo@katharineum.de"), + ([2018, 2019, 2020, 2021, 2022, 2023, 2024], "Jonathan Weth", "dev@jonathanweth.de"), ([2018, 2019], "Frank Poetzsch-Heffter", "p-h@katharineum.de"), ([2019, 2020, 2022], "Dominik George", "dominik.george@teckids.org"), - ([2019, 2021], "Hangzhi Yu", "yuha@katharineum.de"), - ([2019], "Julian Leucker", "leuckeju@katharineum.de"), + ([2019, 2021, 2022, 2023, 2024], "Hangzhi Yu", "yuha@katharineum.de"), + ([2019, 2023, 2024], "Julian Leucker", "leuckeju@katharineum.de"), ([2019], "Tom Teichler", "tom.teichler@teckids.org"), ([2021], "Lloyd Meins", "meinsll@katharineum.de"), + ([2023, 2024], "Michael Bauer", "michael-bauer@posteo.de"), ) def ready(self): diff --git a/aleksis/apps/chronos/frontend/components/AmendLesson.vue b/aleksis/apps/chronos/frontend/components/AmendLesson.vue index 2d9f8b4c9d2798ba0afcedeb4711debbfa1ae0fc..7f06f71bbf16b7c5f55b310c13dd087d58833f11 100644 --- a/aleksis/apps/chronos/frontend/components/AmendLesson.vue +++ b/aleksis/apps/chronos/frontend/components/AmendLesson.vue @@ -157,12 +157,15 @@ export default { return { ...item, amends: this.selectedEvent.meta.id, - datetimeStart: this.selectedEvent.startDateTime.toUTC().toISO(), - datetimeEnd: this.selectedEvent.endDateTime.toUTC().toISO(), + datetimeStart: this.$toUTCISO(this.selectedEvent.startDateTime), + datetimeEnd: this.$toUTCISO(this.selectedEvent.endDateTime), + // Normalize cancelled, v-checkbox returns null & does not + // honor false-value. + cancelled: item.cancelled ? true : false, }; }, transformPatchData(item) { - let { id, __typename, cancelled, ...patchItem } = item; + let { __typename, cancelled, ...patchItem } = item; return { ...patchItem, // Normalize cancelled, v-checkbox returns null & does not diff --git a/aleksis/apps/chronos/frontend/components/Timetable.vue b/aleksis/apps/chronos/frontend/components/Timetable.vue index fbbaaddbb90d8912d0271c0d4ff1f8d97696b0af..5c0f66811aa7fc88098863b7fb71f53975e272b0 100644 --- a/aleksis/apps/chronos/frontend/components/Timetable.vue +++ b/aleksis/apps/chronos/frontend/components/Timetable.vue @@ -11,7 +11,11 @@ export default { <timetable-wrapper> <template #default="{ selected }"> <calendar-with-controls - :calendar-feeds="[{ name: 'lesson' }, { name: 'supervision' }]" + :calendar-feeds="[ + { name: 'lesson' }, + { name: 'supervision' }, + { name: 'holidays' }, + ]" :params="{ type: selected.type, id: selected.objId }" /> </template> diff --git a/aleksis/apps/chronos/frontend/index.js b/aleksis/apps/chronos/frontend/index.js index 31d0ebadb15e152afca201679520b1ed48584de8..9aeb78188d6d3993d3b7d04f64fd0d8f087956fc 100644 --- a/aleksis/apps/chronos/frontend/index.js +++ b/aleksis/apps/chronos/frontend/index.js @@ -66,5 +66,21 @@ export default { }, ], }, + { + path: "substitutions/print/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "chronos.substitutions", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "substitutions/print/:date/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "chronos.substitutionsByDate", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, ], }; diff --git a/aleksis/apps/chronos/locale/ar/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/ar/LC_MESSAGES/django.po index e58e5abfe555ff77cc0b2d8dd6f04c317fc23fcb..7bfa932f4f871a7787fc4f238c190419a4f07021 100644 --- a/aleksis/apps/chronos/locale/ar/LC_MESSAGES/django.po +++ b/aleksis/apps/chronos/locale/ar/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-21 11:32+0200\n" +"POT-Creation-Date: 2024-08-18 14:23+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -18,76 +18,38 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: aleksis/apps/chronos/form_extensions.py:7 -msgid "Options for timetables" -msgstr "" - -#: aleksis/apps/chronos/form_extensions.py:8 -msgid "Optional data for timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:6 aleksis/apps/chronos/preferences.py:10 -msgid "Timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:16 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18 -msgid "My timetable" -msgstr "" - -#: aleksis/apps/chronos/menus.py:27 -#: aleksis/apps/chronos/templates/chronos/all.html:11 -#: aleksis/apps/chronos/templates/chronos/all.html:12 -msgid "All timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:38 -msgid "Daily lessons" -msgstr "" - -#: aleksis/apps/chronos/menus.py:49 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:11 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:17 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 -msgid "Substitutions" -msgstr "" - #: aleksis/apps/chronos/mixins.py:25 msgid "Linked validity range" msgstr "" -#: aleksis/apps/chronos/model_extensions.py:142 -msgid "Show announcement in timetable views?" -msgstr "" - -#: aleksis/apps/chronos/model_extensions.py:151 +#: aleksis/apps/chronos/model_extensions.py:145 msgid "Can view group timetable" msgstr "" -#: aleksis/apps/chronos/model_extensions.py:155 +#: aleksis/apps/chronos/model_extensions.py:149 msgid "Can view person timetable" msgstr "" -#: aleksis/apps/chronos/models.py:86 +#: aleksis/apps/chronos/models.py:87 msgid "School term" msgstr "" -#: aleksis/apps/chronos/models.py:89 aleksis/apps/chronos/models.py:699 +#: aleksis/apps/chronos/models.py:90 aleksis/apps/chronos/models.py:626 +#: aleksis/apps/chronos/models.py:1310 msgid "Name" msgstr "" -#: aleksis/apps/chronos/models.py:91 aleksis/apps/chronos/models.py:754 -#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:1061 +#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:676 +#: aleksis/apps/chronos/models.py:747 aleksis/apps/chronos/models.py:979 msgid "Start date" msgstr "" -#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:755 -#: aleksis/apps/chronos/models.py:828 aleksis/apps/chronos/models.py:1062 +#: aleksis/apps/chronos/models.py:93 aleksis/apps/chronos/models.py:677 +#: aleksis/apps/chronos/models.py:748 aleksis/apps/chronos/models.py:980 msgid "End date" msgstr "" -#: aleksis/apps/chronos/models.py:111 +#: aleksis/apps/chronos/models.py:112 msgid "The start date must be earlier than the end date." msgstr "" @@ -107,547 +69,506 @@ msgstr "" msgid "Validity ranges" msgstr "" -#: aleksis/apps/chronos/models.py:150 +#: aleksis/apps/chronos/models.py:149 msgid "Week day" msgstr "" -#: aleksis/apps/chronos/models.py:152 +#: aleksis/apps/chronos/models.py:151 msgid "Number of period" msgstr "" -#: aleksis/apps/chronos/models.py:154 +#: aleksis/apps/chronos/models.py:153 msgid "Start time" msgstr "" -#: aleksis/apps/chronos/models.py:155 +#: aleksis/apps/chronos/models.py:154 msgid "End time" msgstr "" -#: aleksis/apps/chronos/models.py:338 aleksis/apps/chronos/models.py:525 -#: aleksis/apps/chronos/models.py:1191 +#: aleksis/apps/chronos/models.py:324 aleksis/apps/chronos/models.py:496 +#: aleksis/apps/chronos/models.py:1122 msgid "Time period" msgstr "" -#: aleksis/apps/chronos/models.py:339 +#: aleksis/apps/chronos/models.py:325 msgid "Time periods" msgstr "" -#: aleksis/apps/chronos/models.py:343 aleksis/apps/chronos/models.py:364 -#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:873 -#: aleksis/apps/chronos/models.py:895 +#: aleksis/apps/chronos/models.py:329 aleksis/apps/chronos/models.py:625 +#: aleksis/apps/chronos/models.py:793 aleksis/apps/chronos/models.py:810 msgid "Short name" msgstr "" -#: aleksis/apps/chronos/models.py:344 aleksis/apps/chronos/models.py:365 -#: aleksis/apps/chronos/models.py:874 aleksis/apps/chronos/models.py:896 +#: aleksis/apps/chronos/models.py:330 aleksis/apps/chronos/models.py:794 +#: aleksis/apps/chronos/models.py:811 msgid "Long name" msgstr "" -#: aleksis/apps/chronos/models.py:346 +#: aleksis/apps/chronos/models.py:332 msgid "Foreground colour" msgstr "" -#: aleksis/apps/chronos/models.py:347 +#: aleksis/apps/chronos/models.py:333 msgid "Background colour" msgstr "" -#: aleksis/apps/chronos/models.py:354 aleksis/apps/chronos/models.py:390 -#: aleksis/apps/chronos/models.py:446 aleksis/apps/chronos/models.py:1198 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:47 +#: aleksis/apps/chronos/models.py:340 aleksis/apps/chronos/models.py:349 +#: aleksis/apps/chronos/models.py:416 aleksis/apps/chronos/models.py:1129 +#: aleksis/apps/chronos/models.py:1345 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:2 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29 msgid "Subject" msgstr "" -#: aleksis/apps/chronos/models.py:355 +#: aleksis/apps/chronos/models.py:341 msgid "Subjects" msgstr "" -#: aleksis/apps/chronos/models.py:374 -msgid "Can view room timetable" -msgstr "" - -#: aleksis/apps/chronos/models.py:376 aleksis/apps/chronos/models.py:454 -#: aleksis/apps/chronos/models.py:533 aleksis/apps/chronos/models.py:751 -#: aleksis/apps/chronos/models.py:1213 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:48 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 -msgid "Room" -msgstr "" - -#: aleksis/apps/chronos/models.py:377 aleksis/apps/chronos/models.py:1078 -#: aleksis/apps/chronos/templates/chronos/all.html:45 -msgid "Rooms" -msgstr "" - -#: aleksis/apps/chronos/models.py:393 aleksis/apps/chronos/models.py:452 -#: aleksis/apps/chronos/models.py:1080 aleksis/apps/chronos/models.py:1206 -#: aleksis/apps/chronos/tables.py:35 -#: aleksis/apps/chronos/templates/chronos/all.html:17 +#: aleksis/apps/chronos/models.py:352 aleksis/apps/chronos/models.py:422 +#: aleksis/apps/chronos/models.py:998 aleksis/apps/chronos/models.py:1137 +#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:3 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28 +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:1 msgid "Teachers" msgstr "" -#: aleksis/apps/chronos/models.py:399 +#: aleksis/apps/chronos/models.py:358 msgid "Periods" msgstr "" -#: aleksis/apps/chronos/models.py:401 aleksis/apps/chronos/models.py:1077 -#: aleksis/apps/chronos/models.py:1201 aleksis/apps/chronos/tables.py:34 -#: aleksis/apps/chronos/templates/chronos/all.html:31 +#: aleksis/apps/chronos/models.py:360 aleksis/apps/chronos/models.py:995 +#: aleksis/apps/chronos/models.py:1132 aleksis/apps/chronos/models.py:1326 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:1 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:26 msgid "Groups" msgstr "" -#: aleksis/apps/chronos/models.py:424 aleksis/apps/chronos/models.py:519 -#: aleksis/apps/chronos/models.py:795 +#: aleksis/apps/chronos/models.py:394 aleksis/apps/chronos/models.py:490 +#: aleksis/apps/chronos/models.py:716 aleksis/apps/chronos/models.py:1430 +#: aleksis/apps/chronos/models.py:1454 msgid "Lesson" msgstr "" -#: aleksis/apps/chronos/models.py:425 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19 +#: aleksis/apps/chronos/models.py:395 aleksis/apps/chronos/models.py:1306 msgid "Lessons" msgstr "" -#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:1185 +#: aleksis/apps/chronos/models.py:403 aleksis/apps/chronos/models.py:1116 msgid "Week" msgstr "" -#: aleksis/apps/chronos/models.py:434 aleksis/apps/chronos/models.py:1186 +#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:1117 msgid "Year" msgstr "" -#: aleksis/apps/chronos/models.py:437 aleksis/apps/chronos/models.py:654 +#: aleksis/apps/chronos/models.py:407 aleksis/apps/chronos/models.py:620 msgid "Lesson period" msgstr "" -#: aleksis/apps/chronos/models.py:456 +#: aleksis/apps/chronos/models.py:425 aleksis/apps/chronos/models.py:504 +#: aleksis/apps/chronos/models.py:673 aleksis/apps/chronos/models.py:1144 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 +msgid "Room" +msgstr "" + +#: aleksis/apps/chronos/models.py:428 msgid "Cancelled?" msgstr "" -#: aleksis/apps/chronos/models.py:458 +#: aleksis/apps/chronos/models.py:430 msgid "Cancelled for teachers?" msgstr "" -#: aleksis/apps/chronos/models.py:461 aleksis/apps/chronos/models.py:770 -#: aleksis/apps/chronos/models.py:813 aleksis/apps/chronos/models.py:1216 +#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:692 +#: aleksis/apps/chronos/models.py:734 aleksis/apps/chronos/models.py:1147 +#: aleksis/apps/chronos/models.py:1357 msgid "Comment" msgstr "" -#: aleksis/apps/chronos/models.py:465 +#: aleksis/apps/chronos/models.py:437 msgid "Lessons can only be either substituted or cancelled." msgstr "" -#: aleksis/apps/chronos/models.py:506 +#: aleksis/apps/chronos/models.py:477 msgid "Lesson substitution" msgstr "" -#: aleksis/apps/chronos/models.py:507 +#: aleksis/apps/chronos/models.py:478 msgid "Lesson substitutions" msgstr "" -#: aleksis/apps/chronos/models.py:655 +#: aleksis/apps/chronos/models.py:621 msgid "Lesson periods" msgstr "" -#: aleksis/apps/chronos/models.py:693 -msgid "Timetable widget" -msgstr "" - -#: aleksis/apps/chronos/models.py:694 -msgid "Timetable widgets" -msgstr "" - -#: aleksis/apps/chronos/models.py:708 aleksis/apps/chronos/models.py:726 +#: aleksis/apps/chronos/models.py:635 aleksis/apps/chronos/models.py:648 msgid "Absence reason" msgstr "" -#: aleksis/apps/chronos/models.py:709 +#: aleksis/apps/chronos/models.py:636 msgid "Absence reasons" msgstr "" -#: aleksis/apps/chronos/models.py:735 aleksis/apps/chronos/models.py:974 -#: aleksis/apps/chronos/models.py:1025 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:46 +#: aleksis/apps/chronos/models.py:657 aleksis/apps/chronos/models.py:889 +#: aleksis/apps/chronos/models.py:943 msgid "Teacher" msgstr "" -#: aleksis/apps/chronos/models.py:743 +#: aleksis/apps/chronos/models.py:665 msgid "Group" msgstr "" -#: aleksis/apps/chronos/models.py:759 aleksis/apps/chronos/models.py:802 +#: aleksis/apps/chronos/models.py:681 aleksis/apps/chronos/models.py:723 msgid "Start period" msgstr "" -#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:808 +#: aleksis/apps/chronos/models.py:688 aleksis/apps/chronos/models.py:729 msgid "End period" msgstr "" -#: aleksis/apps/chronos/models.py:780 +#: aleksis/apps/chronos/models.py:702 msgid "Unknown absence" msgstr "" -#: aleksis/apps/chronos/models.py:786 +#: aleksis/apps/chronos/models.py:707 msgid "Absence" msgstr "" -#: aleksis/apps/chronos/models.py:787 +#: aleksis/apps/chronos/models.py:708 msgid "Absences" msgstr "" -#: aleksis/apps/chronos/models.py:798 +#: aleksis/apps/chronos/models.py:719 msgid "Date of exam" msgstr "" -#: aleksis/apps/chronos/models.py:812 aleksis/apps/chronos/models.py:826 -#: aleksis/apps/chronos/models.py:1059 +#: aleksis/apps/chronos/models.py:733 aleksis/apps/chronos/models.py:746 +#: aleksis/apps/chronos/models.py:977 msgid "Title" msgstr "" -#: aleksis/apps/chronos/models.py:819 +#: aleksis/apps/chronos/models.py:739 msgid "Exam" msgstr "" -#: aleksis/apps/chronos/models.py:820 +#: aleksis/apps/chronos/models.py:740 msgid "Exams" msgstr "" -#: aleksis/apps/chronos/models.py:829 +#: aleksis/apps/chronos/models.py:749 msgid "Comments" msgstr "" -#: aleksis/apps/chronos/models.py:868 +#: aleksis/apps/chronos/models.py:788 msgid "Holiday" msgstr "" -#: aleksis/apps/chronos/models.py:869 +#: aleksis/apps/chronos/models.py:789 msgid "Holidays" msgstr "" -#: aleksis/apps/chronos/models.py:883 aleksis/apps/chronos/models.py:964 +#: aleksis/apps/chronos/models.py:803 aleksis/apps/chronos/models.py:879 msgid "Supervision area" msgstr "" -#: aleksis/apps/chronos/models.py:884 +#: aleksis/apps/chronos/models.py:804 msgid "Supervision areas" msgstr "" -#: aleksis/apps/chronos/models.py:901 +#: aleksis/apps/chronos/models.py:816 msgid "Time period after break starts" msgstr "" -#: aleksis/apps/chronos/models.py:909 +#: aleksis/apps/chronos/models.py:824 msgid "Time period before break ends" msgstr "" -#: aleksis/apps/chronos/models.py:949 aleksis/apps/chronos/models.py:968 +#: aleksis/apps/chronos/models.py:864 aleksis/apps/chronos/models.py:883 msgid "Break" msgstr "" -#: aleksis/apps/chronos/models.py:950 +#: aleksis/apps/chronos/models.py:865 msgid "Breaks" msgstr "" -#: aleksis/apps/chronos/models.py:1005 aleksis/apps/chronos/models.py:1018 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23 -#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15 +#: aleksis/apps/chronos/models.py:923 aleksis/apps/chronos/models.py:936 +#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:3 msgid "Supervision" msgstr "" -#: aleksis/apps/chronos/models.py:1006 +#: aleksis/apps/chronos/models.py:924 aleksis/apps/chronos/models.py:1622 msgid "Supervisions" msgstr "" -#: aleksis/apps/chronos/models.py:1014 +#: aleksis/apps/chronos/models.py:932 msgid "Date" msgstr "" -#: aleksis/apps/chronos/models.py:1048 +#: aleksis/apps/chronos/models.py:966 msgid "Supervision substitution" msgstr "" -#: aleksis/apps/chronos/models.py:1049 +#: aleksis/apps/chronos/models.py:967 msgid "Supervision substitutions" msgstr "" -#: aleksis/apps/chronos/models.py:1067 +#: aleksis/apps/chronos/models.py:985 msgid "Start time period" msgstr "" -#: aleksis/apps/chronos/models.py:1073 +#: aleksis/apps/chronos/models.py:991 msgid "End time period" msgstr "" -#: aleksis/apps/chronos/models.py:1087 +#: aleksis/apps/chronos/models.py:996 aleksis/apps/chronos/models.py:1332 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:4 +msgid "Rooms" +msgstr "" + +#: aleksis/apps/chronos/models.py:1005 #, python-brace-format msgid "Event {pk}" msgstr "" -#: aleksis/apps/chronos/models.py:1172 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27 +#: aleksis/apps/chronos/models.py:1103 msgid "Event" msgstr "" -#: aleksis/apps/chronos/models.py:1173 +#: aleksis/apps/chronos/models.py:1104 msgid "Events" msgstr "" -#: aleksis/apps/chronos/models.py:1221 +#: aleksis/apps/chronos/models.py:1152 msgid "Related exam" msgstr "" -#: aleksis/apps/chronos/models.py:1251 +#: aleksis/apps/chronos/models.py:1181 msgid "Extra lesson" msgstr "" -#: aleksis/apps/chronos/models.py:1252 +#: aleksis/apps/chronos/models.py:1182 msgid "Extra lessons" msgstr "" -#: aleksis/apps/chronos/models.py:1264 +#: aleksis/apps/chronos/models.py:1194 msgid "Number of days shown in the plan" msgstr "" -#: aleksis/apps/chronos/models.py:1268 +#: aleksis/apps/chronos/models.py:1198 msgid "Show header box" msgstr "" -#: aleksis/apps/chronos/models.py:1269 aleksis/apps/chronos/preferences.py:61 +#: aleksis/apps/chronos/models.py:1199 aleksis/apps/chronos/preferences.py:100 msgid "The header box shows affected teachers/groups." msgstr "" -#: aleksis/apps/chronos/models.py:1276 +#: aleksis/apps/chronos/models.py:1206 msgid "Revision which triggered the last update" msgstr "" -#: aleksis/apps/chronos/models.py:1337 +#: aleksis/apps/chronos/models.py:1278 msgid "Automatic plan" msgstr "" -#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/models.py:1279 msgid "Automatic plans" msgstr "" -#: aleksis/apps/chronos/models.py:1352 +#: aleksis/apps/chronos/models.py:1293 msgid "Can view all room timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/models.py:1294 msgid "Can view all group timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1354 +#: aleksis/apps/chronos/models.py:1295 msgid "Can view all person timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1355 +#: aleksis/apps/chronos/models.py:1296 msgid "Can view timetable overview" msgstr "" -#: aleksis/apps/chronos/models.py:1356 +#: aleksis/apps/chronos/models.py:1297 msgid "Can view all lessons per day" msgstr "" -#: aleksis/apps/chronos/preferences.py:18 -msgid "Use parent groups in timetable views" +#: aleksis/apps/chronos/models.py:1298 +msgid "Can view all supervisions per day" msgstr "" -#: aleksis/apps/chronos/preferences.py:20 -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." +#: aleksis/apps/chronos/models.py:1313 +msgid "Start slot number" msgstr "" -#: aleksis/apps/chronos/preferences.py:31 -msgid "Shorten groups in timetable views" +#: aleksis/apps/chronos/models.py:1316 +msgid "End slot number" msgstr "" -#: aleksis/apps/chronos/preferences.py:32 -msgid "If there are more groups than the set limit, they will be collapsed." +#: aleksis/apps/chronos/models.py:1320 +msgid "Course" msgstr "" -#: aleksis/apps/chronos/preferences.py:40 -msgid "Limit of groups for shortening of groups" +#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 +msgid "Cancelled" msgstr "" -#: aleksis/apps/chronos/preferences.py:42 -msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit." +#: aleksis/apps/chronos/models.py:1401 aleksis/apps/chronos/models.py:1413 +#: aleksis/apps/chronos/models.py:1425 +msgid "{} (instead of {})" msgstr "" -#: aleksis/apps/chronos/preferences.py:52 -msgid "Number of days shown on substitutions print view" +#: aleksis/apps/chronos/models.py:1614 +msgid "Lesson Event" msgstr "" -#: aleksis/apps/chronos/preferences.py:60 -msgid "Show header box in substitution views" +#: aleksis/apps/chronos/models.py:1615 +msgid "Lesson Events" msgstr "" -#: aleksis/apps/chronos/preferences.py:70 -msgid "Show parent groups in header box in substitution views instead of original groups" +#: aleksis/apps/chronos/models.py:1630 +msgid "Supervision: {}" msgstr "" -#: aleksis/apps/chronos/preferences.py:79 -msgid "How many days in advance users should be notified about timetable changes?" +#: aleksis/apps/chronos/preferences.py:21 +msgid "Timetables" msgstr "" -#: aleksis/apps/chronos/preferences.py:87 -msgid "Time for sending notifications about timetable changes" +#: aleksis/apps/chronos/preferences.py:29 +msgid "Use parent groups in timetable views" msgstr "" -#: aleksis/apps/chronos/preferences.py:90 -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." +#: aleksis/apps/chronos/preferences.py:31 +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 "" -#: aleksis/apps/chronos/preferences.py:101 -#: aleksis/apps/chronos/preferences.py:109 -msgid "Send notifications for current timetable changes" +#: aleksis/apps/chronos/preferences.py:42 +msgid "Shorten groups in timetable views" msgstr "" -#: aleksis/apps/chronos/tables.py:41 -msgid "Substitution" +#: aleksis/apps/chronos/preferences.py:43 +msgid "If there are more groups than the set limit, they will be collapsed." msgstr "" -#: aleksis/apps/chronos/tables.py:43 -msgid "Manage substitution" +#: aleksis/apps/chronos/preferences.py:51 +msgid "Limit of groups for shortening of groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:25 -msgid "No teachers timetables available." +#: aleksis/apps/chronos/preferences.py:53 +msgid "If a user activates shortening of groups,they will be collapsed if there are more groups than this limit." msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:39 -msgid "No group timetables available." +#: aleksis/apps/chronos/preferences.py:65 +msgid "Relevant days for substitution plans" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:53 -msgid "No room timetables available." +#: aleksis/apps/chronos/preferences.py:82 +msgid "Time when substitution plans switch to the next day" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:11 -msgid "Edit substitution." +#: aleksis/apps/chronos/preferences.py:91 +msgid "Number of days shown on substitutions print view" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:12 -msgid "Edit substitution" +#: aleksis/apps/chronos/preferences.py:99 +msgid "Show header box in substitution views" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:25 -msgid "Delete" +#: aleksis/apps/chronos/preferences.py:109 +msgid "Show parent groups in header box in substitution views instead of original groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19 -#: aleksis/apps/chronos/templates/chronos/timetable.html:50 -msgid "SMART PLAN" +#: aleksis/apps/chronos/preferences.py:118 +msgid "How many days in advance users should be notified about timetable changes?" msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22 -msgid "Show week timetable for" +#: aleksis/apps/chronos/preferences.py:126 +msgid "Time for sending notifications about timetable changes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 -msgid "Absent teachers" +#: aleksis/apps/chronos/preferences.py:129 +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 "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22 -msgid "Absent groups" +#: aleksis/apps/chronos/preferences.py:140 +#: aleksis/apps/chronos/preferences.py:148 +msgid "Send notifications for current timetable changes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34 -msgid "Affected teachers" +#: aleksis/apps/chronos/preferences.py:158 +msgid "Group types to show in timetables" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46 -msgid "Affected groups" +#: aleksis/apps/chronos/preferences.py:159 +msgid "If you leave it empty, all groups will be shown." msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/lesson.html:27 -msgid "Cancelled due to an event" +#: aleksis/apps/chronos/preferences.py:169 +msgid "Lesson calendar feed color" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 -msgid "Cancelled" +#: aleksis/apps/chronos/preferences.py:181 +msgid "Supervision calendar feed color" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6 -msgid "Cancelled for teachers" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 +msgid "Absent teachers" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/today.html:2 -msgid "Today" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22 +msgid "Absent groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36 -msgid "CW" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34 +msgid "Affected teachers" msgstr "" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:49 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 -msgid "Notes" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46 +msgid "Affected groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:57 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 -msgid "No substitutions available." +#: aleksis/apps/chronos/templates/chronos/partials/subs/period.html:12 +msgid "all day" msgstr "" #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 msgid "Print: Substitutions" msgstr "" -#: aleksis/apps/chronos/templates/chronos/timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/timetable.html:24 -#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11 -#: aleksis/apps/chronos/util/notifications.py:206 -msgid "Timetable" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:29 -msgid "Group teachers:" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:55 -msgid "Show regular timetable" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:63 -#: aleksis/apps/chronos/templates/chronos/timetable.html:84 -msgid "View class register of this week" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 +msgid "Substitutions" msgstr "" -#: aleksis/apps/chronos/templates/chronos/timetable.html:76 -msgid "Show SMART PLAN" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:27 +msgid "Time" msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:8 -#, python-format -msgid "" -"\n" -" My timetable for %(day)s\n" -" " +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 +msgid "Notes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:18 -msgid "" -"\n" -" There is no timetable linked to your person.\n" -" " +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 +msgid "No substitutions available." msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:27 -msgid "Go to smart plan" +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:2 +msgid "Areas" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:50 +#: aleksis/apps/chronos/util/notifications.py:48 #, python-brace-format msgid "The {subject} lesson in the {period}. period on {day} has been cancelled." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:57 +#: aleksis/apps/chronos/util/notifications.py:55 #, python-brace-format msgid "The {subject} lesson in the {period}. period on {day} has some current changes." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:66 +#: aleksis/apps/chronos/util/notifications.py:64 #, python-brace-format msgid "The teacher {old} is substituted by {new}." msgid_plural "The teachers {old} are substituted by {new}." @@ -658,81 +579,77 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: aleksis/apps/chronos/util/notifications.py:78 +#: aleksis/apps/chronos/util/notifications.py:76 #, python-brace-format msgid "The subject is changed to {subject}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:84 +#: aleksis/apps/chronos/util/notifications.py:82 #, python-brace-format msgid "The lesson is moved from {old} to {new}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:93 +#: aleksis/apps/chronos/util/notifications.py:91 #, python-brace-format msgid "There is an additional comment: {comment}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:101 +#: aleksis/apps/chronos/util/notifications.py:99 #, 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 "" -#: aleksis/apps/chronos/util/notifications.py:114 +#: aleksis/apps/chronos/util/notifications.py:112 #, python-brace-format msgid "There is an event on {date} from the {period_from}. period to the {period_to}. period:" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:125 -#: aleksis/apps/chronos/util/notifications.py:145 +#: aleksis/apps/chronos/util/notifications.py:123 +#: aleksis/apps/chronos/util/notifications.py:143 #, python-brace-format msgid "Groups: {groups}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:127 -#: aleksis/apps/chronos/util/notifications.py:149 +#: aleksis/apps/chronos/util/notifications.py:125 +#: aleksis/apps/chronos/util/notifications.py:147 #, python-brace-format msgid "Teachers: {teachers}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:130 +#: aleksis/apps/chronos/util/notifications.py:128 #, python-brace-format msgid "Rooms: {rooms}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:137 +#: aleksis/apps/chronos/util/notifications.py:135 #, python-brace-format msgid "There is an extra lesson on {date} in the {period}. period:" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:147 +#: aleksis/apps/chronos/util/notifications.py:145 #, python-brace-format msgid "Subject: {subject}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:151 +#: aleksis/apps/chronos/util/notifications.py:149 #, python-brace-format msgid "Room: {room}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:153 +#: aleksis/apps/chronos/util/notifications.py:151 #, python-brace-format msgid "Comment: {comment}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:156 +#: aleksis/apps/chronos/util/notifications.py:154 #, 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 "" -#: aleksis/apps/chronos/util/notifications.py:207 -msgid "There are current changes to your timetable." -msgstr "" - -#: aleksis/apps/chronos/views.py:270 -msgid "The substitution has been saved." +#: aleksis/apps/chronos/util/notifications.py:204 +msgid "Timetable" msgstr "" -#: aleksis/apps/chronos/views.py:291 -msgid "The substitution has been deleted." +#: aleksis/apps/chronos/util/notifications.py:205 +msgid "There are current changes to your timetable." msgstr "" 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 7d60974cc959b0b54c7f753f2eb40b1404e13f6f..6cc74cf61d93a9433e0182e2955f670f4c7bbec7 100644 --- a/aleksis/apps/chronos/locale/de_DE/LC_MESSAGES/django.po +++ b/aleksis/apps/chronos/locale/de_DE/LC_MESSAGES/django.po @@ -7,87 +7,56 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-21 11:32+0200\n" -"PO-Revision-Date: 2023-01-25 05:57+0000\n" -"Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n" +"POT-Creation-Date: 2024-08-18 14:23+0200\n" +"PO-Revision-Date: 2024-08-18 13:31+0000\n" +"Last-Translator: magicfelix <felix@felix-zauberer.de>\n" "Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-app-chronos/de/>\n" "Language: de_DE\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 4.12.1\n" - -#: aleksis/apps/chronos/form_extensions.py:7 -msgid "Options for timetables" -msgstr "Einstellungen für Stundenpläne" - -#: aleksis/apps/chronos/form_extensions.py:8 -msgid "Optional data for timetables" -msgstr "Optionale Daten für Stundenpläne" - -#: aleksis/apps/chronos/menus.py:6 aleksis/apps/chronos/preferences.py:10 -msgid "Timetables" -msgstr "Stundenpläne" - -#: aleksis/apps/chronos/menus.py:16 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18 -msgid "My timetable" -msgstr "Mein Plan" - -#: aleksis/apps/chronos/menus.py:27 -#: aleksis/apps/chronos/templates/chronos/all.html:11 -#: aleksis/apps/chronos/templates/chronos/all.html:12 -msgid "All timetables" -msgstr "Alle Stundenpläne" - -#: aleksis/apps/chronos/menus.py:38 -msgid "Daily lessons" -msgstr "Tagesstunden" - -#: aleksis/apps/chronos/menus.py:49 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:11 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:17 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 -msgid "Substitutions" -msgstr "Vertretungen" +"X-Generator: Weblate 5.0.2\n" #: aleksis/apps/chronos/mixins.py:25 msgid "Linked validity range" msgstr "Zugeordneter Gültigkeitsbereich" -#: aleksis/apps/chronos/model_extensions.py:142 -msgid "Show announcement in timetable views?" -msgstr "Ankündigungen in Stundenplanansichten anzeigen?" - +#: aleksis/apps/chronos/model_extensions.py:145 #: aleksis/apps/chronos/model_extensions.py:151 msgid "Can view group timetable" msgstr "Kann Gruppenstundenpläne sehen" +#: aleksis/apps/chronos/model_extensions.py:149 #: aleksis/apps/chronos/model_extensions.py:155 msgid "Can view person timetable" msgstr "Kann Personenstundenpläne sehen" -#: aleksis/apps/chronos/models.py:86 +#: aleksis/apps/chronos/models.py:87 aleksis/apps/chronos/models.py:86 msgid "School term" msgstr "Schuljahr" -#: aleksis/apps/chronos/models.py:89 aleksis/apps/chronos/models.py:699 +#: aleksis/apps/chronos/models.py:90 aleksis/apps/chronos/models.py:626 +#: aleksis/apps/chronos/models.py:1310 aleksis/apps/chronos/models.py:89 +#: aleksis/apps/chronos/models.py:699 msgid "Name" msgstr "Name" +#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:676 +#: aleksis/apps/chronos/models.py:747 aleksis/apps/chronos/models.py:979 #: aleksis/apps/chronos/models.py:91 aleksis/apps/chronos/models.py:754 #: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:1061 msgid "Start date" msgstr "Startdatum" +#: aleksis/apps/chronos/models.py:93 aleksis/apps/chronos/models.py:677 +#: aleksis/apps/chronos/models.py:748 aleksis/apps/chronos/models.py:980 #: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:755 #: aleksis/apps/chronos/models.py:828 aleksis/apps/chronos/models.py:1062 msgid "End date" msgstr "Enddatum" -#: aleksis/apps/chronos/models.py:111 +#: aleksis/apps/chronos/models.py:112 aleksis/apps/chronos/models.py:111 msgid "The start date must be earlier than the end date." msgstr "Das Startdatum muss vor dem Enddatum liegen." @@ -97,7 +66,9 @@ msgstr "Der Gültigkeitsbereich muss innerhalb des Schuljahres liegen." #: aleksis/apps/chronos/models.py:125 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." +msgstr "" +"Es gibt bereits einen Gültigkeitsbereich für diesen Zeitraum oder einen Teil " +"diesen Zeitraumes." #: aleksis/apps/chronos/models.py:132 msgid "Validity range" @@ -107,440 +78,530 @@ msgstr "Gültigkeitsbereich" msgid "Validity ranges" msgstr "Gültigkeitsbereiche" -#: aleksis/apps/chronos/models.py:150 +#: aleksis/apps/chronos/models.py:149 aleksis/apps/chronos/models.py:150 msgid "Week day" msgstr "Wochentag" -#: aleksis/apps/chronos/models.py:152 +#: aleksis/apps/chronos/models.py:151 aleksis/apps/chronos/models.py:152 msgid "Number of period" msgstr "Nummer der Stunde" -#: aleksis/apps/chronos/models.py:154 +#: aleksis/apps/chronos/models.py:153 aleksis/apps/chronos/models.py:154 msgid "Start time" msgstr "Startzeit" -#: aleksis/apps/chronos/models.py:155 +#: aleksis/apps/chronos/models.py:154 aleksis/apps/chronos/models.py:155 msgid "End time" msgstr "Endzeit" -#: aleksis/apps/chronos/models.py:338 aleksis/apps/chronos/models.py:525 -#: aleksis/apps/chronos/models.py:1191 +#: aleksis/apps/chronos/models.py:324 aleksis/apps/chronos/models.py:496 +#: aleksis/apps/chronos/models.py:1122 aleksis/apps/chronos/models.py:338 +#: aleksis/apps/chronos/models.py:525 aleksis/apps/chronos/models.py:1191 msgid "Time period" msgstr "Stunde" -#: aleksis/apps/chronos/models.py:339 +#: aleksis/apps/chronos/models.py:325 aleksis/apps/chronos/models.py:339 msgid "Time periods" msgstr "Stunden" +#: aleksis/apps/chronos/models.py:329 aleksis/apps/chronos/models.py:625 +#: aleksis/apps/chronos/models.py:793 aleksis/apps/chronos/models.py:810 #: aleksis/apps/chronos/models.py:343 aleksis/apps/chronos/models.py:364 #: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:873 #: aleksis/apps/chronos/models.py:895 msgid "Short name" msgstr "Kurzname" -#: aleksis/apps/chronos/models.py:344 aleksis/apps/chronos/models.py:365 -#: aleksis/apps/chronos/models.py:874 aleksis/apps/chronos/models.py:896 +#: aleksis/apps/chronos/models.py:330 aleksis/apps/chronos/models.py:794 +#: aleksis/apps/chronos/models.py:811 aleksis/apps/chronos/models.py:344 +#: aleksis/apps/chronos/models.py:365 aleksis/apps/chronos/models.py:874 +#: aleksis/apps/chronos/models.py:896 msgid "Long name" msgstr "Langname" -#: aleksis/apps/chronos/models.py:346 +#: aleksis/apps/chronos/models.py:332 aleksis/apps/chronos/models.py:346 msgid "Foreground colour" msgstr "Vordergrundfarbe" -#: aleksis/apps/chronos/models.py:347 +#: aleksis/apps/chronos/models.py:333 aleksis/apps/chronos/models.py:347 msgid "Background colour" msgstr "Hintergrundfarbe" +#: aleksis/apps/chronos/models.py:340 aleksis/apps/chronos/models.py:349 +#: aleksis/apps/chronos/models.py:416 aleksis/apps/chronos/models.py:1129 +#: aleksis/apps/chronos/models.py:1345 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:2 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29 #: aleksis/apps/chronos/models.py:354 aleksis/apps/chronos/models.py:390 #: aleksis/apps/chronos/models.py:446 aleksis/apps/chronos/models.py:1198 #: aleksis/apps/chronos/templates/chronos/substitutions.html:47 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29 msgid "Subject" msgstr "Fach" -#: aleksis/apps/chronos/models.py:355 +#: aleksis/apps/chronos/models.py:341 aleksis/apps/chronos/models.py:355 msgid "Subjects" msgstr "Fächer" -#: aleksis/apps/chronos/models.py:374 -msgid "Can view room timetable" -msgstr "Kann Raum-Stundenplan sehen" - -#: aleksis/apps/chronos/models.py:376 aleksis/apps/chronos/models.py:454 -#: aleksis/apps/chronos/models.py:533 aleksis/apps/chronos/models.py:751 -#: aleksis/apps/chronos/models.py:1213 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:48 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 -msgid "Room" -msgstr "Raum" - -#: aleksis/apps/chronos/models.py:377 aleksis/apps/chronos/models.py:1078 -#: aleksis/apps/chronos/templates/chronos/all.html:45 -msgid "Rooms" -msgstr "Räume" - +#: aleksis/apps/chronos/models.py:352 aleksis/apps/chronos/models.py:422 +#: aleksis/apps/chronos/models.py:998 aleksis/apps/chronos/models.py:1137 +#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:3 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28 +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:1 #: aleksis/apps/chronos/models.py:393 aleksis/apps/chronos/models.py:452 #: aleksis/apps/chronos/models.py:1080 aleksis/apps/chronos/models.py:1206 #: aleksis/apps/chronos/tables.py:35 #: aleksis/apps/chronos/templates/chronos/all.html:17 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28 msgid "Teachers" msgstr "Lehrkräfte" -#: aleksis/apps/chronos/models.py:399 +#: aleksis/apps/chronos/models.py:358 aleksis/apps/chronos/models.py:399 msgid "Periods" msgstr "Stunden" +#: aleksis/apps/chronos/models.py:360 aleksis/apps/chronos/models.py:995 +#: aleksis/apps/chronos/models.py:1132 aleksis/apps/chronos/models.py:1326 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:1 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:26 #: aleksis/apps/chronos/models.py:401 aleksis/apps/chronos/models.py:1077 #: aleksis/apps/chronos/models.py:1201 aleksis/apps/chronos/tables.py:34 #: aleksis/apps/chronos/templates/chronos/all.html:31 msgid "Groups" msgstr "Gruppen" -#: aleksis/apps/chronos/models.py:424 aleksis/apps/chronos/models.py:519 -#: aleksis/apps/chronos/models.py:795 +#: aleksis/apps/chronos/models.py:394 aleksis/apps/chronos/models.py:490 +#: aleksis/apps/chronos/models.py:716 aleksis/apps/chronos/models.py:1430 +#: aleksis/apps/chronos/models.py:1454 aleksis/apps/chronos/models.py:424 +#: aleksis/apps/chronos/models.py:519 aleksis/apps/chronos/models.py:795 msgid "Lesson" msgstr "Unterrichtsstunde" +#: aleksis/apps/chronos/models.py:395 aleksis/apps/chronos/models.py:1306 #: aleksis/apps/chronos/models.py:425 #: aleksis/apps/chronos/templates/chronos/lessons_day.html:9 #: aleksis/apps/chronos/templates/chronos/lessons_day.html:19 msgid "Lessons" msgstr "Unterrichtsstunden" +#: aleksis/apps/chronos/models.py:403 aleksis/apps/chronos/models.py:1116 #: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:1185 msgid "Week" msgstr "KW" +#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:1117 #: aleksis/apps/chronos/models.py:434 aleksis/apps/chronos/models.py:1186 msgid "Year" msgstr "Jahr" +#: aleksis/apps/chronos/models.py:407 aleksis/apps/chronos/models.py:620 #: aleksis/apps/chronos/models.py:437 aleksis/apps/chronos/models.py:654 msgid "Lesson period" msgstr "Unterrichtsstunde" -#: aleksis/apps/chronos/models.py:456 +#: aleksis/apps/chronos/models.py:425 aleksis/apps/chronos/models.py:504 +#: aleksis/apps/chronos/models.py:673 aleksis/apps/chronos/models.py:1144 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 +#: aleksis/apps/chronos/models.py:376 aleksis/apps/chronos/models.py:454 +#: aleksis/apps/chronos/models.py:533 aleksis/apps/chronos/models.py:751 +#: aleksis/apps/chronos/models.py:1213 +#: aleksis/apps/chronos/templates/chronos/substitutions.html:48 +msgid "Room" +msgstr "Raum" + +#: aleksis/apps/chronos/models.py:428 aleksis/apps/chronos/models.py:456 msgid "Cancelled?" msgstr "Entfällt?" -#: aleksis/apps/chronos/models.py:458 +#: aleksis/apps/chronos/models.py:430 aleksis/apps/chronos/models.py:458 msgid "Cancelled for teachers?" msgstr "Entfällt für Lehrkräfte?" -#: aleksis/apps/chronos/models.py:461 aleksis/apps/chronos/models.py:770 -#: aleksis/apps/chronos/models.py:813 aleksis/apps/chronos/models.py:1216 +#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:692 +#: aleksis/apps/chronos/models.py:734 aleksis/apps/chronos/models.py:1147 +#: aleksis/apps/chronos/models.py:1357 aleksis/apps/chronos/models.py:461 +#: aleksis/apps/chronos/models.py:770 aleksis/apps/chronos/models.py:813 +#: aleksis/apps/chronos/models.py:1216 msgid "Comment" msgstr "Kommentar" -#: aleksis/apps/chronos/models.py:465 +#: aleksis/apps/chronos/models.py:437 aleksis/apps/chronos/models.py:465 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." -#: aleksis/apps/chronos/models.py:506 +#: aleksis/apps/chronos/models.py:477 aleksis/apps/chronos/models.py:506 msgid "Lesson substitution" msgstr "Vertretung" -#: aleksis/apps/chronos/models.py:507 +#: aleksis/apps/chronos/models.py:478 aleksis/apps/chronos/models.py:507 msgid "Lesson substitutions" msgstr "Vertretungen" -#: aleksis/apps/chronos/models.py:655 +#: aleksis/apps/chronos/models.py:621 aleksis/apps/chronos/models.py:655 msgid "Lesson periods" msgstr "Unterrichtsstunden" -#: aleksis/apps/chronos/models.py:693 -msgid "Timetable widget" -msgstr "Stundenplanwidget" - -#: aleksis/apps/chronos/models.py:694 -msgid "Timetable widgets" -msgstr "Stundenplanwidgets" - +#: aleksis/apps/chronos/models.py:635 aleksis/apps/chronos/models.py:648 #: aleksis/apps/chronos/models.py:708 aleksis/apps/chronos/models.py:726 msgid "Absence reason" -msgstr "Absenzgrund" +msgstr "Abwesenheitsgrund" -#: aleksis/apps/chronos/models.py:709 +#: aleksis/apps/chronos/models.py:636 aleksis/apps/chronos/models.py:709 msgid "Absence reasons" -msgstr "Absenzgründe" +msgstr "Abwesenheitsgründe" -#: aleksis/apps/chronos/models.py:735 aleksis/apps/chronos/models.py:974 -#: aleksis/apps/chronos/models.py:1025 +#: aleksis/apps/chronos/models.py:657 aleksis/apps/chronos/models.py:889 +#: aleksis/apps/chronos/models.py:943 aleksis/apps/chronos/models.py:735 +#: aleksis/apps/chronos/models.py:974 aleksis/apps/chronos/models.py:1025 #: aleksis/apps/chronos/templates/chronos/substitutions.html:46 msgid "Teacher" msgstr "Lehrkraft" -#: aleksis/apps/chronos/models.py:743 +#: aleksis/apps/chronos/models.py:665 aleksis/apps/chronos/models.py:743 msgid "Group" msgstr "Gruppe" +#: aleksis/apps/chronos/models.py:681 aleksis/apps/chronos/models.py:723 #: aleksis/apps/chronos/models.py:759 aleksis/apps/chronos/models.py:802 msgid "Start period" msgstr "Startstunde" +#: aleksis/apps/chronos/models.py:688 aleksis/apps/chronos/models.py:729 #: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:808 msgid "End period" msgstr "Endstunde" -#: aleksis/apps/chronos/models.py:780 +#: aleksis/apps/chronos/models.py:702 aleksis/apps/chronos/models.py:780 msgid "Unknown absence" msgstr "Unbekannte Absenz" -#: aleksis/apps/chronos/models.py:786 +#: aleksis/apps/chronos/models.py:707 aleksis/apps/chronos/models.py:786 msgid "Absence" -msgstr "Absenz" +msgstr "Abwesenheit" -#: aleksis/apps/chronos/models.py:787 +#: aleksis/apps/chronos/models.py:708 aleksis/apps/chronos/models.py:787 msgid "Absences" -msgstr "Fehlstunden" +msgstr "Abwesenheiten" -#: aleksis/apps/chronos/models.py:798 +#: aleksis/apps/chronos/models.py:719 aleksis/apps/chronos/models.py:798 msgid "Date of exam" msgstr "Datum der Klausur" -#: aleksis/apps/chronos/models.py:812 aleksis/apps/chronos/models.py:826 -#: aleksis/apps/chronos/models.py:1059 +#: aleksis/apps/chronos/models.py:733 aleksis/apps/chronos/models.py:746 +#: aleksis/apps/chronos/models.py:977 aleksis/apps/chronos/models.py:812 +#: aleksis/apps/chronos/models.py:826 aleksis/apps/chronos/models.py:1059 msgid "Title" msgstr "Titel" -#: aleksis/apps/chronos/models.py:819 +#: aleksis/apps/chronos/models.py:739 aleksis/apps/chronos/models.py:819 msgid "Exam" msgstr "Klausur" -#: aleksis/apps/chronos/models.py:820 +#: aleksis/apps/chronos/models.py:740 aleksis/apps/chronos/models.py:820 msgid "Exams" msgstr "Klausuren" -#: aleksis/apps/chronos/models.py:829 +#: aleksis/apps/chronos/models.py:749 aleksis/apps/chronos/models.py:829 msgid "Comments" msgstr "Kommentare" -#: aleksis/apps/chronos/models.py:868 +#: aleksis/apps/chronos/models.py:788 aleksis/apps/chronos/models.py:868 msgid "Holiday" msgstr "Ferien" -#: aleksis/apps/chronos/models.py:869 +#: aleksis/apps/chronos/models.py:789 aleksis/apps/chronos/models.py:869 msgid "Holidays" msgstr "Ferien" +#: aleksis/apps/chronos/models.py:803 aleksis/apps/chronos/models.py:879 #: aleksis/apps/chronos/models.py:883 aleksis/apps/chronos/models.py:964 msgid "Supervision area" msgstr "Aufsichtsgebiet" -#: aleksis/apps/chronos/models.py:884 +#: aleksis/apps/chronos/models.py:804 aleksis/apps/chronos/models.py:884 msgid "Supervision areas" msgstr "Aufsichtsgebiete" -#: aleksis/apps/chronos/models.py:901 +#: aleksis/apps/chronos/models.py:816 aleksis/apps/chronos/models.py:901 msgid "Time period after break starts" msgstr "Stunde, nach der die Pause startet" -#: aleksis/apps/chronos/models.py:909 +#: aleksis/apps/chronos/models.py:824 aleksis/apps/chronos/models.py:909 msgid "Time period before break ends" msgstr "Stunde nach der Pause" +#: aleksis/apps/chronos/models.py:864 aleksis/apps/chronos/models.py:883 #: aleksis/apps/chronos/models.py:949 aleksis/apps/chronos/models.py:968 msgid "Break" msgstr "Pause" -#: aleksis/apps/chronos/models.py:950 +#: aleksis/apps/chronos/models.py:865 aleksis/apps/chronos/models.py:950 msgid "Breaks" msgstr "Pausen" +#: aleksis/apps/chronos/models.py:923 aleksis/apps/chronos/models.py:936 +#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:3 #: aleksis/apps/chronos/models.py:1005 aleksis/apps/chronos/models.py:1018 #: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23 #: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15 msgid "Supervision" msgstr "Aufsicht" +#: aleksis/apps/chronos/models.py:924 aleksis/apps/chronos/models.py:1622 #: aleksis/apps/chronos/models.py:1006 msgid "Supervisions" msgstr "Aufsichten" -#: aleksis/apps/chronos/models.py:1014 +#: aleksis/apps/chronos/models.py:932 aleksis/apps/chronos/models.py:1014 msgid "Date" msgstr "Datum" -#: aleksis/apps/chronos/models.py:1048 +#: aleksis/apps/chronos/models.py:966 aleksis/apps/chronos/models.py:1048 msgid "Supervision substitution" msgstr "Aufsichtsvertretung" -#: aleksis/apps/chronos/models.py:1049 +#: aleksis/apps/chronos/models.py:967 aleksis/apps/chronos/models.py:1049 msgid "Supervision substitutions" msgstr "Aufsichtsvertretungen" -#: aleksis/apps/chronos/models.py:1067 +#: aleksis/apps/chronos/models.py:985 aleksis/apps/chronos/models.py:1067 msgid "Start time period" msgstr "Startstunde" -#: aleksis/apps/chronos/models.py:1073 +#: aleksis/apps/chronos/models.py:991 aleksis/apps/chronos/models.py:1073 msgid "End time period" msgstr "Endstunde" -#: aleksis/apps/chronos/models.py:1087 +#: aleksis/apps/chronos/models.py:996 aleksis/apps/chronos/models.py:1332 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:4 +#: aleksis/apps/chronos/models.py:377 aleksis/apps/chronos/models.py:1078 +#: aleksis/apps/chronos/templates/chronos/all.html:45 +msgid "Rooms" +msgstr "Räume" + +#: aleksis/apps/chronos/models.py:1005 aleksis/apps/chronos/models.py:1087 #, python-brace-format msgid "Event {pk}" msgstr "Veranstaltung {pk}" -#: aleksis/apps/chronos/models.py:1172 +#: aleksis/apps/chronos/models.py:1103 aleksis/apps/chronos/models.py:1172 #: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27 msgid "Event" msgstr "Veranstaltung" -#: aleksis/apps/chronos/models.py:1173 +#: aleksis/apps/chronos/models.py:1104 aleksis/apps/chronos/models.py:1173 msgid "Events" msgstr "Veranstaltungen" -#: aleksis/apps/chronos/models.py:1221 +#: aleksis/apps/chronos/models.py:1152 aleksis/apps/chronos/models.py:1221 msgid "Related exam" msgstr "Zugehörige Klausur" -#: aleksis/apps/chronos/models.py:1251 +#: aleksis/apps/chronos/models.py:1181 aleksis/apps/chronos/models.py:1251 msgid "Extra lesson" msgstr "Sonderstunde" -#: aleksis/apps/chronos/models.py:1252 +#: aleksis/apps/chronos/models.py:1182 aleksis/apps/chronos/models.py:1252 msgid "Extra lessons" msgstr "Sonderstunden" -#: aleksis/apps/chronos/models.py:1264 +#: aleksis/apps/chronos/models.py:1194 aleksis/apps/chronos/models.py:1264 msgid "Number of days shown in the plan" msgstr "Anzahl der Tage, die im Plan angezeigt werden" -#: aleksis/apps/chronos/models.py:1268 +#: aleksis/apps/chronos/models.py:1198 aleksis/apps/chronos/models.py:1268 msgid "Show header box" msgstr "Kopfbox anzeigen" +#: aleksis/apps/chronos/models.py:1199 aleksis/apps/chronos/preferences.py:100 #: aleksis/apps/chronos/models.py:1269 aleksis/apps/chronos/preferences.py:61 msgid "The header box shows affected teachers/groups." msgstr "Die Kopfbox zeigt betroffene Lehrkräfte/Gruppen." -#: aleksis/apps/chronos/models.py:1276 +#: aleksis/apps/chronos/models.py:1206 aleksis/apps/chronos/models.py:1276 msgid "Revision which triggered the last update" msgstr "Revision, die die letzte Aktualisierung ausgelöst hat" -#: aleksis/apps/chronos/models.py:1337 +#: aleksis/apps/chronos/models.py:1278 aleksis/apps/chronos/models.py:1337 msgid "Automatic plan" msgstr "Automatischer Plan" -#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/models.py:1279 aleksis/apps/chronos/models.py:1338 msgid "Automatic plans" msgstr "Automatische Pläne" -#: aleksis/apps/chronos/models.py:1352 +#: aleksis/apps/chronos/models.py:1293 aleksis/apps/chronos/models.py:1352 msgid "Can view all room timetables" msgstr "Kann alle Raumstundenpläne sehen" -#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/models.py:1294 aleksis/apps/chronos/models.py:1353 msgid "Can view all group timetables" msgstr "Kann alle Gruppenstundenpläne sehen" -#: aleksis/apps/chronos/models.py:1354 +#: aleksis/apps/chronos/models.py:1295 aleksis/apps/chronos/models.py:1354 msgid "Can view all person timetables" msgstr "Kann alle Personenstundenpläne sehen" -#: aleksis/apps/chronos/models.py:1355 +#: aleksis/apps/chronos/models.py:1296 aleksis/apps/chronos/models.py:1355 msgid "Can view timetable overview" msgstr "Kann Stundenplanübersicht sehen" -#: aleksis/apps/chronos/models.py:1356 +#: aleksis/apps/chronos/models.py:1297 aleksis/apps/chronos/models.py:1356 msgid "Can view all lessons per day" msgstr "Kann alle Tagesstunden sehen" +#: aleksis/apps/chronos/models.py:1298 +msgid "Can view all supervisions per day" +msgstr "Kann alle Tagesaufsichten sehen" + +#: aleksis/apps/chronos/models.py:1313 +msgid "Start slot number" +msgstr "Startzeitfenster-Nummer" + +#: aleksis/apps/chronos/models.py:1316 +msgid "End slot number" +msgstr "Endzeitfenster-Nummer" + +#: aleksis/apps/chronos/models.py:1320 +msgid "Course" +msgstr "Kurs" + +#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 +msgid "Cancelled" +msgstr "Entfall" + +#: aleksis/apps/chronos/models.py:1401 aleksis/apps/chronos/models.py:1413 +#: aleksis/apps/chronos/models.py:1425 +msgid "{} (instead of {})" +msgstr "{} (statt {})" + +#: aleksis/apps/chronos/models.py:1614 +msgid "Lesson Event" +msgstr "Unterrichtsstunde" + +#: aleksis/apps/chronos/models.py:1615 +msgid "Lesson Events" +msgstr "Unterrichtsstunden" + +#: aleksis/apps/chronos/models.py:1630 +msgid "Supervision: {}" +msgstr "Aufsicht: {}" + +#: aleksis/apps/chronos/preferences.py:21 aleksis/apps/chronos/menus.py:6 +#: aleksis/apps/chronos/preferences.py:10 +msgid "Timetables" +msgstr "Stundenpläne" + +#: aleksis/apps/chronos/preferences.py:29 #: aleksis/apps/chronos/preferences.py:18 msgid "Use parent groups in timetable views" msgstr "Elterngruppen in Stundenplanansichten benutzen" -#: aleksis/apps/chronos/preferences.py:20 -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." +#: aleksis/apps/chronos/preferences.py:31 +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:42 #: aleksis/apps/chronos/preferences.py:31 msgid "Shorten groups in timetable views" msgstr "Gruppen in Stundenplanansichten kürzen" +#: aleksis/apps/chronos/preferences.py:43 #: aleksis/apps/chronos/preferences.py:32 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." +#: aleksis/apps/chronos/preferences.py:51 #: aleksis/apps/chronos/preferences.py:40 msgid "Limit of groups for shortening of groups" msgstr "Anzahl der Gruppen, ab der gekürzt wird" -#: aleksis/apps/chronos/preferences.py:42 -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." +#: aleksis/apps/chronos/preferences.py:53 +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." + +#: aleksis/apps/chronos/preferences.py:65 +msgid "Relevant days for substitution plans" +msgstr "Relevante Tage für Vertretungspläne" +#: aleksis/apps/chronos/preferences.py:82 +msgid "Time when substitution plans switch to the next day" +msgstr "Zeit zu der Vertretungspläne zum nächsten Tag wechseln" + +#: aleksis/apps/chronos/preferences.py:91 #: aleksis/apps/chronos/preferences.py:52 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:99 #: aleksis/apps/chronos/preferences.py:60 msgid "Show header box in substitution views" msgstr "Kopfbox in Vertretungsplänen anzeigen" +#: aleksis/apps/chronos/preferences.py:109 #: aleksis/apps/chronos/preferences.py:70 -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:118 #: aleksis/apps/chronos/preferences.py:79 -msgid "How many days in advance users should be notified about timetable changes?" -msgstr "Wie viele Tage im Voraus sollen Benutzer über Stundenplanänderungen benachrichtigt werden?" +msgid "" +"How many days in advance users should be notified about timetable changes?" +msgstr "" +"Wie viele Tage im Voraus sollen Benutzer über Stundenplanänderungen " +"benachrichtigt werden?" +#: aleksis/apps/chronos/preferences.py:126 #: aleksis/apps/chronos/preferences.py:87 msgid "Time for sending notifications about timetable changes" msgstr "Zeitpunkt zum Senden von Benachrichtigungen über Stundenplanänderungen" +#: aleksis/apps/chronos/preferences.py:129 #: aleksis/apps/chronos/preferences.py:90 -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." +#: aleksis/apps/chronos/preferences.py:140 +#: aleksis/apps/chronos/preferences.py:148 #: aleksis/apps/chronos/preferences.py:101 #: aleksis/apps/chronos/preferences.py:109 msgid "Send notifications for current timetable changes" msgstr "Benachrichtigungen für aktuelle Stundenplanänderungen verschicken" -#: aleksis/apps/chronos/tables.py:41 -msgid "Substitution" -msgstr "Vertretung" - -#: aleksis/apps/chronos/tables.py:43 -msgid "Manage substitution" -msgstr "Vertretung verwalten" - -#: aleksis/apps/chronos/templates/chronos/all.html:25 -msgid "No teachers timetables available." -msgstr "Keine Stundenpläne von Lehrkräften vorhanden." - -#: aleksis/apps/chronos/templates/chronos/all.html:39 -msgid "No group timetables available." -msgstr "Keine Gruppen-Stundenpläne verfügbar." - -#: aleksis/apps/chronos/templates/chronos/all.html:53 -msgid "No room timetables available." -msgstr "Keine Raum-Stundenpläne verfügbar." - -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:11 -msgid "Edit substitution." -msgstr "Vertretung bearbeiten." - -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:12 -msgid "Edit substitution" -msgstr "Vertretung bearbeiten" +#: aleksis/apps/chronos/preferences.py:158 +msgid "Group types to show in timetables" +msgstr "In Stundenplänen anzuzeigende Gruppentypen" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:25 -msgid "Delete" -msgstr "Löschen" +#: aleksis/apps/chronos/preferences.py:159 +msgid "If you leave it empty, all groups will be shown." +msgstr "Wenn Sie das Feld frei lassen, werden alle Gruppen angezeigt." -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19 -#: aleksis/apps/chronos/templates/chronos/timetable.html:50 -msgid "SMART PLAN" -msgstr "SMART PLAN" +#: aleksis/apps/chronos/preferences.py:169 +msgid "Lesson calendar feed color" +msgstr "Unterrichtsstunden-Kalenderfarbe" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22 -msgid "Show week timetable for" -msgstr "Wochenplan anzeigen für" +#: aleksis/apps/chronos/preferences.py:181 +msgid "Supervision calendar feed color" +msgstr "Aufsichts-Kalenderfarbe" #: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 msgid "Absent teachers" @@ -558,101 +619,57 @@ msgstr "Betroffene Lehrkräfte" msgid "Affected groups" msgstr "Betroffene Gruppen" -#: aleksis/apps/chronos/templates/chronos/partials/lesson.html:27 -msgid "Cancelled due to an event" -msgstr "Fällt wg. einer Veranstaltung aus" +#: aleksis/apps/chronos/templates/chronos/partials/subs/period.html:12 +msgid "all day" +msgstr "ganzer Tag" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 -msgid "Cancelled" -msgstr "Entfall" - -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6 -msgid "Cancelled for teachers" -msgstr "Entfall für Lehrkräfte" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 +msgid "Print: Substitutions" +msgstr "Druckansicht: Vertretungen" -#: aleksis/apps/chronos/templates/chronos/partials/today.html:2 -msgid "Today" -msgstr "Heute" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 +#: aleksis/apps/chronos/menus.py:49 +#: aleksis/apps/chronos/templates/chronos/substitutions.html:11 +#: aleksis/apps/chronos/templates/chronos/substitutions.html:17 +msgid "Substitutions" +msgstr "Vertretungen" -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36 -msgid "CW" -msgstr "KW" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:27 +msgid "Time" +msgstr "Zeit" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:49 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 +#: aleksis/apps/chronos/templates/chronos/substitutions.html:49 msgid "Notes" msgstr "Notizen" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:57 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 +#: aleksis/apps/chronos/templates/chronos/substitutions.html:57 msgid "No substitutions available." msgstr "Keine Vertretungen vorhanden." -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 -msgid "Print: Substitutions" -msgstr "Druckansicht: Vertretungen" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/timetable.html:24 -#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11 -#: aleksis/apps/chronos/util/notifications.py:206 -msgid "Timetable" -msgstr "Stundenplan" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:29 -msgid "Group teachers:" -msgstr "Gruppenlehrkräfte:" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:55 -msgid "Show regular timetable" -msgstr "Regulären Plan anzeigen" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:63 -#: aleksis/apps/chronos/templates/chronos/timetable.html:84 -msgid "View class register of this week" -msgstr "Klassenbuch dieser Woche anzeigen" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:76 -msgid "Show SMART PLAN" -msgstr "SMART PLAN anzeigen" - -#: aleksis/apps/chronos/templates/chronos/widget.html:8 -#, python-format -msgid "" -"\n" -" My timetable for %(day)s\n" -" " -msgstr "" -"\n" -" Mein Stundenplan für %(day)s\n" -" " - -#: aleksis/apps/chronos/templates/chronos/widget.html:18 -msgid "" -"\n" -" There is no timetable linked to your person.\n" -" " -msgstr "" -"\n" -" Es gibt keine Stundenplan, der Ihrer Person zugeordnet ist.\n" -" " - -#: aleksis/apps/chronos/templates/chronos/widget.html:27 -msgid "Go to smart plan" -msgstr "SMART PLAN anzeigen" +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:2 +msgid "Areas" +msgstr "Bereiche" +#: aleksis/apps/chronos/util/notifications.py:48 #: aleksis/apps/chronos/util/notifications.py:50 #, 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." +#: aleksis/apps/chronos/util/notifications.py:55 #: aleksis/apps/chronos/util/notifications.py:57 #, 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." +#: aleksis/apps/chronos/util/notifications.py:64 #: aleksis/apps/chronos/util/notifications.py:66 #, python-brace-format msgid "The teacher {old} is substituted by {new}." @@ -660,77 +677,254 @@ msgid_plural "The teachers {old} are substituted by {new}." msgstr[0] "Die Lehrkraft {old} wird von {new} vertreten." msgstr[1] "Die Lehrkräfte {old} werden von {new} vertreten." +#: aleksis/apps/chronos/util/notifications.py:76 #: aleksis/apps/chronos/util/notifications.py:78 #, python-brace-format msgid "The subject is changed to {subject}." msgstr "Das Fach ist zu {subject} geändert." +#: aleksis/apps/chronos/util/notifications.py:82 #: aleksis/apps/chronos/util/notifications.py:84 #, python-brace-format msgid "The lesson is moved from {old} to {new}." msgstr "Die Stunde wurde von {old} nach {new} verschoben." +#: aleksis/apps/chronos/util/notifications.py:91 #: aleksis/apps/chronos/util/notifications.py:93 #, python-brace-format msgid "There is an additional comment: {comment}." msgstr "Es gibt einen zusätzlichen Hinweis: {comment}." +#: aleksis/apps/chronos/util/notifications.py:99 #: aleksis/apps/chronos/util/notifications.py:101 #, 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:" +#: aleksis/apps/chronos/util/notifications.py:112 #: aleksis/apps/chronos/util/notifications.py:114 #, 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:" +#: aleksis/apps/chronos/util/notifications.py:123 +#: aleksis/apps/chronos/util/notifications.py:143 #: aleksis/apps/chronos/util/notifications.py:125 #: aleksis/apps/chronos/util/notifications.py:145 #, python-brace-format msgid "Groups: {groups}" msgstr "Gruppen: {groups}" +#: aleksis/apps/chronos/util/notifications.py:125 +#: aleksis/apps/chronos/util/notifications.py:147 #: aleksis/apps/chronos/util/notifications.py:127 #: aleksis/apps/chronos/util/notifications.py:149 #, python-brace-format msgid "Teachers: {teachers}" msgstr "Lehrkräfte: {teachers}" +#: aleksis/apps/chronos/util/notifications.py:128 #: aleksis/apps/chronos/util/notifications.py:130 #, python-brace-format msgid "Rooms: {rooms}" msgstr "Räume: {rooms}" +#: aleksis/apps/chronos/util/notifications.py:135 #: aleksis/apps/chronos/util/notifications.py:137 #, python-brace-format msgid "There is an extra lesson on {date} in the {period}. period:" msgstr "Es gibt eine Zusatzstunde am {date} in der {period}. Stunde:" +#: aleksis/apps/chronos/util/notifications.py:145 #: aleksis/apps/chronos/util/notifications.py:147 #, python-brace-format msgid "Subject: {subject}" msgstr "Fach: {subject}" +#: aleksis/apps/chronos/util/notifications.py:149 #: aleksis/apps/chronos/util/notifications.py:151 #, python-brace-format msgid "Room: {room}" msgstr "Raum: {room}" +#: aleksis/apps/chronos/util/notifications.py:151 #: aleksis/apps/chronos/util/notifications.py:153 #, python-brace-format msgid "Comment: {comment}." msgstr "Kommentar: {comment}." +#: aleksis/apps/chronos/util/notifications.py:154 #: aleksis/apps/chronos/util/notifications.py:156 #, 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." + +#: aleksis/apps/chronos/util/notifications.py:204 +#: aleksis/apps/chronos/templates/chronos/timetable.html:11 +#: aleksis/apps/chronos/templates/chronos/timetable.html:24 +#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11 +#: aleksis/apps/chronos/util/notifications.py:206 +msgid "Timetable" +msgstr "Stundenplan" +#: aleksis/apps/chronos/util/notifications.py:205 #: aleksis/apps/chronos/util/notifications.py:207 msgid "There are current changes to your timetable." msgstr "Es gibt aktuelle Änderungen in Ihrem Stundenplan." +#: aleksis/apps/chronos/form_extensions.py:7 +msgid "Options for timetables" +msgstr "Einstellungen für Stundenpläne" + +#: aleksis/apps/chronos/form_extensions.py:8 +msgid "Optional data for timetables" +msgstr "Optionale Daten für Stundenpläne" + +#: aleksis/apps/chronos/menus.py:16 +#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11 +#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18 +msgid "My timetable" +msgstr "Mein Plan" + +#: aleksis/apps/chronos/menus.py:27 +#: aleksis/apps/chronos/templates/chronos/all.html:11 +#: aleksis/apps/chronos/templates/chronos/all.html:12 +msgid "All timetables" +msgstr "Alle Stundenpläne" + +#: aleksis/apps/chronos/menus.py:38 +msgid "Daily lessons" +msgstr "Tagesstunden" + +#: aleksis/apps/chronos/model_extensions.py:142 +msgid "Show announcement in timetable views?" +msgstr "Ankündigungen in Stundenplanansichten anzeigen?" + +#: aleksis/apps/chronos/models.py:374 +msgid "Can view room timetable" +msgstr "Kann Raum-Stundenplan sehen" + +#: aleksis/apps/chronos/models.py:693 +msgid "Timetable widget" +msgstr "Stundenplanwidget" + +#: aleksis/apps/chronos/models.py:694 +msgid "Timetable widgets" +msgstr "Stundenplanwidgets" + +#: aleksis/apps/chronos/tables.py:41 +msgid "Substitution" +msgstr "Vertretung" + +#: aleksis/apps/chronos/tables.py:43 +msgid "Manage substitution" +msgstr "Vertretung verwalten" + +#: aleksis/apps/chronos/templates/chronos/all.html:25 +msgid "No teachers timetables available." +msgstr "Keine Stundenpläne von Lehrkräften vorhanden." + +#: aleksis/apps/chronos/templates/chronos/all.html:39 +msgid "No group timetables available." +msgstr "Keine Gruppen-Stundenpläne verfügbar." + +#: aleksis/apps/chronos/templates/chronos/all.html:53 +msgid "No room timetables available." +msgstr "Keine Raum-Stundenpläne verfügbar." + +#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:11 +msgid "Edit substitution." +msgstr "Vertretung bearbeiten." + +#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:12 +msgid "Edit substitution" +msgstr "Vertretung bearbeiten" + +#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:25 +msgid "Delete" +msgstr "Löschen" + +#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19 +#: aleksis/apps/chronos/templates/chronos/timetable.html:50 +msgid "SMART PLAN" +msgstr "SMART PLAN" + +#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22 +msgid "Show week timetable for" +msgstr "Wochenplan anzeigen für" + +#: aleksis/apps/chronos/templates/chronos/partials/lesson.html:27 +msgid "Cancelled due to an event" +msgstr "Fällt wg. einer Veranstaltung aus" + +#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6 +msgid "Cancelled for teachers" +msgstr "Entfall für Lehrkräfte" + +#: aleksis/apps/chronos/templates/chronos/partials/today.html:2 +msgid "Today" +msgstr "Heute" + +#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14 +#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25 +#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36 +msgid "CW" +msgstr "KW" + +#: aleksis/apps/chronos/templates/chronos/timetable.html:29 +msgid "Group teachers:" +msgstr "Gruppenlehrkräfte:" + +#: aleksis/apps/chronos/templates/chronos/timetable.html:55 +msgid "Show regular timetable" +msgstr "Regulären Plan anzeigen" + +#: aleksis/apps/chronos/templates/chronos/timetable.html:63 +#: aleksis/apps/chronos/templates/chronos/timetable.html:84 +msgid "View class register of this week" +msgstr "Klassenbuch dieser Woche anzeigen" + +#: aleksis/apps/chronos/templates/chronos/timetable.html:76 +msgid "Show SMART PLAN" +msgstr "SMART PLAN anzeigen" + +#: aleksis/apps/chronos/templates/chronos/widget.html:8 +#, python-format +msgid "" +"\n" +" My timetable for %(day)s\n" +" " +msgstr "" +"\n" +" Mein Stundenplan für %(day)s\n" +" " + +#: aleksis/apps/chronos/templates/chronos/widget.html:18 +msgid "" +"\n" +" There is no timetable linked to your person.\n" +" " +msgstr "" +"\n" +" Es gibt keine Stundenplan, der Ihrer Person zugeordnet ist.\n" +" " + +#: aleksis/apps/chronos/templates/chronos/widget.html:27 +msgid "Go to smart plan" +msgstr "SMART PLAN anzeigen" + #: aleksis/apps/chronos/views.py:270 msgid "The substitution has been saved." msgstr "Die Vertretung wurde gespeichert." @@ -739,6 +933,22 @@ msgstr "Die Vertretung wurde gespeichert." msgid "The substitution has been deleted." msgstr "Die Vertretung wurde gelöscht." +#: aleksis/apps/chronos/preferences.py:20 +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." + +#: aleksis/apps/chronos/preferences.py:42 +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" @@ -811,8 +1021,12 @@ msgstr "Die Vertretung wurde gelöscht." #~ 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" @@ -841,9 +1055,6 @@ msgstr "Die Vertretung wurde gelöscht." #~ msgid "Select" #~ msgstr "Auswählen" -#~ msgid "Times" -#~ msgstr "Zeiten" - #~ msgid "Calendar Week" #~ msgstr "Kalenderwoche" @@ -855,3 +1066,6 @@ msgstr "Die Vertretung wurde gelöscht." #~ msgid "AlekSIS - Chronos (Timetables)" #~ msgstr "AlekSIS - Chronos (Stundenpläne)" + +#~ msgid "Times" +#~ msgstr "Zeiten" diff --git a/aleksis/apps/chronos/locale/fr/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/fr/LC_MESSAGES/django.po index 2de6a0f73e58b9d49c4178a9947ad53e61475c72..0efbbcbc0bddc2a0dfd0fc65f2f487e69d5c6532 100644 --- a/aleksis/apps/chronos/locale/fr/LC_MESSAGES/django.po +++ b/aleksis/apps/chronos/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-21 11:32+0200\n" +"POT-Creation-Date: 2024-08-18 14:23+0200\n" "PO-Revision-Date: 2021-06-16 11:59+0000\n" "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n" "Language-Team: French <https://translate.edugit.org/projects/aleksis/aleksis-app-chronos/fr/>\n" @@ -18,76 +18,38 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.4\n" -#: aleksis/apps/chronos/form_extensions.py:7 -msgid "Options for timetables" -msgstr "" - -#: aleksis/apps/chronos/form_extensions.py:8 -msgid "Optional data for timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:6 aleksis/apps/chronos/preferences.py:10 -msgid "Timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:16 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18 -msgid "My timetable" -msgstr "" - -#: aleksis/apps/chronos/menus.py:27 -#: aleksis/apps/chronos/templates/chronos/all.html:11 -#: aleksis/apps/chronos/templates/chronos/all.html:12 -msgid "All timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:38 -msgid "Daily lessons" -msgstr "" - -#: aleksis/apps/chronos/menus.py:49 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:11 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:17 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 -msgid "Substitutions" -msgstr "" - #: aleksis/apps/chronos/mixins.py:25 msgid "Linked validity range" msgstr "" -#: aleksis/apps/chronos/model_extensions.py:142 -msgid "Show announcement in timetable views?" -msgstr "" - -#: aleksis/apps/chronos/model_extensions.py:151 +#: aleksis/apps/chronos/model_extensions.py:145 msgid "Can view group timetable" msgstr "" -#: aleksis/apps/chronos/model_extensions.py:155 +#: aleksis/apps/chronos/model_extensions.py:149 msgid "Can view person timetable" msgstr "" -#: aleksis/apps/chronos/models.py:86 +#: aleksis/apps/chronos/models.py:87 msgid "School term" msgstr "" -#: aleksis/apps/chronos/models.py:89 aleksis/apps/chronos/models.py:699 +#: aleksis/apps/chronos/models.py:90 aleksis/apps/chronos/models.py:626 +#: aleksis/apps/chronos/models.py:1310 msgid "Name" msgstr "" -#: aleksis/apps/chronos/models.py:91 aleksis/apps/chronos/models.py:754 -#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:1061 +#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:676 +#: aleksis/apps/chronos/models.py:747 aleksis/apps/chronos/models.py:979 msgid "Start date" msgstr "" -#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:755 -#: aleksis/apps/chronos/models.py:828 aleksis/apps/chronos/models.py:1062 +#: aleksis/apps/chronos/models.py:93 aleksis/apps/chronos/models.py:677 +#: aleksis/apps/chronos/models.py:748 aleksis/apps/chronos/models.py:980 msgid "End date" msgstr "" -#: aleksis/apps/chronos/models.py:111 +#: aleksis/apps/chronos/models.py:112 msgid "The start date must be earlier than the end date." msgstr "" @@ -107,441 +69,455 @@ msgstr "" msgid "Validity ranges" msgstr "" -#: aleksis/apps/chronos/models.py:150 +#: aleksis/apps/chronos/models.py:149 msgid "Week day" msgstr "" -#: aleksis/apps/chronos/models.py:152 +#: aleksis/apps/chronos/models.py:151 msgid "Number of period" msgstr "" -#: aleksis/apps/chronos/models.py:154 +#: aleksis/apps/chronos/models.py:153 msgid "Start time" msgstr "" -#: aleksis/apps/chronos/models.py:155 +#: aleksis/apps/chronos/models.py:154 msgid "End time" msgstr "" -#: aleksis/apps/chronos/models.py:338 aleksis/apps/chronos/models.py:525 -#: aleksis/apps/chronos/models.py:1191 +#: aleksis/apps/chronos/models.py:324 aleksis/apps/chronos/models.py:496 +#: aleksis/apps/chronos/models.py:1122 msgid "Time period" msgstr "" -#: aleksis/apps/chronos/models.py:339 +#: aleksis/apps/chronos/models.py:325 msgid "Time periods" msgstr "" -#: aleksis/apps/chronos/models.py:343 aleksis/apps/chronos/models.py:364 -#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:873 -#: aleksis/apps/chronos/models.py:895 +#: aleksis/apps/chronos/models.py:329 aleksis/apps/chronos/models.py:625 +#: aleksis/apps/chronos/models.py:793 aleksis/apps/chronos/models.py:810 msgid "Short name" msgstr "" -#: aleksis/apps/chronos/models.py:344 aleksis/apps/chronos/models.py:365 -#: aleksis/apps/chronos/models.py:874 aleksis/apps/chronos/models.py:896 +#: aleksis/apps/chronos/models.py:330 aleksis/apps/chronos/models.py:794 +#: aleksis/apps/chronos/models.py:811 msgid "Long name" msgstr "" -#: aleksis/apps/chronos/models.py:346 +#: aleksis/apps/chronos/models.py:332 msgid "Foreground colour" msgstr "" -#: aleksis/apps/chronos/models.py:347 +#: aleksis/apps/chronos/models.py:333 msgid "Background colour" msgstr "" -#: aleksis/apps/chronos/models.py:354 aleksis/apps/chronos/models.py:390 -#: aleksis/apps/chronos/models.py:446 aleksis/apps/chronos/models.py:1198 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:47 +#: aleksis/apps/chronos/models.py:340 aleksis/apps/chronos/models.py:349 +#: aleksis/apps/chronos/models.py:416 aleksis/apps/chronos/models.py:1129 +#: aleksis/apps/chronos/models.py:1345 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:2 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29 msgid "Subject" msgstr "Sujet" -#: aleksis/apps/chronos/models.py:355 +#: aleksis/apps/chronos/models.py:341 #, fuzzy #| msgid "Subject" msgid "Subjects" msgstr "Sujet" -#: aleksis/apps/chronos/models.py:374 -msgid "Can view room timetable" -msgstr "" - -#: aleksis/apps/chronos/models.py:376 aleksis/apps/chronos/models.py:454 -#: aleksis/apps/chronos/models.py:533 aleksis/apps/chronos/models.py:751 -#: aleksis/apps/chronos/models.py:1213 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:48 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 -msgid "Room" -msgstr "Salle" - -#: aleksis/apps/chronos/models.py:377 aleksis/apps/chronos/models.py:1078 -#: aleksis/apps/chronos/templates/chronos/all.html:45 -msgid "Rooms" -msgstr "" - -#: aleksis/apps/chronos/models.py:393 aleksis/apps/chronos/models.py:452 -#: aleksis/apps/chronos/models.py:1080 aleksis/apps/chronos/models.py:1206 -#: aleksis/apps/chronos/tables.py:35 -#: aleksis/apps/chronos/templates/chronos/all.html:17 +#: aleksis/apps/chronos/models.py:352 aleksis/apps/chronos/models.py:422 +#: aleksis/apps/chronos/models.py:998 aleksis/apps/chronos/models.py:1137 +#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:3 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28 +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:1 msgid "Teachers" msgstr "Profs" -#: aleksis/apps/chronos/models.py:399 +#: aleksis/apps/chronos/models.py:358 msgid "Periods" msgstr "" -#: aleksis/apps/chronos/models.py:401 aleksis/apps/chronos/models.py:1077 -#: aleksis/apps/chronos/models.py:1201 aleksis/apps/chronos/tables.py:34 -#: aleksis/apps/chronos/templates/chronos/all.html:31 +#: aleksis/apps/chronos/models.py:360 aleksis/apps/chronos/models.py:995 +#: aleksis/apps/chronos/models.py:1132 aleksis/apps/chronos/models.py:1326 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:1 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:26 msgid "Groups" msgstr "" -#: aleksis/apps/chronos/models.py:424 aleksis/apps/chronos/models.py:519 -#: aleksis/apps/chronos/models.py:795 +#: aleksis/apps/chronos/models.py:394 aleksis/apps/chronos/models.py:490 +#: aleksis/apps/chronos/models.py:716 aleksis/apps/chronos/models.py:1430 +#: aleksis/apps/chronos/models.py:1454 msgid "Lesson" msgstr "Cours" -#: aleksis/apps/chronos/models.py:425 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19 +#: aleksis/apps/chronos/models.py:395 aleksis/apps/chronos/models.py:1306 msgid "Lessons" msgstr "" -#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:1185 +#: aleksis/apps/chronos/models.py:403 aleksis/apps/chronos/models.py:1116 msgid "Week" msgstr "" -#: aleksis/apps/chronos/models.py:434 aleksis/apps/chronos/models.py:1186 +#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:1117 msgid "Year" msgstr "" -#: aleksis/apps/chronos/models.py:437 aleksis/apps/chronos/models.py:654 +#: aleksis/apps/chronos/models.py:407 aleksis/apps/chronos/models.py:620 msgid "Lesson period" msgstr "" -#: aleksis/apps/chronos/models.py:456 +#: aleksis/apps/chronos/models.py:425 aleksis/apps/chronos/models.py:504 +#: aleksis/apps/chronos/models.py:673 aleksis/apps/chronos/models.py:1144 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 +msgid "Room" +msgstr "Salle" + +#: aleksis/apps/chronos/models.py:428 msgid "Cancelled?" msgstr "" -#: aleksis/apps/chronos/models.py:458 +#: aleksis/apps/chronos/models.py:430 msgid "Cancelled for teachers?" msgstr "" -#: aleksis/apps/chronos/models.py:461 aleksis/apps/chronos/models.py:770 -#: aleksis/apps/chronos/models.py:813 aleksis/apps/chronos/models.py:1216 +#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:692 +#: aleksis/apps/chronos/models.py:734 aleksis/apps/chronos/models.py:1147 +#: aleksis/apps/chronos/models.py:1357 msgid "Comment" msgstr "" -#: aleksis/apps/chronos/models.py:465 +#: aleksis/apps/chronos/models.py:437 msgid "Lessons can only be either substituted or cancelled." msgstr "" -#: aleksis/apps/chronos/models.py:506 +#: aleksis/apps/chronos/models.py:477 msgid "Lesson substitution" msgstr "" -#: aleksis/apps/chronos/models.py:507 +#: aleksis/apps/chronos/models.py:478 msgid "Lesson substitutions" msgstr "" -#: aleksis/apps/chronos/models.py:655 +#: aleksis/apps/chronos/models.py:621 msgid "Lesson periods" msgstr "" -#: aleksis/apps/chronos/models.py:693 -msgid "Timetable widget" -msgstr "" - -#: aleksis/apps/chronos/models.py:694 -msgid "Timetable widgets" -msgstr "" - -#: aleksis/apps/chronos/models.py:708 aleksis/apps/chronos/models.py:726 +#: aleksis/apps/chronos/models.py:635 aleksis/apps/chronos/models.py:648 msgid "Absence reason" msgstr "" -#: aleksis/apps/chronos/models.py:709 +#: aleksis/apps/chronos/models.py:636 msgid "Absence reasons" msgstr "" -#: aleksis/apps/chronos/models.py:735 aleksis/apps/chronos/models.py:974 -#: aleksis/apps/chronos/models.py:1025 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:46 +#: aleksis/apps/chronos/models.py:657 aleksis/apps/chronos/models.py:889 +#: aleksis/apps/chronos/models.py:943 msgid "Teacher" msgstr "prof" -#: aleksis/apps/chronos/models.py:743 +#: aleksis/apps/chronos/models.py:665 msgid "Group" msgstr "groupe" -#: aleksis/apps/chronos/models.py:759 aleksis/apps/chronos/models.py:802 +#: aleksis/apps/chronos/models.py:681 aleksis/apps/chronos/models.py:723 msgid "Start period" msgstr "" -#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:808 +#: aleksis/apps/chronos/models.py:688 aleksis/apps/chronos/models.py:729 msgid "End period" msgstr "" -#: aleksis/apps/chronos/models.py:780 +#: aleksis/apps/chronos/models.py:702 msgid "Unknown absence" msgstr "" -#: aleksis/apps/chronos/models.py:786 +#: aleksis/apps/chronos/models.py:707 msgid "Absence" msgstr "" -#: aleksis/apps/chronos/models.py:787 +#: aleksis/apps/chronos/models.py:708 msgid "Absences" msgstr "Absences" -#: aleksis/apps/chronos/models.py:798 +#: aleksis/apps/chronos/models.py:719 msgid "Date of exam" msgstr "" -#: aleksis/apps/chronos/models.py:812 aleksis/apps/chronos/models.py:826 -#: aleksis/apps/chronos/models.py:1059 +#: aleksis/apps/chronos/models.py:733 aleksis/apps/chronos/models.py:746 +#: aleksis/apps/chronos/models.py:977 msgid "Title" msgstr "" -#: aleksis/apps/chronos/models.py:819 +#: aleksis/apps/chronos/models.py:739 msgid "Exam" msgstr "" -#: aleksis/apps/chronos/models.py:820 +#: aleksis/apps/chronos/models.py:740 msgid "Exams" msgstr "" -#: aleksis/apps/chronos/models.py:829 +#: aleksis/apps/chronos/models.py:749 msgid "Comments" msgstr "" -#: aleksis/apps/chronos/models.py:868 +#: aleksis/apps/chronos/models.py:788 msgid "Holiday" msgstr "" -#: aleksis/apps/chronos/models.py:869 +#: aleksis/apps/chronos/models.py:789 msgid "Holidays" msgstr "" -#: aleksis/apps/chronos/models.py:883 aleksis/apps/chronos/models.py:964 +#: aleksis/apps/chronos/models.py:803 aleksis/apps/chronos/models.py:879 msgid "Supervision area" msgstr "" -#: aleksis/apps/chronos/models.py:884 +#: aleksis/apps/chronos/models.py:804 msgid "Supervision areas" msgstr "" -#: aleksis/apps/chronos/models.py:901 +#: aleksis/apps/chronos/models.py:816 msgid "Time period after break starts" msgstr "" -#: aleksis/apps/chronos/models.py:909 +#: aleksis/apps/chronos/models.py:824 msgid "Time period before break ends" msgstr "" -#: aleksis/apps/chronos/models.py:949 aleksis/apps/chronos/models.py:968 +#: aleksis/apps/chronos/models.py:864 aleksis/apps/chronos/models.py:883 msgid "Break" msgstr "" -#: aleksis/apps/chronos/models.py:950 +#: aleksis/apps/chronos/models.py:865 msgid "Breaks" msgstr "" -#: aleksis/apps/chronos/models.py:1005 aleksis/apps/chronos/models.py:1018 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23 -#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15 +#: aleksis/apps/chronos/models.py:923 aleksis/apps/chronos/models.py:936 +#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:3 msgid "Supervision" msgstr "" -#: aleksis/apps/chronos/models.py:1006 +#: aleksis/apps/chronos/models.py:924 aleksis/apps/chronos/models.py:1622 msgid "Supervisions" msgstr "" -#: aleksis/apps/chronos/models.py:1014 +#: aleksis/apps/chronos/models.py:932 msgid "Date" msgstr "Date" -#: aleksis/apps/chronos/models.py:1048 +#: aleksis/apps/chronos/models.py:966 msgid "Supervision substitution" msgstr "" -#: aleksis/apps/chronos/models.py:1049 +#: aleksis/apps/chronos/models.py:967 msgid "Supervision substitutions" msgstr "" -#: aleksis/apps/chronos/models.py:1067 +#: aleksis/apps/chronos/models.py:985 msgid "Start time period" msgstr "" -#: aleksis/apps/chronos/models.py:1073 +#: aleksis/apps/chronos/models.py:991 msgid "End time period" msgstr "" -#: aleksis/apps/chronos/models.py:1087 +#: aleksis/apps/chronos/models.py:996 aleksis/apps/chronos/models.py:1332 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:4 +msgid "Rooms" +msgstr "" + +#: aleksis/apps/chronos/models.py:1005 #, python-brace-format msgid "Event {pk}" msgstr "" -#: aleksis/apps/chronos/models.py:1172 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27 +#: aleksis/apps/chronos/models.py:1103 msgid "Event" msgstr "" -#: aleksis/apps/chronos/models.py:1173 +#: aleksis/apps/chronos/models.py:1104 msgid "Events" msgstr "" -#: aleksis/apps/chronos/models.py:1221 +#: aleksis/apps/chronos/models.py:1152 msgid "Related exam" msgstr "" -#: aleksis/apps/chronos/models.py:1251 +#: aleksis/apps/chronos/models.py:1181 msgid "Extra lesson" msgstr "" -#: aleksis/apps/chronos/models.py:1252 +#: aleksis/apps/chronos/models.py:1182 msgid "Extra lessons" msgstr "" -#: aleksis/apps/chronos/models.py:1264 +#: aleksis/apps/chronos/models.py:1194 msgid "Number of days shown in the plan" msgstr "" -#: aleksis/apps/chronos/models.py:1268 +#: aleksis/apps/chronos/models.py:1198 msgid "Show header box" msgstr "" -#: aleksis/apps/chronos/models.py:1269 aleksis/apps/chronos/preferences.py:61 +#: aleksis/apps/chronos/models.py:1199 aleksis/apps/chronos/preferences.py:100 msgid "The header box shows affected teachers/groups." msgstr "" -#: aleksis/apps/chronos/models.py:1276 +#: aleksis/apps/chronos/models.py:1206 msgid "Revision which triggered the last update" msgstr "" -#: aleksis/apps/chronos/models.py:1337 +#: aleksis/apps/chronos/models.py:1278 msgid "Automatic plan" msgstr "" -#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/models.py:1279 msgid "Automatic plans" msgstr "" -#: aleksis/apps/chronos/models.py:1352 +#: aleksis/apps/chronos/models.py:1293 msgid "Can view all room timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/models.py:1294 msgid "Can view all group timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1354 +#: aleksis/apps/chronos/models.py:1295 msgid "Can view all person timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1355 +#: aleksis/apps/chronos/models.py:1296 msgid "Can view timetable overview" msgstr "" -#: aleksis/apps/chronos/models.py:1356 +#: aleksis/apps/chronos/models.py:1297 msgid "Can view all lessons per day" msgstr "" -#: aleksis/apps/chronos/preferences.py:18 -msgid "Use parent groups in timetable views" +#: aleksis/apps/chronos/models.py:1298 +msgid "Can view all supervisions per day" msgstr "" -#: aleksis/apps/chronos/preferences.py:20 -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." +#: aleksis/apps/chronos/models.py:1313 +msgid "Start slot number" msgstr "" -#: aleksis/apps/chronos/preferences.py:31 -msgid "Shorten groups in timetable views" +#: aleksis/apps/chronos/models.py:1316 +msgid "End slot number" msgstr "" -#: aleksis/apps/chronos/preferences.py:32 -msgid "If there are more groups than the set limit, they will be collapsed." +#: aleksis/apps/chronos/models.py:1320 +msgid "Course" msgstr "" -#: aleksis/apps/chronos/preferences.py:40 -msgid "Limit of groups for shortening of groups" +#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 +msgid "Cancelled" msgstr "" -#: aleksis/apps/chronos/preferences.py:42 -msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit." +#: aleksis/apps/chronos/models.py:1401 aleksis/apps/chronos/models.py:1413 +#: aleksis/apps/chronos/models.py:1425 +msgid "{} (instead of {})" msgstr "" -#: aleksis/apps/chronos/preferences.py:52 -msgid "Number of days shown on substitutions print view" +#: aleksis/apps/chronos/models.py:1614 +#, fuzzy +#| msgid "Lesson" +msgid "Lesson Event" +msgstr "Cours" + +#: aleksis/apps/chronos/models.py:1615 +#, fuzzy +#| msgid "Lesson" +msgid "Lesson Events" +msgstr "Cours" + +#: aleksis/apps/chronos/models.py:1630 +msgid "Supervision: {}" msgstr "" -#: aleksis/apps/chronos/preferences.py:60 -msgid "Show header box in substitution views" +#: aleksis/apps/chronos/preferences.py:21 +msgid "Timetables" msgstr "" -#: aleksis/apps/chronos/preferences.py:70 -msgid "Show parent groups in header box in substitution views instead of original groups" +#: aleksis/apps/chronos/preferences.py:29 +msgid "Use parent groups in timetable views" msgstr "" -#: aleksis/apps/chronos/preferences.py:79 -msgid "How many days in advance users should be notified about timetable changes?" +#: aleksis/apps/chronos/preferences.py:31 +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 "" -#: aleksis/apps/chronos/preferences.py:87 -msgid "Time for sending notifications about timetable changes" +#: aleksis/apps/chronos/preferences.py:42 +msgid "Shorten groups in timetable views" msgstr "" -#: aleksis/apps/chronos/preferences.py:90 -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." +#: aleksis/apps/chronos/preferences.py:43 +msgid "If there are more groups than the set limit, they will be collapsed." msgstr "" -#: aleksis/apps/chronos/preferences.py:101 -#: aleksis/apps/chronos/preferences.py:109 -msgid "Send notifications for current timetable changes" +#: aleksis/apps/chronos/preferences.py:51 +msgid "Limit of groups for shortening of groups" +msgstr "" + +#: aleksis/apps/chronos/preferences.py:53 +msgid "If a user activates shortening of groups,they will be collapsed if there are more groups than this limit." msgstr "" -#: aleksis/apps/chronos/tables.py:41 -msgid "Substitution" +#: aleksis/apps/chronos/preferences.py:65 +msgid "Relevant days for substitution plans" +msgstr "" + +#: aleksis/apps/chronos/preferences.py:82 +msgid "Time when substitution plans switch to the next day" +msgstr "" + +#: aleksis/apps/chronos/preferences.py:91 +msgid "Number of days shown on substitutions print view" +msgstr "" + +#: aleksis/apps/chronos/preferences.py:99 +msgid "Show header box in substitution views" msgstr "" -#: aleksis/apps/chronos/tables.py:43 -msgid "Manage substitution" +#: aleksis/apps/chronos/preferences.py:109 +msgid "Show parent groups in header box in substitution views instead of original groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:25 -msgid "No teachers timetables available." +#: aleksis/apps/chronos/preferences.py:118 +msgid "How many days in advance users should be notified about timetable changes?" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:39 -msgid "No group timetables available." +#: aleksis/apps/chronos/preferences.py:126 +msgid "Time for sending notifications about timetable changes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:53 -msgid "No room timetables available." +#: aleksis/apps/chronos/preferences.py:129 +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 "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:11 -msgid "Edit substitution." +#: aleksis/apps/chronos/preferences.py:140 +#: aleksis/apps/chronos/preferences.py:148 +msgid "Send notifications for current timetable changes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:12 -msgid "Edit substitution" +#: aleksis/apps/chronos/preferences.py:158 +msgid "Group types to show in timetables" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:25 -msgid "Delete" +#: aleksis/apps/chronos/preferences.py:159 +msgid "If you leave it empty, all groups will be shown." msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19 -#: aleksis/apps/chronos/templates/chronos/timetable.html:50 -msgid "SMART PLAN" +#: aleksis/apps/chronos/preferences.py:169 +msgid "Lesson calendar feed color" msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22 -msgid "Show week timetable for" +#: aleksis/apps/chronos/preferences.py:181 +msgid "Supervision calendar feed color" msgstr "" #: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 @@ -560,178 +536,123 @@ msgstr "" msgid "Affected groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/lesson.html:27 -msgid "Cancelled due to an event" +#: aleksis/apps/chronos/templates/chronos/partials/subs/period.html:12 +msgid "all day" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 -msgid "Cancelled" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6 -msgid "Cancelled for teachers" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 +msgid "Print: Substitutions" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/today.html:2 -msgid "Today" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 +msgid "Substitutions" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36 -msgid "CW" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:27 +msgid "Time" msgstr "" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:49 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 msgid "Notes" msgstr "Notes" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:57 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 msgid "No substitutions available." msgstr "" -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 -msgid "Print: Substitutions" +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:2 +msgid "Areas" msgstr "" -#: aleksis/apps/chronos/templates/chronos/timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/timetable.html:24 -#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11 -#: aleksis/apps/chronos/util/notifications.py:206 -msgid "Timetable" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:29 -msgid "Group teachers:" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:55 -msgid "Show regular timetable" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:63 -#: aleksis/apps/chronos/templates/chronos/timetable.html:84 -msgid "View class register of this week" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:76 -msgid "Show SMART PLAN" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/widget.html:8 -#, python-format -msgid "" -"\n" -" My timetable for %(day)s\n" -" " -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/widget.html:18 -msgid "" -"\n" -" There is no timetable linked to your person.\n" -" " -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/widget.html:27 -msgid "Go to smart plan" -msgstr "" - -#: aleksis/apps/chronos/util/notifications.py:50 +#: aleksis/apps/chronos/util/notifications.py:48 #, python-brace-format msgid "The {subject} lesson in the {period}. period on {day} has been cancelled." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:57 +#: aleksis/apps/chronos/util/notifications.py:55 #, python-brace-format msgid "The {subject} lesson in the {period}. period on {day} has some current changes." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:66 +#: aleksis/apps/chronos/util/notifications.py:64 #, python-brace-format msgid "The teacher {old} is substituted by {new}." msgid_plural "The teachers {old} are substituted by {new}." msgstr[0] "" msgstr[1] "" -#: aleksis/apps/chronos/util/notifications.py:78 +#: aleksis/apps/chronos/util/notifications.py:76 #, python-brace-format msgid "The subject is changed to {subject}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:84 +#: aleksis/apps/chronos/util/notifications.py:82 #, python-brace-format msgid "The lesson is moved from {old} to {new}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:93 +#: aleksis/apps/chronos/util/notifications.py:91 #, python-brace-format msgid "There is an additional comment: {comment}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:101 +#: aleksis/apps/chronos/util/notifications.py:99 #, 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 "" -#: aleksis/apps/chronos/util/notifications.py:114 +#: aleksis/apps/chronos/util/notifications.py:112 #, python-brace-format msgid "There is an event on {date} from the {period_from}. period to the {period_to}. period:" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:125 -#: aleksis/apps/chronos/util/notifications.py:145 +#: aleksis/apps/chronos/util/notifications.py:123 +#: aleksis/apps/chronos/util/notifications.py:143 #, python-brace-format msgid "Groups: {groups}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:127 -#: aleksis/apps/chronos/util/notifications.py:149 +#: aleksis/apps/chronos/util/notifications.py:125 +#: aleksis/apps/chronos/util/notifications.py:147 #, python-brace-format msgid "Teachers: {teachers}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:130 +#: aleksis/apps/chronos/util/notifications.py:128 #, python-brace-format msgid "Rooms: {rooms}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:137 +#: aleksis/apps/chronos/util/notifications.py:135 #, python-brace-format msgid "There is an extra lesson on {date} in the {period}. period:" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:147 +#: aleksis/apps/chronos/util/notifications.py:145 #, fuzzy, python-brace-format #| msgid "Subject" msgid "Subject: {subject}" msgstr "Sujet" -#: aleksis/apps/chronos/util/notifications.py:151 +#: aleksis/apps/chronos/util/notifications.py:149 #, python-brace-format msgid "Room: {room}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:153 +#: aleksis/apps/chronos/util/notifications.py:151 #, python-brace-format msgid "Comment: {comment}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:156 +#: aleksis/apps/chronos/util/notifications.py:154 #, 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 "" -#: aleksis/apps/chronos/util/notifications.py:207 -msgid "There are current changes to your timetable." -msgstr "" - -#: aleksis/apps/chronos/views.py:270 -msgid "The substitution has been saved." +#: aleksis/apps/chronos/util/notifications.py:204 +msgid "Timetable" msgstr "" -#: aleksis/apps/chronos/views.py:291 -msgid "The substitution has been deleted." +#: aleksis/apps/chronos/util/notifications.py:205 +msgid "There are current changes to your timetable." msgstr "" diff --git a/aleksis/apps/chronos/locale/la/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/la/LC_MESSAGES/django.po index 64f39ae10f914f1706a38e03dc6bf944a6f71d60..279ead538768dffda25f3cdb31fb9af609117621 100644 --- a/aleksis/apps/chronos/locale/la/LC_MESSAGES/django.po +++ b/aleksis/apps/chronos/locale/la/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-21 11:32+0200\n" +"POT-Creation-Date: 2024-08-18 14:23+0200\n" "PO-Revision-Date: 2020-08-23 13:49+0000\n" "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n" "Language-Team: Latin <https://translate.edugit.org/projects/aleksis/aleksis-app-chronos/la/>\n" @@ -18,76 +18,38 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.1.1\n" -#: aleksis/apps/chronos/form_extensions.py:7 -msgid "Options for timetables" -msgstr "" - -#: aleksis/apps/chronos/form_extensions.py:8 -msgid "Optional data for timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:6 aleksis/apps/chronos/preferences.py:10 -msgid "Timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:16 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18 -msgid "My timetable" -msgstr "" - -#: aleksis/apps/chronos/menus.py:27 -#: aleksis/apps/chronos/templates/chronos/all.html:11 -#: aleksis/apps/chronos/templates/chronos/all.html:12 -msgid "All timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:38 -msgid "Daily lessons" -msgstr "" - -#: aleksis/apps/chronos/menus.py:49 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:11 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:17 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 -msgid "Substitutions" -msgstr "" - #: aleksis/apps/chronos/mixins.py:25 msgid "Linked validity range" msgstr "" -#: aleksis/apps/chronos/model_extensions.py:142 -msgid "Show announcement in timetable views?" -msgstr "" - -#: aleksis/apps/chronos/model_extensions.py:151 +#: aleksis/apps/chronos/model_extensions.py:145 msgid "Can view group timetable" msgstr "" -#: aleksis/apps/chronos/model_extensions.py:155 +#: aleksis/apps/chronos/model_extensions.py:149 msgid "Can view person timetable" msgstr "" -#: aleksis/apps/chronos/models.py:86 +#: aleksis/apps/chronos/models.py:87 msgid "School term" msgstr "" -#: aleksis/apps/chronos/models.py:89 aleksis/apps/chronos/models.py:699 +#: aleksis/apps/chronos/models.py:90 aleksis/apps/chronos/models.py:626 +#: aleksis/apps/chronos/models.py:1310 msgid "Name" msgstr "" -#: aleksis/apps/chronos/models.py:91 aleksis/apps/chronos/models.py:754 -#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:1061 +#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:676 +#: aleksis/apps/chronos/models.py:747 aleksis/apps/chronos/models.py:979 msgid "Start date" msgstr "" -#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:755 -#: aleksis/apps/chronos/models.py:828 aleksis/apps/chronos/models.py:1062 +#: aleksis/apps/chronos/models.py:93 aleksis/apps/chronos/models.py:677 +#: aleksis/apps/chronos/models.py:748 aleksis/apps/chronos/models.py:980 msgid "End date" msgstr "" -#: aleksis/apps/chronos/models.py:111 +#: aleksis/apps/chronos/models.py:112 msgid "The start date must be earlier than the end date." msgstr "" @@ -107,628 +69,583 @@ msgstr "" msgid "Validity ranges" msgstr "" -#: aleksis/apps/chronos/models.py:150 +#: aleksis/apps/chronos/models.py:149 msgid "Week day" msgstr "" -#: aleksis/apps/chronos/models.py:152 +#: aleksis/apps/chronos/models.py:151 msgid "Number of period" msgstr "" -#: aleksis/apps/chronos/models.py:154 +#: aleksis/apps/chronos/models.py:153 msgid "Start time" msgstr "" -#: aleksis/apps/chronos/models.py:155 +#: aleksis/apps/chronos/models.py:154 msgid "End time" msgstr "" -#: aleksis/apps/chronos/models.py:338 aleksis/apps/chronos/models.py:525 -#: aleksis/apps/chronos/models.py:1191 +#: aleksis/apps/chronos/models.py:324 aleksis/apps/chronos/models.py:496 +#: aleksis/apps/chronos/models.py:1122 msgid "Time period" msgstr "" -#: aleksis/apps/chronos/models.py:339 +#: aleksis/apps/chronos/models.py:325 msgid "Time periods" msgstr "" -#: aleksis/apps/chronos/models.py:343 aleksis/apps/chronos/models.py:364 -#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:873 -#: aleksis/apps/chronos/models.py:895 +#: aleksis/apps/chronos/models.py:329 aleksis/apps/chronos/models.py:625 +#: aleksis/apps/chronos/models.py:793 aleksis/apps/chronos/models.py:810 msgid "Short name" msgstr "" -#: aleksis/apps/chronos/models.py:344 aleksis/apps/chronos/models.py:365 -#: aleksis/apps/chronos/models.py:874 aleksis/apps/chronos/models.py:896 +#: aleksis/apps/chronos/models.py:330 aleksis/apps/chronos/models.py:794 +#: aleksis/apps/chronos/models.py:811 msgid "Long name" msgstr "" -#: aleksis/apps/chronos/models.py:346 +#: aleksis/apps/chronos/models.py:332 msgid "Foreground colour" msgstr "" -#: aleksis/apps/chronos/models.py:347 +#: aleksis/apps/chronos/models.py:333 msgid "Background colour" msgstr "" -#: aleksis/apps/chronos/models.py:354 aleksis/apps/chronos/models.py:390 -#: aleksis/apps/chronos/models.py:446 aleksis/apps/chronos/models.py:1198 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:47 +#: aleksis/apps/chronos/models.py:340 aleksis/apps/chronos/models.py:349 +#: aleksis/apps/chronos/models.py:416 aleksis/apps/chronos/models.py:1129 +#: aleksis/apps/chronos/models.py:1345 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:2 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29 msgid "Subject" msgstr "" -#: aleksis/apps/chronos/models.py:355 +#: aleksis/apps/chronos/models.py:341 msgid "Subjects" msgstr "" -#: aleksis/apps/chronos/models.py:374 -msgid "Can view room timetable" -msgstr "" - -#: aleksis/apps/chronos/models.py:376 aleksis/apps/chronos/models.py:454 -#: aleksis/apps/chronos/models.py:533 aleksis/apps/chronos/models.py:751 -#: aleksis/apps/chronos/models.py:1213 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:48 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 -msgid "Room" -msgstr "" - -#: aleksis/apps/chronos/models.py:377 aleksis/apps/chronos/models.py:1078 -#: aleksis/apps/chronos/templates/chronos/all.html:45 -msgid "Rooms" -msgstr "" - -#: aleksis/apps/chronos/models.py:393 aleksis/apps/chronos/models.py:452 -#: aleksis/apps/chronos/models.py:1080 aleksis/apps/chronos/models.py:1206 -#: aleksis/apps/chronos/tables.py:35 -#: aleksis/apps/chronos/templates/chronos/all.html:17 +#: aleksis/apps/chronos/models.py:352 aleksis/apps/chronos/models.py:422 +#: aleksis/apps/chronos/models.py:998 aleksis/apps/chronos/models.py:1137 +#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:3 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28 +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:1 msgid "Teachers" msgstr "" -#: aleksis/apps/chronos/models.py:399 +#: aleksis/apps/chronos/models.py:358 msgid "Periods" msgstr "" -#: aleksis/apps/chronos/models.py:401 aleksis/apps/chronos/models.py:1077 -#: aleksis/apps/chronos/models.py:1201 aleksis/apps/chronos/tables.py:34 -#: aleksis/apps/chronos/templates/chronos/all.html:31 +#: aleksis/apps/chronos/models.py:360 aleksis/apps/chronos/models.py:995 +#: aleksis/apps/chronos/models.py:1132 aleksis/apps/chronos/models.py:1326 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:1 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:26 msgid "Groups" msgstr "" -#: aleksis/apps/chronos/models.py:424 aleksis/apps/chronos/models.py:519 -#: aleksis/apps/chronos/models.py:795 +#: aleksis/apps/chronos/models.py:394 aleksis/apps/chronos/models.py:490 +#: aleksis/apps/chronos/models.py:716 aleksis/apps/chronos/models.py:1430 +#: aleksis/apps/chronos/models.py:1454 msgid "Lesson" msgstr "" -#: aleksis/apps/chronos/models.py:425 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19 +#: aleksis/apps/chronos/models.py:395 aleksis/apps/chronos/models.py:1306 msgid "Lessons" msgstr "" -#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:1185 +#: aleksis/apps/chronos/models.py:403 aleksis/apps/chronos/models.py:1116 msgid "Week" msgstr "" -#: aleksis/apps/chronos/models.py:434 aleksis/apps/chronos/models.py:1186 +#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:1117 msgid "Year" msgstr "" -#: aleksis/apps/chronos/models.py:437 aleksis/apps/chronos/models.py:654 +#: aleksis/apps/chronos/models.py:407 aleksis/apps/chronos/models.py:620 msgid "Lesson period" msgstr "" -#: aleksis/apps/chronos/models.py:456 +#: aleksis/apps/chronos/models.py:425 aleksis/apps/chronos/models.py:504 +#: aleksis/apps/chronos/models.py:673 aleksis/apps/chronos/models.py:1144 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 +msgid "Room" +msgstr "" + +#: aleksis/apps/chronos/models.py:428 msgid "Cancelled?" msgstr "" -#: aleksis/apps/chronos/models.py:458 +#: aleksis/apps/chronos/models.py:430 msgid "Cancelled for teachers?" msgstr "" -#: aleksis/apps/chronos/models.py:461 aleksis/apps/chronos/models.py:770 -#: aleksis/apps/chronos/models.py:813 aleksis/apps/chronos/models.py:1216 +#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:692 +#: aleksis/apps/chronos/models.py:734 aleksis/apps/chronos/models.py:1147 +#: aleksis/apps/chronos/models.py:1357 msgid "Comment" msgstr "" -#: aleksis/apps/chronos/models.py:465 +#: aleksis/apps/chronos/models.py:437 msgid "Lessons can only be either substituted or cancelled." msgstr "" -#: aleksis/apps/chronos/models.py:506 +#: aleksis/apps/chronos/models.py:477 msgid "Lesson substitution" msgstr "" -#: aleksis/apps/chronos/models.py:507 +#: aleksis/apps/chronos/models.py:478 msgid "Lesson substitutions" msgstr "" -#: aleksis/apps/chronos/models.py:655 +#: aleksis/apps/chronos/models.py:621 msgid "Lesson periods" msgstr "" -#: aleksis/apps/chronos/models.py:693 -msgid "Timetable widget" -msgstr "" - -#: aleksis/apps/chronos/models.py:694 -msgid "Timetable widgets" -msgstr "" - -#: aleksis/apps/chronos/models.py:708 aleksis/apps/chronos/models.py:726 +#: aleksis/apps/chronos/models.py:635 aleksis/apps/chronos/models.py:648 msgid "Absence reason" msgstr "" -#: aleksis/apps/chronos/models.py:709 +#: aleksis/apps/chronos/models.py:636 msgid "Absence reasons" msgstr "" -#: aleksis/apps/chronos/models.py:735 aleksis/apps/chronos/models.py:974 -#: aleksis/apps/chronos/models.py:1025 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:46 +#: aleksis/apps/chronos/models.py:657 aleksis/apps/chronos/models.py:889 +#: aleksis/apps/chronos/models.py:943 msgid "Teacher" msgstr "" -#: aleksis/apps/chronos/models.py:743 +#: aleksis/apps/chronos/models.py:665 msgid "Group" msgstr "Grex" -#: aleksis/apps/chronos/models.py:759 aleksis/apps/chronos/models.py:802 +#: aleksis/apps/chronos/models.py:681 aleksis/apps/chronos/models.py:723 msgid "Start period" msgstr "" -#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:808 +#: aleksis/apps/chronos/models.py:688 aleksis/apps/chronos/models.py:729 msgid "End period" msgstr "" -#: aleksis/apps/chronos/models.py:780 +#: aleksis/apps/chronos/models.py:702 msgid "Unknown absence" msgstr "" -#: aleksis/apps/chronos/models.py:786 +#: aleksis/apps/chronos/models.py:707 msgid "Absence" msgstr "" -#: aleksis/apps/chronos/models.py:787 +#: aleksis/apps/chronos/models.py:708 msgid "Absences" msgstr "" -#: aleksis/apps/chronos/models.py:798 +#: aleksis/apps/chronos/models.py:719 msgid "Date of exam" msgstr "" -#: aleksis/apps/chronos/models.py:812 aleksis/apps/chronos/models.py:826 -#: aleksis/apps/chronos/models.py:1059 +#: aleksis/apps/chronos/models.py:733 aleksis/apps/chronos/models.py:746 +#: aleksis/apps/chronos/models.py:977 msgid "Title" msgstr "" -#: aleksis/apps/chronos/models.py:819 +#: aleksis/apps/chronos/models.py:739 msgid "Exam" msgstr "" -#: aleksis/apps/chronos/models.py:820 +#: aleksis/apps/chronos/models.py:740 msgid "Exams" msgstr "" -#: aleksis/apps/chronos/models.py:829 +#: aleksis/apps/chronos/models.py:749 msgid "Comments" msgstr "" -#: aleksis/apps/chronos/models.py:868 +#: aleksis/apps/chronos/models.py:788 msgid "Holiday" msgstr "" -#: aleksis/apps/chronos/models.py:869 +#: aleksis/apps/chronos/models.py:789 msgid "Holidays" msgstr "" -#: aleksis/apps/chronos/models.py:883 aleksis/apps/chronos/models.py:964 +#: aleksis/apps/chronos/models.py:803 aleksis/apps/chronos/models.py:879 msgid "Supervision area" msgstr "" -#: aleksis/apps/chronos/models.py:884 +#: aleksis/apps/chronos/models.py:804 msgid "Supervision areas" msgstr "" -#: aleksis/apps/chronos/models.py:901 +#: aleksis/apps/chronos/models.py:816 msgid "Time period after break starts" msgstr "" -#: aleksis/apps/chronos/models.py:909 +#: aleksis/apps/chronos/models.py:824 msgid "Time period before break ends" msgstr "" -#: aleksis/apps/chronos/models.py:949 aleksis/apps/chronos/models.py:968 +#: aleksis/apps/chronos/models.py:864 aleksis/apps/chronos/models.py:883 msgid "Break" msgstr "" -#: aleksis/apps/chronos/models.py:950 +#: aleksis/apps/chronos/models.py:865 msgid "Breaks" msgstr "" -#: aleksis/apps/chronos/models.py:1005 aleksis/apps/chronos/models.py:1018 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23 -#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15 +#: aleksis/apps/chronos/models.py:923 aleksis/apps/chronos/models.py:936 +#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:3 msgid "Supervision" msgstr "" -#: aleksis/apps/chronos/models.py:1006 +#: aleksis/apps/chronos/models.py:924 aleksis/apps/chronos/models.py:1622 msgid "Supervisions" msgstr "" -#: aleksis/apps/chronos/models.py:1014 +#: aleksis/apps/chronos/models.py:932 msgid "Date" msgstr "" -#: aleksis/apps/chronos/models.py:1048 +#: aleksis/apps/chronos/models.py:966 msgid "Supervision substitution" msgstr "" -#: aleksis/apps/chronos/models.py:1049 +#: aleksis/apps/chronos/models.py:967 msgid "Supervision substitutions" msgstr "" -#: aleksis/apps/chronos/models.py:1067 +#: aleksis/apps/chronos/models.py:985 msgid "Start time period" msgstr "" -#: aleksis/apps/chronos/models.py:1073 +#: aleksis/apps/chronos/models.py:991 msgid "End time period" msgstr "" -#: aleksis/apps/chronos/models.py:1087 +#: aleksis/apps/chronos/models.py:996 aleksis/apps/chronos/models.py:1332 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:4 +msgid "Rooms" +msgstr "" + +#: aleksis/apps/chronos/models.py:1005 #, python-brace-format msgid "Event {pk}" msgstr "" -#: aleksis/apps/chronos/models.py:1172 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27 +#: aleksis/apps/chronos/models.py:1103 msgid "Event" msgstr "" -#: aleksis/apps/chronos/models.py:1173 +#: aleksis/apps/chronos/models.py:1104 msgid "Events" msgstr "" -#: aleksis/apps/chronos/models.py:1221 +#: aleksis/apps/chronos/models.py:1152 msgid "Related exam" msgstr "" -#: aleksis/apps/chronos/models.py:1251 +#: aleksis/apps/chronos/models.py:1181 msgid "Extra lesson" msgstr "" -#: aleksis/apps/chronos/models.py:1252 +#: aleksis/apps/chronos/models.py:1182 msgid "Extra lessons" msgstr "" -#: aleksis/apps/chronos/models.py:1264 +#: aleksis/apps/chronos/models.py:1194 msgid "Number of days shown in the plan" msgstr "" -#: aleksis/apps/chronos/models.py:1268 +#: aleksis/apps/chronos/models.py:1198 msgid "Show header box" msgstr "" -#: aleksis/apps/chronos/models.py:1269 aleksis/apps/chronos/preferences.py:61 +#: aleksis/apps/chronos/models.py:1199 aleksis/apps/chronos/preferences.py:100 msgid "The header box shows affected teachers/groups." msgstr "" -#: aleksis/apps/chronos/models.py:1276 +#: aleksis/apps/chronos/models.py:1206 msgid "Revision which triggered the last update" msgstr "" -#: aleksis/apps/chronos/models.py:1337 +#: aleksis/apps/chronos/models.py:1278 msgid "Automatic plan" msgstr "" -#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/models.py:1279 msgid "Automatic plans" msgstr "" -#: aleksis/apps/chronos/models.py:1352 +#: aleksis/apps/chronos/models.py:1293 msgid "Can view all room timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/models.py:1294 msgid "Can view all group timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1354 +#: aleksis/apps/chronos/models.py:1295 msgid "Can view all person timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1355 +#: aleksis/apps/chronos/models.py:1296 msgid "Can view timetable overview" msgstr "" -#: aleksis/apps/chronos/models.py:1356 +#: aleksis/apps/chronos/models.py:1297 msgid "Can view all lessons per day" msgstr "" -#: aleksis/apps/chronos/preferences.py:18 -msgid "Use parent groups in timetable views" +#: aleksis/apps/chronos/models.py:1298 +msgid "Can view all supervisions per day" msgstr "" -#: aleksis/apps/chronos/preferences.py:20 -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." +#: aleksis/apps/chronos/models.py:1313 +msgid "Start slot number" msgstr "" -#: aleksis/apps/chronos/preferences.py:31 -msgid "Shorten groups in timetable views" +#: aleksis/apps/chronos/models.py:1316 +msgid "End slot number" msgstr "" -#: aleksis/apps/chronos/preferences.py:32 -msgid "If there are more groups than the set limit, they will be collapsed." +#: aleksis/apps/chronos/models.py:1320 +msgid "Course" msgstr "" -#: aleksis/apps/chronos/preferences.py:40 -msgid "Limit of groups for shortening of groups" +#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 +msgid "Cancelled" msgstr "" -#: aleksis/apps/chronos/preferences.py:42 -msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit." +#: aleksis/apps/chronos/models.py:1401 aleksis/apps/chronos/models.py:1413 +#: aleksis/apps/chronos/models.py:1425 +msgid "{} (instead of {})" msgstr "" -#: aleksis/apps/chronos/preferences.py:52 -msgid "Number of days shown on substitutions print view" +#: aleksis/apps/chronos/models.py:1614 +msgid "Lesson Event" msgstr "" -#: aleksis/apps/chronos/preferences.py:60 -msgid "Show header box in substitution views" +#: aleksis/apps/chronos/models.py:1615 +msgid "Lesson Events" msgstr "" -#: aleksis/apps/chronos/preferences.py:70 -msgid "Show parent groups in header box in substitution views instead of original groups" +#: aleksis/apps/chronos/models.py:1630 +msgid "Supervision: {}" msgstr "" -#: aleksis/apps/chronos/preferences.py:79 -msgid "How many days in advance users should be notified about timetable changes?" +#: aleksis/apps/chronos/preferences.py:21 +msgid "Timetables" msgstr "" -#: aleksis/apps/chronos/preferences.py:87 -msgid "Time for sending notifications about timetable changes" +#: aleksis/apps/chronos/preferences.py:29 +msgid "Use parent groups in timetable views" msgstr "" -#: aleksis/apps/chronos/preferences.py:90 -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." +#: aleksis/apps/chronos/preferences.py:31 +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 "" -#: aleksis/apps/chronos/preferences.py:101 -#: aleksis/apps/chronos/preferences.py:109 -msgid "Send notifications for current timetable changes" +#: aleksis/apps/chronos/preferences.py:42 +msgid "Shorten groups in timetable views" msgstr "" -#: aleksis/apps/chronos/tables.py:41 -msgid "Substitution" +#: aleksis/apps/chronos/preferences.py:43 +msgid "If there are more groups than the set limit, they will be collapsed." msgstr "" -#: aleksis/apps/chronos/tables.py:43 -msgid "Manage substitution" +#: aleksis/apps/chronos/preferences.py:51 +msgid "Limit of groups for shortening of groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:25 -msgid "No teachers timetables available." +#: aleksis/apps/chronos/preferences.py:53 +msgid "If a user activates shortening of groups,they will be collapsed if there are more groups than this limit." msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:39 -msgid "No group timetables available." +#: aleksis/apps/chronos/preferences.py:65 +msgid "Relevant days for substitution plans" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:53 -msgid "No room timetables available." +#: aleksis/apps/chronos/preferences.py:82 +msgid "Time when substitution plans switch to the next day" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:11 -msgid "Edit substitution." +#: aleksis/apps/chronos/preferences.py:91 +msgid "Number of days shown on substitutions print view" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:12 -msgid "Edit substitution" +#: aleksis/apps/chronos/preferences.py:99 +msgid "Show header box in substitution views" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:25 -msgid "Delete" +#: aleksis/apps/chronos/preferences.py:109 +msgid "Show parent groups in header box in substitution views instead of original groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19 -#: aleksis/apps/chronos/templates/chronos/timetable.html:50 -msgid "SMART PLAN" +#: aleksis/apps/chronos/preferences.py:118 +msgid "How many days in advance users should be notified about timetable changes?" msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22 -msgid "Show week timetable for" +#: aleksis/apps/chronos/preferences.py:126 +msgid "Time for sending notifications about timetable changes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 -msgid "Absent teachers" +#: aleksis/apps/chronos/preferences.py:129 +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 "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22 -msgid "Absent groups" +#: aleksis/apps/chronos/preferences.py:140 +#: aleksis/apps/chronos/preferences.py:148 +msgid "Send notifications for current timetable changes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34 -msgid "Affected teachers" +#: aleksis/apps/chronos/preferences.py:158 +msgid "Group types to show in timetables" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46 -msgid "Affected groups" +#: aleksis/apps/chronos/preferences.py:159 +msgid "If you leave it empty, all groups will be shown." msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/lesson.html:27 -msgid "Cancelled due to an event" +#: aleksis/apps/chronos/preferences.py:169 +msgid "Lesson calendar feed color" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 -msgid "Cancelled" +#: aleksis/apps/chronos/preferences.py:181 +msgid "Supervision calendar feed color" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6 -msgid "Cancelled for teachers" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 +msgid "Absent teachers" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/today.html:2 -msgid "Today" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22 +msgid "Absent groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36 -msgid "CW" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34 +msgid "Affected teachers" msgstr "" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:49 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 -msgid "Notes" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46 +msgid "Affected groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:57 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 -msgid "No substitutions available." +#: aleksis/apps/chronos/templates/chronos/partials/subs/period.html:12 +msgid "all day" msgstr "" #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 msgid "Print: Substitutions" msgstr "" -#: aleksis/apps/chronos/templates/chronos/timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/timetable.html:24 -#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11 -#: aleksis/apps/chronos/util/notifications.py:206 -msgid "Timetable" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:29 -msgid "Group teachers:" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:55 -msgid "Show regular timetable" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:63 -#: aleksis/apps/chronos/templates/chronos/timetable.html:84 -msgid "View class register of this week" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 +msgid "Substitutions" msgstr "" -#: aleksis/apps/chronos/templates/chronos/timetable.html:76 -msgid "Show SMART PLAN" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:27 +msgid "Time" msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:8 -#, python-format -msgid "" -"\n" -" My timetable for %(day)s\n" -" " +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 +msgid "Notes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:18 -msgid "" -"\n" -" There is no timetable linked to your person.\n" -" " +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 +msgid "No substitutions available." msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:27 -msgid "Go to smart plan" +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:2 +msgid "Areas" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:50 +#: aleksis/apps/chronos/util/notifications.py:48 #, python-brace-format msgid "The {subject} lesson in the {period}. period on {day} has been cancelled." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:57 +#: aleksis/apps/chronos/util/notifications.py:55 #, python-brace-format msgid "The {subject} lesson in the {period}. period on {day} has some current changes." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:66 +#: aleksis/apps/chronos/util/notifications.py:64 #, python-brace-format msgid "The teacher {old} is substituted by {new}." msgid_plural "The teachers {old} are substituted by {new}." msgstr[0] "" msgstr[1] "" -#: aleksis/apps/chronos/util/notifications.py:78 +#: aleksis/apps/chronos/util/notifications.py:76 #, python-brace-format msgid "The subject is changed to {subject}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:84 +#: aleksis/apps/chronos/util/notifications.py:82 #, python-brace-format msgid "The lesson is moved from {old} to {new}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:93 +#: aleksis/apps/chronos/util/notifications.py:91 #, python-brace-format msgid "There is an additional comment: {comment}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:101 +#: aleksis/apps/chronos/util/notifications.py:99 #, 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 "" -#: aleksis/apps/chronos/util/notifications.py:114 +#: aleksis/apps/chronos/util/notifications.py:112 #, python-brace-format msgid "There is an event on {date} from the {period_from}. period to the {period_to}. period:" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:125 -#: aleksis/apps/chronos/util/notifications.py:145 +#: aleksis/apps/chronos/util/notifications.py:123 +#: aleksis/apps/chronos/util/notifications.py:143 #, python-brace-format msgid "Groups: {groups}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:127 -#: aleksis/apps/chronos/util/notifications.py:149 +#: aleksis/apps/chronos/util/notifications.py:125 +#: aleksis/apps/chronos/util/notifications.py:147 #, python-brace-format msgid "Teachers: {teachers}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:130 +#: aleksis/apps/chronos/util/notifications.py:128 #, python-brace-format msgid "Rooms: {rooms}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:137 +#: aleksis/apps/chronos/util/notifications.py:135 #, python-brace-format msgid "There is an extra lesson on {date} in the {period}. period:" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:147 +#: aleksis/apps/chronos/util/notifications.py:145 #, python-brace-format msgid "Subject: {subject}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:151 +#: aleksis/apps/chronos/util/notifications.py:149 #, python-brace-format msgid "Room: {room}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:153 +#: aleksis/apps/chronos/util/notifications.py:151 #, python-brace-format msgid "Comment: {comment}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:156 +#: aleksis/apps/chronos/util/notifications.py:154 #, 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 "" -#: aleksis/apps/chronos/util/notifications.py:207 -msgid "There are current changes to your timetable." -msgstr "" - -#: aleksis/apps/chronos/views.py:270 -msgid "The substitution has been saved." +#: aleksis/apps/chronos/util/notifications.py:204 +msgid "Timetable" msgstr "" -#: aleksis/apps/chronos/views.py:291 -msgid "The substitution has been deleted." +#: aleksis/apps/chronos/util/notifications.py:205 +msgid "There are current changes to your timetable." msgstr "" diff --git a/aleksis/apps/chronos/locale/nb_NO/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/nb_NO/LC_MESSAGES/django.po index f4190ee2c3668ce8a8a236aa9dbb007292e467a9..cfc760f01b3206aaf7123340eccf529e9e4db354 100644 --- a/aleksis/apps/chronos/locale/nb_NO/LC_MESSAGES/django.po +++ b/aleksis/apps/chronos/locale/nb_NO/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-21 11:32+0200\n" +"POT-Creation-Date: 2024-08-18 14:23+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,76 +17,38 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: aleksis/apps/chronos/form_extensions.py:7 -msgid "Options for timetables" -msgstr "" - -#: aleksis/apps/chronos/form_extensions.py:8 -msgid "Optional data for timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:6 aleksis/apps/chronos/preferences.py:10 -msgid "Timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:16 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18 -msgid "My timetable" -msgstr "" - -#: aleksis/apps/chronos/menus.py:27 -#: aleksis/apps/chronos/templates/chronos/all.html:11 -#: aleksis/apps/chronos/templates/chronos/all.html:12 -msgid "All timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:38 -msgid "Daily lessons" -msgstr "" - -#: aleksis/apps/chronos/menus.py:49 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:11 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:17 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 -msgid "Substitutions" -msgstr "" - #: aleksis/apps/chronos/mixins.py:25 msgid "Linked validity range" msgstr "" -#: aleksis/apps/chronos/model_extensions.py:142 -msgid "Show announcement in timetable views?" -msgstr "" - -#: aleksis/apps/chronos/model_extensions.py:151 +#: aleksis/apps/chronos/model_extensions.py:145 msgid "Can view group timetable" msgstr "" -#: aleksis/apps/chronos/model_extensions.py:155 +#: aleksis/apps/chronos/model_extensions.py:149 msgid "Can view person timetable" msgstr "" -#: aleksis/apps/chronos/models.py:86 +#: aleksis/apps/chronos/models.py:87 msgid "School term" msgstr "" -#: aleksis/apps/chronos/models.py:89 aleksis/apps/chronos/models.py:699 +#: aleksis/apps/chronos/models.py:90 aleksis/apps/chronos/models.py:626 +#: aleksis/apps/chronos/models.py:1310 msgid "Name" msgstr "" -#: aleksis/apps/chronos/models.py:91 aleksis/apps/chronos/models.py:754 -#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:1061 +#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:676 +#: aleksis/apps/chronos/models.py:747 aleksis/apps/chronos/models.py:979 msgid "Start date" msgstr "" -#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:755 -#: aleksis/apps/chronos/models.py:828 aleksis/apps/chronos/models.py:1062 +#: aleksis/apps/chronos/models.py:93 aleksis/apps/chronos/models.py:677 +#: aleksis/apps/chronos/models.py:748 aleksis/apps/chronos/models.py:980 msgid "End date" msgstr "" -#: aleksis/apps/chronos/models.py:111 +#: aleksis/apps/chronos/models.py:112 msgid "The start date must be earlier than the end date." msgstr "" @@ -106,628 +68,583 @@ msgstr "" msgid "Validity ranges" msgstr "" -#: aleksis/apps/chronos/models.py:150 +#: aleksis/apps/chronos/models.py:149 msgid "Week day" msgstr "" -#: aleksis/apps/chronos/models.py:152 +#: aleksis/apps/chronos/models.py:151 msgid "Number of period" msgstr "" -#: aleksis/apps/chronos/models.py:154 +#: aleksis/apps/chronos/models.py:153 msgid "Start time" msgstr "" -#: aleksis/apps/chronos/models.py:155 +#: aleksis/apps/chronos/models.py:154 msgid "End time" msgstr "" -#: aleksis/apps/chronos/models.py:338 aleksis/apps/chronos/models.py:525 -#: aleksis/apps/chronos/models.py:1191 +#: aleksis/apps/chronos/models.py:324 aleksis/apps/chronos/models.py:496 +#: aleksis/apps/chronos/models.py:1122 msgid "Time period" msgstr "" -#: aleksis/apps/chronos/models.py:339 +#: aleksis/apps/chronos/models.py:325 msgid "Time periods" msgstr "" -#: aleksis/apps/chronos/models.py:343 aleksis/apps/chronos/models.py:364 -#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:873 -#: aleksis/apps/chronos/models.py:895 +#: aleksis/apps/chronos/models.py:329 aleksis/apps/chronos/models.py:625 +#: aleksis/apps/chronos/models.py:793 aleksis/apps/chronos/models.py:810 msgid "Short name" msgstr "" -#: aleksis/apps/chronos/models.py:344 aleksis/apps/chronos/models.py:365 -#: aleksis/apps/chronos/models.py:874 aleksis/apps/chronos/models.py:896 +#: aleksis/apps/chronos/models.py:330 aleksis/apps/chronos/models.py:794 +#: aleksis/apps/chronos/models.py:811 msgid "Long name" msgstr "" -#: aleksis/apps/chronos/models.py:346 +#: aleksis/apps/chronos/models.py:332 msgid "Foreground colour" msgstr "" -#: aleksis/apps/chronos/models.py:347 +#: aleksis/apps/chronos/models.py:333 msgid "Background colour" msgstr "" -#: aleksis/apps/chronos/models.py:354 aleksis/apps/chronos/models.py:390 -#: aleksis/apps/chronos/models.py:446 aleksis/apps/chronos/models.py:1198 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:47 +#: aleksis/apps/chronos/models.py:340 aleksis/apps/chronos/models.py:349 +#: aleksis/apps/chronos/models.py:416 aleksis/apps/chronos/models.py:1129 +#: aleksis/apps/chronos/models.py:1345 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:2 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29 msgid "Subject" msgstr "" -#: aleksis/apps/chronos/models.py:355 +#: aleksis/apps/chronos/models.py:341 msgid "Subjects" msgstr "" -#: aleksis/apps/chronos/models.py:374 -msgid "Can view room timetable" -msgstr "" - -#: aleksis/apps/chronos/models.py:376 aleksis/apps/chronos/models.py:454 -#: aleksis/apps/chronos/models.py:533 aleksis/apps/chronos/models.py:751 -#: aleksis/apps/chronos/models.py:1213 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:48 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 -msgid "Room" -msgstr "" - -#: aleksis/apps/chronos/models.py:377 aleksis/apps/chronos/models.py:1078 -#: aleksis/apps/chronos/templates/chronos/all.html:45 -msgid "Rooms" -msgstr "" - -#: aleksis/apps/chronos/models.py:393 aleksis/apps/chronos/models.py:452 -#: aleksis/apps/chronos/models.py:1080 aleksis/apps/chronos/models.py:1206 -#: aleksis/apps/chronos/tables.py:35 -#: aleksis/apps/chronos/templates/chronos/all.html:17 +#: aleksis/apps/chronos/models.py:352 aleksis/apps/chronos/models.py:422 +#: aleksis/apps/chronos/models.py:998 aleksis/apps/chronos/models.py:1137 +#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:3 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28 +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:1 msgid "Teachers" msgstr "" -#: aleksis/apps/chronos/models.py:399 +#: aleksis/apps/chronos/models.py:358 msgid "Periods" msgstr "" -#: aleksis/apps/chronos/models.py:401 aleksis/apps/chronos/models.py:1077 -#: aleksis/apps/chronos/models.py:1201 aleksis/apps/chronos/tables.py:34 -#: aleksis/apps/chronos/templates/chronos/all.html:31 +#: aleksis/apps/chronos/models.py:360 aleksis/apps/chronos/models.py:995 +#: aleksis/apps/chronos/models.py:1132 aleksis/apps/chronos/models.py:1326 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:1 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:26 msgid "Groups" msgstr "" -#: aleksis/apps/chronos/models.py:424 aleksis/apps/chronos/models.py:519 -#: aleksis/apps/chronos/models.py:795 +#: aleksis/apps/chronos/models.py:394 aleksis/apps/chronos/models.py:490 +#: aleksis/apps/chronos/models.py:716 aleksis/apps/chronos/models.py:1430 +#: aleksis/apps/chronos/models.py:1454 msgid "Lesson" msgstr "" -#: aleksis/apps/chronos/models.py:425 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19 +#: aleksis/apps/chronos/models.py:395 aleksis/apps/chronos/models.py:1306 msgid "Lessons" msgstr "" -#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:1185 +#: aleksis/apps/chronos/models.py:403 aleksis/apps/chronos/models.py:1116 msgid "Week" msgstr "" -#: aleksis/apps/chronos/models.py:434 aleksis/apps/chronos/models.py:1186 +#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:1117 msgid "Year" msgstr "" -#: aleksis/apps/chronos/models.py:437 aleksis/apps/chronos/models.py:654 +#: aleksis/apps/chronos/models.py:407 aleksis/apps/chronos/models.py:620 msgid "Lesson period" msgstr "" -#: aleksis/apps/chronos/models.py:456 +#: aleksis/apps/chronos/models.py:425 aleksis/apps/chronos/models.py:504 +#: aleksis/apps/chronos/models.py:673 aleksis/apps/chronos/models.py:1144 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 +msgid "Room" +msgstr "" + +#: aleksis/apps/chronos/models.py:428 msgid "Cancelled?" msgstr "" -#: aleksis/apps/chronos/models.py:458 +#: aleksis/apps/chronos/models.py:430 msgid "Cancelled for teachers?" msgstr "" -#: aleksis/apps/chronos/models.py:461 aleksis/apps/chronos/models.py:770 -#: aleksis/apps/chronos/models.py:813 aleksis/apps/chronos/models.py:1216 +#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:692 +#: aleksis/apps/chronos/models.py:734 aleksis/apps/chronos/models.py:1147 +#: aleksis/apps/chronos/models.py:1357 msgid "Comment" msgstr "" -#: aleksis/apps/chronos/models.py:465 +#: aleksis/apps/chronos/models.py:437 msgid "Lessons can only be either substituted or cancelled." msgstr "" -#: aleksis/apps/chronos/models.py:506 +#: aleksis/apps/chronos/models.py:477 msgid "Lesson substitution" msgstr "" -#: aleksis/apps/chronos/models.py:507 +#: aleksis/apps/chronos/models.py:478 msgid "Lesson substitutions" msgstr "" -#: aleksis/apps/chronos/models.py:655 +#: aleksis/apps/chronos/models.py:621 msgid "Lesson periods" msgstr "" -#: aleksis/apps/chronos/models.py:693 -msgid "Timetable widget" -msgstr "" - -#: aleksis/apps/chronos/models.py:694 -msgid "Timetable widgets" -msgstr "" - -#: aleksis/apps/chronos/models.py:708 aleksis/apps/chronos/models.py:726 +#: aleksis/apps/chronos/models.py:635 aleksis/apps/chronos/models.py:648 msgid "Absence reason" msgstr "" -#: aleksis/apps/chronos/models.py:709 +#: aleksis/apps/chronos/models.py:636 msgid "Absence reasons" msgstr "" -#: aleksis/apps/chronos/models.py:735 aleksis/apps/chronos/models.py:974 -#: aleksis/apps/chronos/models.py:1025 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:46 +#: aleksis/apps/chronos/models.py:657 aleksis/apps/chronos/models.py:889 +#: aleksis/apps/chronos/models.py:943 msgid "Teacher" msgstr "" -#: aleksis/apps/chronos/models.py:743 +#: aleksis/apps/chronos/models.py:665 msgid "Group" msgstr "" -#: aleksis/apps/chronos/models.py:759 aleksis/apps/chronos/models.py:802 +#: aleksis/apps/chronos/models.py:681 aleksis/apps/chronos/models.py:723 msgid "Start period" msgstr "" -#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:808 +#: aleksis/apps/chronos/models.py:688 aleksis/apps/chronos/models.py:729 msgid "End period" msgstr "" -#: aleksis/apps/chronos/models.py:780 +#: aleksis/apps/chronos/models.py:702 msgid "Unknown absence" msgstr "" -#: aleksis/apps/chronos/models.py:786 +#: aleksis/apps/chronos/models.py:707 msgid "Absence" msgstr "" -#: aleksis/apps/chronos/models.py:787 +#: aleksis/apps/chronos/models.py:708 msgid "Absences" msgstr "" -#: aleksis/apps/chronos/models.py:798 +#: aleksis/apps/chronos/models.py:719 msgid "Date of exam" msgstr "" -#: aleksis/apps/chronos/models.py:812 aleksis/apps/chronos/models.py:826 -#: aleksis/apps/chronos/models.py:1059 +#: aleksis/apps/chronos/models.py:733 aleksis/apps/chronos/models.py:746 +#: aleksis/apps/chronos/models.py:977 msgid "Title" msgstr "" -#: aleksis/apps/chronos/models.py:819 +#: aleksis/apps/chronos/models.py:739 msgid "Exam" msgstr "" -#: aleksis/apps/chronos/models.py:820 +#: aleksis/apps/chronos/models.py:740 msgid "Exams" msgstr "" -#: aleksis/apps/chronos/models.py:829 +#: aleksis/apps/chronos/models.py:749 msgid "Comments" msgstr "" -#: aleksis/apps/chronos/models.py:868 +#: aleksis/apps/chronos/models.py:788 msgid "Holiday" msgstr "" -#: aleksis/apps/chronos/models.py:869 +#: aleksis/apps/chronos/models.py:789 msgid "Holidays" msgstr "" -#: aleksis/apps/chronos/models.py:883 aleksis/apps/chronos/models.py:964 +#: aleksis/apps/chronos/models.py:803 aleksis/apps/chronos/models.py:879 msgid "Supervision area" msgstr "" -#: aleksis/apps/chronos/models.py:884 +#: aleksis/apps/chronos/models.py:804 msgid "Supervision areas" msgstr "" -#: aleksis/apps/chronos/models.py:901 +#: aleksis/apps/chronos/models.py:816 msgid "Time period after break starts" msgstr "" -#: aleksis/apps/chronos/models.py:909 +#: aleksis/apps/chronos/models.py:824 msgid "Time period before break ends" msgstr "" -#: aleksis/apps/chronos/models.py:949 aleksis/apps/chronos/models.py:968 +#: aleksis/apps/chronos/models.py:864 aleksis/apps/chronos/models.py:883 msgid "Break" msgstr "" -#: aleksis/apps/chronos/models.py:950 +#: aleksis/apps/chronos/models.py:865 msgid "Breaks" msgstr "" -#: aleksis/apps/chronos/models.py:1005 aleksis/apps/chronos/models.py:1018 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23 -#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15 +#: aleksis/apps/chronos/models.py:923 aleksis/apps/chronos/models.py:936 +#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:3 msgid "Supervision" msgstr "" -#: aleksis/apps/chronos/models.py:1006 +#: aleksis/apps/chronos/models.py:924 aleksis/apps/chronos/models.py:1622 msgid "Supervisions" msgstr "" -#: aleksis/apps/chronos/models.py:1014 +#: aleksis/apps/chronos/models.py:932 msgid "Date" msgstr "" -#: aleksis/apps/chronos/models.py:1048 +#: aleksis/apps/chronos/models.py:966 msgid "Supervision substitution" msgstr "" -#: aleksis/apps/chronos/models.py:1049 +#: aleksis/apps/chronos/models.py:967 msgid "Supervision substitutions" msgstr "" -#: aleksis/apps/chronos/models.py:1067 +#: aleksis/apps/chronos/models.py:985 msgid "Start time period" msgstr "" -#: aleksis/apps/chronos/models.py:1073 +#: aleksis/apps/chronos/models.py:991 msgid "End time period" msgstr "" -#: aleksis/apps/chronos/models.py:1087 +#: aleksis/apps/chronos/models.py:996 aleksis/apps/chronos/models.py:1332 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:4 +msgid "Rooms" +msgstr "" + +#: aleksis/apps/chronos/models.py:1005 #, python-brace-format msgid "Event {pk}" msgstr "" -#: aleksis/apps/chronos/models.py:1172 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27 +#: aleksis/apps/chronos/models.py:1103 msgid "Event" msgstr "" -#: aleksis/apps/chronos/models.py:1173 +#: aleksis/apps/chronos/models.py:1104 msgid "Events" msgstr "" -#: aleksis/apps/chronos/models.py:1221 +#: aleksis/apps/chronos/models.py:1152 msgid "Related exam" msgstr "" -#: aleksis/apps/chronos/models.py:1251 +#: aleksis/apps/chronos/models.py:1181 msgid "Extra lesson" msgstr "" -#: aleksis/apps/chronos/models.py:1252 +#: aleksis/apps/chronos/models.py:1182 msgid "Extra lessons" msgstr "" -#: aleksis/apps/chronos/models.py:1264 +#: aleksis/apps/chronos/models.py:1194 msgid "Number of days shown in the plan" msgstr "" -#: aleksis/apps/chronos/models.py:1268 +#: aleksis/apps/chronos/models.py:1198 msgid "Show header box" msgstr "" -#: aleksis/apps/chronos/models.py:1269 aleksis/apps/chronos/preferences.py:61 +#: aleksis/apps/chronos/models.py:1199 aleksis/apps/chronos/preferences.py:100 msgid "The header box shows affected teachers/groups." msgstr "" -#: aleksis/apps/chronos/models.py:1276 +#: aleksis/apps/chronos/models.py:1206 msgid "Revision which triggered the last update" msgstr "" -#: aleksis/apps/chronos/models.py:1337 +#: aleksis/apps/chronos/models.py:1278 msgid "Automatic plan" msgstr "" -#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/models.py:1279 msgid "Automatic plans" msgstr "" -#: aleksis/apps/chronos/models.py:1352 +#: aleksis/apps/chronos/models.py:1293 msgid "Can view all room timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/models.py:1294 msgid "Can view all group timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1354 +#: aleksis/apps/chronos/models.py:1295 msgid "Can view all person timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1355 +#: aleksis/apps/chronos/models.py:1296 msgid "Can view timetable overview" msgstr "" -#: aleksis/apps/chronos/models.py:1356 +#: aleksis/apps/chronos/models.py:1297 msgid "Can view all lessons per day" msgstr "" -#: aleksis/apps/chronos/preferences.py:18 -msgid "Use parent groups in timetable views" +#: aleksis/apps/chronos/models.py:1298 +msgid "Can view all supervisions per day" msgstr "" -#: aleksis/apps/chronos/preferences.py:20 -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." +#: aleksis/apps/chronos/models.py:1313 +msgid "Start slot number" msgstr "" -#: aleksis/apps/chronos/preferences.py:31 -msgid "Shorten groups in timetable views" +#: aleksis/apps/chronos/models.py:1316 +msgid "End slot number" msgstr "" -#: aleksis/apps/chronos/preferences.py:32 -msgid "If there are more groups than the set limit, they will be collapsed." +#: aleksis/apps/chronos/models.py:1320 +msgid "Course" msgstr "" -#: aleksis/apps/chronos/preferences.py:40 -msgid "Limit of groups for shortening of groups" +#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 +msgid "Cancelled" msgstr "" -#: aleksis/apps/chronos/preferences.py:42 -msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit." +#: aleksis/apps/chronos/models.py:1401 aleksis/apps/chronos/models.py:1413 +#: aleksis/apps/chronos/models.py:1425 +msgid "{} (instead of {})" msgstr "" -#: aleksis/apps/chronos/preferences.py:52 -msgid "Number of days shown on substitutions print view" +#: aleksis/apps/chronos/models.py:1614 +msgid "Lesson Event" msgstr "" -#: aleksis/apps/chronos/preferences.py:60 -msgid "Show header box in substitution views" +#: aleksis/apps/chronos/models.py:1615 +msgid "Lesson Events" msgstr "" -#: aleksis/apps/chronos/preferences.py:70 -msgid "Show parent groups in header box in substitution views instead of original groups" +#: aleksis/apps/chronos/models.py:1630 +msgid "Supervision: {}" msgstr "" -#: aleksis/apps/chronos/preferences.py:79 -msgid "How many days in advance users should be notified about timetable changes?" +#: aleksis/apps/chronos/preferences.py:21 +msgid "Timetables" msgstr "" -#: aleksis/apps/chronos/preferences.py:87 -msgid "Time for sending notifications about timetable changes" +#: aleksis/apps/chronos/preferences.py:29 +msgid "Use parent groups in timetable views" msgstr "" -#: aleksis/apps/chronos/preferences.py:90 -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." +#: aleksis/apps/chronos/preferences.py:31 +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 "" -#: aleksis/apps/chronos/preferences.py:101 -#: aleksis/apps/chronos/preferences.py:109 -msgid "Send notifications for current timetable changes" +#: aleksis/apps/chronos/preferences.py:42 +msgid "Shorten groups in timetable views" msgstr "" -#: aleksis/apps/chronos/tables.py:41 -msgid "Substitution" +#: aleksis/apps/chronos/preferences.py:43 +msgid "If there are more groups than the set limit, they will be collapsed." msgstr "" -#: aleksis/apps/chronos/tables.py:43 -msgid "Manage substitution" +#: aleksis/apps/chronos/preferences.py:51 +msgid "Limit of groups for shortening of groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:25 -msgid "No teachers timetables available." +#: aleksis/apps/chronos/preferences.py:53 +msgid "If a user activates shortening of groups,they will be collapsed if there are more groups than this limit." msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:39 -msgid "No group timetables available." +#: aleksis/apps/chronos/preferences.py:65 +msgid "Relevant days for substitution plans" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:53 -msgid "No room timetables available." +#: aleksis/apps/chronos/preferences.py:82 +msgid "Time when substitution plans switch to the next day" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:11 -msgid "Edit substitution." +#: aleksis/apps/chronos/preferences.py:91 +msgid "Number of days shown on substitutions print view" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:12 -msgid "Edit substitution" +#: aleksis/apps/chronos/preferences.py:99 +msgid "Show header box in substitution views" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:25 -msgid "Delete" +#: aleksis/apps/chronos/preferences.py:109 +msgid "Show parent groups in header box in substitution views instead of original groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19 -#: aleksis/apps/chronos/templates/chronos/timetable.html:50 -msgid "SMART PLAN" +#: aleksis/apps/chronos/preferences.py:118 +msgid "How many days in advance users should be notified about timetable changes?" msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22 -msgid "Show week timetable for" +#: aleksis/apps/chronos/preferences.py:126 +msgid "Time for sending notifications about timetable changes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 -msgid "Absent teachers" +#: aleksis/apps/chronos/preferences.py:129 +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 "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22 -msgid "Absent groups" +#: aleksis/apps/chronos/preferences.py:140 +#: aleksis/apps/chronos/preferences.py:148 +msgid "Send notifications for current timetable changes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34 -msgid "Affected teachers" +#: aleksis/apps/chronos/preferences.py:158 +msgid "Group types to show in timetables" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46 -msgid "Affected groups" +#: aleksis/apps/chronos/preferences.py:159 +msgid "If you leave it empty, all groups will be shown." msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/lesson.html:27 -msgid "Cancelled due to an event" +#: aleksis/apps/chronos/preferences.py:169 +msgid "Lesson calendar feed color" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 -msgid "Cancelled" +#: aleksis/apps/chronos/preferences.py:181 +msgid "Supervision calendar feed color" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6 -msgid "Cancelled for teachers" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 +msgid "Absent teachers" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/today.html:2 -msgid "Today" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22 +msgid "Absent groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36 -msgid "CW" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34 +msgid "Affected teachers" msgstr "" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:49 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 -msgid "Notes" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46 +msgid "Affected groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:57 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 -msgid "No substitutions available." +#: aleksis/apps/chronos/templates/chronos/partials/subs/period.html:12 +msgid "all day" msgstr "" #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 msgid "Print: Substitutions" msgstr "" -#: aleksis/apps/chronos/templates/chronos/timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/timetable.html:24 -#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11 -#: aleksis/apps/chronos/util/notifications.py:206 -msgid "Timetable" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:29 -msgid "Group teachers:" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:55 -msgid "Show regular timetable" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:63 -#: aleksis/apps/chronos/templates/chronos/timetable.html:84 -msgid "View class register of this week" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 +msgid "Substitutions" msgstr "" -#: aleksis/apps/chronos/templates/chronos/timetable.html:76 -msgid "Show SMART PLAN" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:27 +msgid "Time" msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:8 -#, python-format -msgid "" -"\n" -" My timetable for %(day)s\n" -" " +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 +msgid "Notes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:18 -msgid "" -"\n" -" There is no timetable linked to your person.\n" -" " +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 +msgid "No substitutions available." msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:27 -msgid "Go to smart plan" +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:2 +msgid "Areas" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:50 +#: aleksis/apps/chronos/util/notifications.py:48 #, python-brace-format msgid "The {subject} lesson in the {period}. period on {day} has been cancelled." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:57 +#: aleksis/apps/chronos/util/notifications.py:55 #, python-brace-format msgid "The {subject} lesson in the {period}. period on {day} has some current changes." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:66 +#: aleksis/apps/chronos/util/notifications.py:64 #, python-brace-format msgid "The teacher {old} is substituted by {new}." msgid_plural "The teachers {old} are substituted by {new}." msgstr[0] "" msgstr[1] "" -#: aleksis/apps/chronos/util/notifications.py:78 +#: aleksis/apps/chronos/util/notifications.py:76 #, python-brace-format msgid "The subject is changed to {subject}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:84 +#: aleksis/apps/chronos/util/notifications.py:82 #, python-brace-format msgid "The lesson is moved from {old} to {new}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:93 +#: aleksis/apps/chronos/util/notifications.py:91 #, python-brace-format msgid "There is an additional comment: {comment}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:101 +#: aleksis/apps/chronos/util/notifications.py:99 #, 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 "" -#: aleksis/apps/chronos/util/notifications.py:114 +#: aleksis/apps/chronos/util/notifications.py:112 #, python-brace-format msgid "There is an event on {date} from the {period_from}. period to the {period_to}. period:" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:125 -#: aleksis/apps/chronos/util/notifications.py:145 +#: aleksis/apps/chronos/util/notifications.py:123 +#: aleksis/apps/chronos/util/notifications.py:143 #, python-brace-format msgid "Groups: {groups}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:127 -#: aleksis/apps/chronos/util/notifications.py:149 +#: aleksis/apps/chronos/util/notifications.py:125 +#: aleksis/apps/chronos/util/notifications.py:147 #, python-brace-format msgid "Teachers: {teachers}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:130 +#: aleksis/apps/chronos/util/notifications.py:128 #, python-brace-format msgid "Rooms: {rooms}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:137 +#: aleksis/apps/chronos/util/notifications.py:135 #, python-brace-format msgid "There is an extra lesson on {date} in the {period}. period:" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:147 +#: aleksis/apps/chronos/util/notifications.py:145 #, python-brace-format msgid "Subject: {subject}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:151 +#: aleksis/apps/chronos/util/notifications.py:149 #, python-brace-format msgid "Room: {room}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:153 +#: aleksis/apps/chronos/util/notifications.py:151 #, python-brace-format msgid "Comment: {comment}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:156 +#: aleksis/apps/chronos/util/notifications.py:154 #, 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 "" -#: aleksis/apps/chronos/util/notifications.py:207 -msgid "There are current changes to your timetable." -msgstr "" - -#: aleksis/apps/chronos/views.py:270 -msgid "The substitution has been saved." +#: aleksis/apps/chronos/util/notifications.py:204 +msgid "Timetable" msgstr "" -#: aleksis/apps/chronos/views.py:291 -msgid "The substitution has been deleted." +#: aleksis/apps/chronos/util/notifications.py:205 +msgid "There are current changes to your timetable." msgstr "" diff --git a/aleksis/apps/chronos/locale/ru/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/ru/LC_MESSAGES/django.po index 2e3d3057579d8be2e8deb28753aa9446c82ca06e..1b0a45605bebc00ee478a4bec86722a8d2d2e4d2 100644 --- a/aleksis/apps/chronos/locale/ru/LC_MESSAGES/django.po +++ b/aleksis/apps/chronos/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-21 11:32+0200\n" +"POT-Creation-Date: 2024-08-18 14:23+0200\n" "PO-Revision-Date: 2023-05-26 04:38+0000\n" "Last-Translator: Serhii Horichenko <m@sgg.im>\n" "Language-Team: Russian <https://translate.edugit.org/projects/aleksis/aleksis-app-chronos/ru/>\n" @@ -18,76 +18,38 @@ msgstr "" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" "X-Generator: Weblate 4.12.1\n" -#: aleksis/apps/chronos/form_extensions.py:7 -msgid "Options for timetables" -msgstr "Опции Ð´Ð»Ñ Ñ€Ð°ÑпиÑаниÑ" - -#: aleksis/apps/chronos/form_extensions.py:8 -msgid "Optional data for timetables" -msgstr "Опциональные данные Ð´Ð»Ñ Ñ€Ð°ÑпиÑаниÑ" - -#: aleksis/apps/chronos/menus.py:6 aleksis/apps/chronos/preferences.py:10 -msgid "Timetables" -msgstr "РаÑпиÑаниÑ" - -#: aleksis/apps/chronos/menus.py:16 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18 -msgid "My timetable" -msgstr "Моё раÑпиÑание" - -#: aleksis/apps/chronos/menus.py:27 -#: aleksis/apps/chronos/templates/chronos/all.html:11 -#: aleksis/apps/chronos/templates/chronos/all.html:12 -msgid "All timetables" -msgstr "Ð’Ñе раÑпиÑаниÑ" - -#: aleksis/apps/chronos/menus.py:38 -msgid "Daily lessons" -msgstr "Ежедневные уроки" - -#: aleksis/apps/chronos/menus.py:49 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:11 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:17 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 -msgid "Substitutions" -msgstr "Замены" - #: aleksis/apps/chronos/mixins.py:25 msgid "Linked validity range" msgstr "СвÑзанный диапазон" -#: aleksis/apps/chronos/model_extensions.py:142 -msgid "Show announcement in timetable views?" -msgstr "Показывать объÑвление при проÑмотре раÑпиÑаниÑ?" - -#: aleksis/apps/chronos/model_extensions.py:151 +#: aleksis/apps/chronos/model_extensions.py:145 msgid "Can view group timetable" msgstr "Может проÑматривать групповые раÑпиÑаниÑ" -#: aleksis/apps/chronos/model_extensions.py:155 +#: aleksis/apps/chronos/model_extensions.py:149 msgid "Can view person timetable" msgstr "Может проÑматривать личные раÑпиÑаниÑ" -#: aleksis/apps/chronos/models.py:86 +#: aleksis/apps/chronos/models.py:87 msgid "School term" msgstr "Учебный год" -#: aleksis/apps/chronos/models.py:89 aleksis/apps/chronos/models.py:699 +#: aleksis/apps/chronos/models.py:90 aleksis/apps/chronos/models.py:626 +#: aleksis/apps/chronos/models.py:1310 msgid "Name" msgstr "Полное имÑ" -#: aleksis/apps/chronos/models.py:91 aleksis/apps/chronos/models.py:754 -#: aleksis/apps/chronos/models.py:829 aleksis/apps/chronos/models.py:1063 +#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:676 +#: aleksis/apps/chronos/models.py:747 aleksis/apps/chronos/models.py:979 msgid "Start date" msgstr "Дата начала" -#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:755 -#: aleksis/apps/chronos/models.py:830 aleksis/apps/chronos/models.py:1064 +#: aleksis/apps/chronos/models.py:93 aleksis/apps/chronos/models.py:677 +#: aleksis/apps/chronos/models.py:748 aleksis/apps/chronos/models.py:980 msgid "End date" msgstr "Дата окончаниÑ" -#: aleksis/apps/chronos/models.py:111 +#: aleksis/apps/chronos/models.py:112 msgid "The start date must be earlier than the end date." msgstr "Дата начала должна быть ранее даты окончаниÑ." @@ -107,461 +69,472 @@ msgstr "Контрольный период" msgid "Validity ranges" msgstr "Контрольные периоды" -#: aleksis/apps/chronos/models.py:150 +#: aleksis/apps/chronos/models.py:149 msgid "Week day" msgstr "День недели" -#: aleksis/apps/chronos/models.py:152 +#: aleksis/apps/chronos/models.py:151 msgid "Number of period" msgstr "Ðомер урока" -#: aleksis/apps/chronos/models.py:154 +#: aleksis/apps/chronos/models.py:153 msgid "Start time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°" -#: aleksis/apps/chronos/models.py:155 +#: aleksis/apps/chronos/models.py:154 msgid "End time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ" -#: aleksis/apps/chronos/models.py:338 aleksis/apps/chronos/models.py:525 -#: aleksis/apps/chronos/models.py:1193 +#: aleksis/apps/chronos/models.py:324 aleksis/apps/chronos/models.py:496 +#: aleksis/apps/chronos/models.py:1122 msgid "Time period" msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑƒÑ€Ð¾ÐºÐ°" -#: aleksis/apps/chronos/models.py:339 +#: aleksis/apps/chronos/models.py:325 msgid "Time periods" msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑƒÑ€Ð¾ÐºÐ¾Ð²" -#: aleksis/apps/chronos/models.py:343 aleksis/apps/chronos/models.py:364 -#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:875 -#: aleksis/apps/chronos/models.py:897 +#: aleksis/apps/chronos/models.py:329 aleksis/apps/chronos/models.py:625 +#: aleksis/apps/chronos/models.py:793 aleksis/apps/chronos/models.py:810 msgid "Short name" msgstr "Короткое имÑ" -#: aleksis/apps/chronos/models.py:344 aleksis/apps/chronos/models.py:365 -#: aleksis/apps/chronos/models.py:876 aleksis/apps/chronos/models.py:898 +#: aleksis/apps/chronos/models.py:330 aleksis/apps/chronos/models.py:794 +#: aleksis/apps/chronos/models.py:811 msgid "Long name" msgstr "Длинное имÑ" -#: aleksis/apps/chronos/models.py:346 +#: aleksis/apps/chronos/models.py:332 msgid "Foreground colour" msgstr "ОÑновной цвет" -#: aleksis/apps/chronos/models.py:347 +#: aleksis/apps/chronos/models.py:333 msgid "Background colour" msgstr "Фоновый цвет" -#: aleksis/apps/chronos/models.py:354 aleksis/apps/chronos/models.py:390 -#: aleksis/apps/chronos/models.py:446 aleksis/apps/chronos/models.py:1200 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:47 +#: aleksis/apps/chronos/models.py:340 aleksis/apps/chronos/models.py:349 +#: aleksis/apps/chronos/models.py:416 aleksis/apps/chronos/models.py:1129 +#: aleksis/apps/chronos/models.py:1345 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:2 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29 msgid "Subject" msgstr "Предмет" -#: aleksis/apps/chronos/models.py:355 +#: aleksis/apps/chronos/models.py:341 msgid "Subjects" msgstr "Предметы" -#: aleksis/apps/chronos/models.py:374 -msgid "Can view room timetable" -msgstr "Может проÑмативать раÑпиÑание комнаты" - -#: aleksis/apps/chronos/models.py:376 aleksis/apps/chronos/models.py:454 -#: aleksis/apps/chronos/models.py:533 aleksis/apps/chronos/models.py:751 -#: aleksis/apps/chronos/models.py:1215 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:48 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 -msgid "Room" -msgstr "Комната" - -#: aleksis/apps/chronos/models.py:377 aleksis/apps/chronos/models.py:1080 -#: aleksis/apps/chronos/templates/chronos/all.html:45 -msgid "Rooms" -msgstr "Комнаты" - -#: aleksis/apps/chronos/models.py:393 aleksis/apps/chronos/models.py:452 -#: aleksis/apps/chronos/models.py:1082 aleksis/apps/chronos/models.py:1208 -#: aleksis/apps/chronos/tables.py:35 -#: aleksis/apps/chronos/templates/chronos/all.html:17 +#: aleksis/apps/chronos/models.py:352 aleksis/apps/chronos/models.py:422 +#: aleksis/apps/chronos/models.py:998 aleksis/apps/chronos/models.py:1137 +#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:3 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28 +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:1 msgid "Teachers" msgstr "Преподаватели" -#: aleksis/apps/chronos/models.py:399 +#: aleksis/apps/chronos/models.py:358 msgid "Periods" msgstr "ЧаÑÑ‹" -#: aleksis/apps/chronos/models.py:401 aleksis/apps/chronos/models.py:1079 -#: aleksis/apps/chronos/models.py:1203 aleksis/apps/chronos/tables.py:34 -#: aleksis/apps/chronos/templates/chronos/all.html:31 +#: aleksis/apps/chronos/models.py:360 aleksis/apps/chronos/models.py:995 +#: aleksis/apps/chronos/models.py:1132 aleksis/apps/chronos/models.py:1326 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:1 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:26 msgid "Groups" msgstr "Группы" -#: aleksis/apps/chronos/models.py:424 aleksis/apps/chronos/models.py:519 -#: aleksis/apps/chronos/models.py:795 +#: aleksis/apps/chronos/models.py:394 aleksis/apps/chronos/models.py:490 +#: aleksis/apps/chronos/models.py:716 aleksis/apps/chronos/models.py:1430 +#: aleksis/apps/chronos/models.py:1454 msgid "Lesson" msgstr "Урок" -#: aleksis/apps/chronos/models.py:425 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19 +#: aleksis/apps/chronos/models.py:395 aleksis/apps/chronos/models.py:1306 msgid "Lessons" msgstr "Уроки" -#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:1187 +#: aleksis/apps/chronos/models.py:403 aleksis/apps/chronos/models.py:1116 msgid "Week" msgstr "ÐеделÑ" -#: aleksis/apps/chronos/models.py:434 aleksis/apps/chronos/models.py:1188 +#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:1117 msgid "Year" msgstr "Год" -#: aleksis/apps/chronos/models.py:437 aleksis/apps/chronos/models.py:654 +#: aleksis/apps/chronos/models.py:407 aleksis/apps/chronos/models.py:620 msgid "Lesson period" msgstr "Урок по порÑдку" -#: aleksis/apps/chronos/models.py:456 +#: aleksis/apps/chronos/models.py:425 aleksis/apps/chronos/models.py:504 +#: aleksis/apps/chronos/models.py:673 aleksis/apps/chronos/models.py:1144 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 +msgid "Room" +msgstr "Комната" + +#: aleksis/apps/chronos/models.py:428 msgid "Cancelled?" msgstr "Отменено?" -#: aleksis/apps/chronos/models.py:458 +#: aleksis/apps/chronos/models.py:430 msgid "Cancelled for teachers?" msgstr "Отменено Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹?" -#: aleksis/apps/chronos/models.py:461 aleksis/apps/chronos/models.py:770 -#: aleksis/apps/chronos/models.py:815 aleksis/apps/chronos/models.py:1218 +#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:692 +#: aleksis/apps/chronos/models.py:734 aleksis/apps/chronos/models.py:1147 +#: aleksis/apps/chronos/models.py:1357 msgid "Comment" msgstr "Коментарий" -#: aleksis/apps/chronos/models.py:465 +#: aleksis/apps/chronos/models.py:437 msgid "Lessons can only be either substituted or cancelled." msgstr "Уроки могут быть только заменены или отменены." -#: aleksis/apps/chronos/models.py:506 +#: aleksis/apps/chronos/models.py:477 msgid "Lesson substitution" msgstr "Замена урока" -#: aleksis/apps/chronos/models.py:507 +#: aleksis/apps/chronos/models.py:478 msgid "Lesson substitutions" msgstr "Замены уроков" -#: aleksis/apps/chronos/models.py:655 +#: aleksis/apps/chronos/models.py:621 msgid "Lesson periods" msgstr "Учебные чаÑÑ‹" -#: aleksis/apps/chronos/models.py:693 -msgid "Timetable widget" -msgstr "Виджет раÑпиÑаниÑ" - -#: aleksis/apps/chronos/models.py:694 -msgid "Timetable widgets" -msgstr "Виджеты раÑпиÑаниÑ" - -#: aleksis/apps/chronos/models.py:708 aleksis/apps/chronos/models.py:726 +#: aleksis/apps/chronos/models.py:635 aleksis/apps/chronos/models.py:648 msgid "Absence reason" msgstr "Причина отÑутÑтвиÑ" -#: aleksis/apps/chronos/models.py:709 +#: aleksis/apps/chronos/models.py:636 msgid "Absence reasons" msgstr "Причины отÑутÑтвиÑ" -#: aleksis/apps/chronos/models.py:735 aleksis/apps/chronos/models.py:976 -#: aleksis/apps/chronos/models.py:1027 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:46 +#: aleksis/apps/chronos/models.py:657 aleksis/apps/chronos/models.py:889 +#: aleksis/apps/chronos/models.py:943 msgid "Teacher" msgstr "Преподаватель" -#: aleksis/apps/chronos/models.py:743 +#: aleksis/apps/chronos/models.py:665 msgid "Group" msgstr "Группа" -#: aleksis/apps/chronos/models.py:759 aleksis/apps/chronos/models.py:802 +#: aleksis/apps/chronos/models.py:681 aleksis/apps/chronos/models.py:723 msgid "Start period" msgstr "Ðачало уроков" -#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:809 +#: aleksis/apps/chronos/models.py:688 aleksis/apps/chronos/models.py:729 msgid "End period" msgstr "Окончание уроков" -#: aleksis/apps/chronos/models.py:780 +#: aleksis/apps/chronos/models.py:702 msgid "Unknown absence" msgstr "ОтÑутÑтвие без уважительной причины" -#: aleksis/apps/chronos/models.py:786 +#: aleksis/apps/chronos/models.py:707 msgid "Absence" msgstr "ОтÑутÑтвие" -#: aleksis/apps/chronos/models.py:787 +#: aleksis/apps/chronos/models.py:708 msgid "Absences" msgstr "ПропуÑки" -#: aleksis/apps/chronos/models.py:798 +#: aleksis/apps/chronos/models.py:719 msgid "Date of exam" msgstr "Дата Ñкзамена" -#: aleksis/apps/chronos/models.py:814 aleksis/apps/chronos/models.py:828 -#: aleksis/apps/chronos/models.py:1061 +#: aleksis/apps/chronos/models.py:733 aleksis/apps/chronos/models.py:746 +#: aleksis/apps/chronos/models.py:977 msgid "Title" msgstr "Ðазвание" -#: aleksis/apps/chronos/models.py:821 +#: aleksis/apps/chronos/models.py:739 msgid "Exam" msgstr "Ðкзамен" -#: aleksis/apps/chronos/models.py:822 +#: aleksis/apps/chronos/models.py:740 msgid "Exams" msgstr "Ðкзамены" -#: aleksis/apps/chronos/models.py:831 +#: aleksis/apps/chronos/models.py:749 msgid "Comments" msgstr "Комментарии" -#: aleksis/apps/chronos/models.py:870 +#: aleksis/apps/chronos/models.py:788 msgid "Holiday" msgstr "Выходной" -#: aleksis/apps/chronos/models.py:871 +#: aleksis/apps/chronos/models.py:789 msgid "Holidays" msgstr "Выходные" -#: aleksis/apps/chronos/models.py:885 aleksis/apps/chronos/models.py:966 +#: aleksis/apps/chronos/models.py:803 aleksis/apps/chronos/models.py:879 msgid "Supervision area" msgstr "Зона контролÑ" -#: aleksis/apps/chronos/models.py:886 +#: aleksis/apps/chronos/models.py:804 msgid "Supervision areas" msgstr "Зоны контролÑ" -#: aleksis/apps/chronos/models.py:903 +#: aleksis/apps/chronos/models.py:816 msgid "Time period after break starts" msgstr "Учёба поÑле перерыва начинаетÑÑ" -#: aleksis/apps/chronos/models.py:911 +#: aleksis/apps/chronos/models.py:824 msgid "Time period before break ends" msgstr "Учёба перед перерывом заканчиваетÑÑ" -#: aleksis/apps/chronos/models.py:951 aleksis/apps/chronos/models.py:970 +#: aleksis/apps/chronos/models.py:864 aleksis/apps/chronos/models.py:883 msgid "Break" msgstr "Перерыв" -#: aleksis/apps/chronos/models.py:952 +#: aleksis/apps/chronos/models.py:865 msgid "Breaks" msgstr "Перерывы" -#: aleksis/apps/chronos/models.py:1007 aleksis/apps/chronos/models.py:1020 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23 -#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15 +#: aleksis/apps/chronos/models.py:923 aleksis/apps/chronos/models.py:936 +#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:3 msgid "Supervision" msgstr "Контроль" -#: aleksis/apps/chronos/models.py:1008 +#: aleksis/apps/chronos/models.py:924 aleksis/apps/chronos/models.py:1622 msgid "Supervisions" msgstr "Контроли" -#: aleksis/apps/chronos/models.py:1016 +#: aleksis/apps/chronos/models.py:932 msgid "Date" msgstr "Дата" -#: aleksis/apps/chronos/models.py:1050 +#: aleksis/apps/chronos/models.py:966 msgid "Supervision substitution" msgstr "Замена контролÑ" -#: aleksis/apps/chronos/models.py:1051 +#: aleksis/apps/chronos/models.py:967 msgid "Supervision substitutions" msgstr "Замены контролÑ" -#: aleksis/apps/chronos/models.py:1069 +#: aleksis/apps/chronos/models.py:985 msgid "Start time period" msgstr "Ðачало урока" -#: aleksis/apps/chronos/models.py:1075 +#: aleksis/apps/chronos/models.py:991 msgid "End time period" msgstr "Конец урока" -#: aleksis/apps/chronos/models.py:1089 +#: aleksis/apps/chronos/models.py:996 aleksis/apps/chronos/models.py:1332 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:4 +msgid "Rooms" +msgstr "Комнаты" + +#: aleksis/apps/chronos/models.py:1005 #, python-brace-format msgid "Event {pk}" msgstr "Событие {pk}" -#: aleksis/apps/chronos/models.py:1174 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27 +#: aleksis/apps/chronos/models.py:1103 msgid "Event" msgstr "Событие" -#: aleksis/apps/chronos/models.py:1175 +#: aleksis/apps/chronos/models.py:1104 msgid "Events" msgstr "СобытиÑ" -#: aleksis/apps/chronos/models.py:1221 +#: aleksis/apps/chronos/models.py:1152 msgid "Related exam" msgstr "СвÑзанные Ñкзамены" -#: aleksis/apps/chronos/models.py:1244 +#: aleksis/apps/chronos/models.py:1181 msgid "Extra lesson" msgstr "Дополнительный урок" -#: aleksis/apps/chronos/models.py:1245 +#: aleksis/apps/chronos/models.py:1182 msgid "Extra lessons" msgstr "Дополнительные уроки" -#: aleksis/apps/chronos/models.py:1257 +#: aleksis/apps/chronos/models.py:1194 msgid "Number of days shown in the plan" msgstr "КоличеÑтво дней Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² плане" -#: aleksis/apps/chronos/models.py:1261 +#: aleksis/apps/chronos/models.py:1198 msgid "Show header box" msgstr "Показать заголовок" -#: aleksis/apps/chronos/models.py:1262 aleksis/apps/chronos/preferences.py:61 +#: aleksis/apps/chronos/models.py:1199 aleksis/apps/chronos/preferences.py:100 msgid "The header box shows affected teachers/groups." msgstr "Заголовок отображает преподавателей/группы, на которых влиÑет." -#: aleksis/apps/chronos/models.py:1269 +#: aleksis/apps/chronos/models.py:1206 msgid "Revision which triggered the last update" msgstr "РевизиÑ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²Ñ‹Ð·Ð²Ð°Ð»Ð° поÑледнее обновление" -#: aleksis/apps/chronos/models.py:1330 +#: aleksis/apps/chronos/models.py:1278 msgid "Automatic plan" msgstr "ÐвтоматичеÑкий план" -#: aleksis/apps/chronos/models.py:1331 +#: aleksis/apps/chronos/models.py:1279 msgid "Automatic plans" msgstr "ÐвтоматичеÑкие планы" -#: aleksis/apps/chronos/models.py:1345 +#: aleksis/apps/chronos/models.py:1293 msgid "Can view all room timetables" msgstr "Может проÑматривать раÑпиÑÐ°Ð½Ð¸Ñ Ð²Ñех комнат" -#: aleksis/apps/chronos/models.py:1346 +#: aleksis/apps/chronos/models.py:1294 msgid "Can view all group timetables" msgstr "Может проÑматривать раÑпиÑÐ°Ð½Ð¸Ñ Ð²Ñех групп" -#: aleksis/apps/chronos/models.py:1347 +#: aleksis/apps/chronos/models.py:1295 msgid "Can view all person timetables" msgstr "Может проÑматривать раÑпиÑÐ°Ð½Ð¸Ñ Ð²Ñех людей" -#: aleksis/apps/chronos/models.py:1348 +#: aleksis/apps/chronos/models.py:1296 msgid "Can view timetable overview" msgstr "Может проÑматривать общее раÑпиÑание" -#: aleksis/apps/chronos/models.py:1349 +#: aleksis/apps/chronos/models.py:1297 msgid "Can view all lessons per day" msgstr "Может проÑматривать вÑе уроки за день" -#: aleksis/apps/chronos/preferences.py:18 -msgid "Use parent groups in timetable views" -msgstr "ИÑпользовать родительÑкие группы в обзорах раÑпиÑаниÑ" +#: aleksis/apps/chronos/models.py:1298 +#, fuzzy +#| msgid "Can view all lessons per day" +msgid "Can view all supervisions per day" +msgstr "Может проÑматривать вÑе уроки за день" -#: aleksis/apps/chronos/preferences.py:20 -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." +#: aleksis/apps/chronos/models.py:1313 +#, fuzzy +#| msgid "Start time" +msgid "Start slot number" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°" + +#: aleksis/apps/chronos/models.py:1316 +#, fuzzy +#| msgid "End time" +msgid "End slot number" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ" + +#: aleksis/apps/chronos/models.py:1320 +msgid "Course" +msgstr "" + +#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 +msgid "Cancelled" +msgstr "Отменено" + +#: aleksis/apps/chronos/models.py:1401 aleksis/apps/chronos/models.py:1413 +#: aleksis/apps/chronos/models.py:1425 +msgid "{} (instead of {})" msgstr "" -"ЕÑли у урока или у замены только одна группа и у Ñтой группы еÑть " -"родительÑкие группы, отображать их вмеÑто оригинальной группы." + +#: aleksis/apps/chronos/models.py:1614 +#, fuzzy +#| msgid "Lesson" +msgid "Lesson Event" +msgstr "Урок" + +#: aleksis/apps/chronos/models.py:1615 +#, fuzzy +#| msgid "Lessons" +msgid "Lesson Events" +msgstr "Уроки" + +#: aleksis/apps/chronos/models.py:1630 +#, fuzzy +#| msgid "Supervision" +msgid "Supervision: {}" +msgstr "Контроль" + +#: aleksis/apps/chronos/preferences.py:21 +msgid "Timetables" +msgstr "РаÑпиÑаниÑ" + +#: aleksis/apps/chronos/preferences.py:29 +msgid "Use parent groups in timetable views" +msgstr "ИÑпользовать родительÑкие группы в обзорах раÑпиÑаниÑ" #: aleksis/apps/chronos/preferences.py:31 +#, fuzzy +#| 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." +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 "ЕÑли у урока или у замены только одна группа и у Ñтой группы еÑть родительÑкие группы, отображать их вмеÑто оригинальной группы." + +#: aleksis/apps/chronos/preferences.py:42 msgid "Shorten groups in timetable views" msgstr "Сокращать группы в обзорах раÑпиÑаниÑ" -#: aleksis/apps/chronos/preferences.py:32 +#: aleksis/apps/chronos/preferences.py:43 msgid "If there are more groups than the set limit, they will be collapsed." -msgstr "" -"ЕÑли количеÑтво групп больше уÑтановленного лимита, они будут Ñгруппированы." +msgstr "ЕÑли количеÑтво групп больше уÑтановленного лимита, они будут Ñгруппированы." -#: aleksis/apps/chronos/preferences.py:40 +#: aleksis/apps/chronos/preferences.py:51 msgid "Limit of groups for shortening of groups" msgstr "Лимит количеÑтва групп Ð´Ð»Ñ ÑÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿" -#: aleksis/apps/chronos/preferences.py:42 -msgid "" -"If an user activates shortening of groups,they will be collapsed if there " -"are more groups than this limit." +#: aleksis/apps/chronos/preferences.py:53 +#, fuzzy +#| msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit." +msgid "If a user activates shortening of groups,they will be collapsed if there are more groups than this limit." +msgstr "ЕÑли пользователь активирует Ñокращение групп и количеÑтво больше уÑтановленного лимита, они группируютÑÑ." + +#: aleksis/apps/chronos/preferences.py:65 +#, fuzzy +#| msgid "Lesson substitutions" +msgid "Relevant days for substitution plans" +msgstr "Замены уроков" + +#: aleksis/apps/chronos/preferences.py:82 +msgid "Time when substitution plans switch to the next day" msgstr "" -"ЕÑли пользователь активирует Ñокращение групп и количеÑтво больше " -"уÑтановленного лимита, они группируютÑÑ." -#: aleksis/apps/chronos/preferences.py:52 +#: aleksis/apps/chronos/preferences.py:91 msgid "Number of days shown on substitutions print view" msgstr "КоличеÑтво дней Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² печатном виде замен" -#: aleksis/apps/chronos/preferences.py:60 +#: aleksis/apps/chronos/preferences.py:99 msgid "Show header box in substitution views" msgstr "Отображать заголовок в обзоре замен" -#: aleksis/apps/chronos/preferences.py:70 -msgid "" -"Show parent groups in header box in substitution views instead of original " -"groups" -msgstr "" -"Ð’ заголовке обзора замен отображать родительÑкие группы вмеÑто оригинальных" +#: aleksis/apps/chronos/preferences.py:109 +msgid "Show parent groups in header box in substitution views instead of original groups" +msgstr "Ð’ заголовке обзора замен отображать родительÑкие группы вмеÑто оригинальных" -#: aleksis/apps/chronos/preferences.py:79 -msgid "" -"How many days in advance users should be notified about timetable changes?" -msgstr "" -"За Ñколько дней до изменений в раÑпиÑании необходимо уведомлÑть " -"пользователей?" +#: aleksis/apps/chronos/preferences.py:118 +msgid "How many days in advance users should be notified about timetable changes?" +msgstr "За Ñколько дней до изменений в раÑпиÑании необходимо уведомлÑть пользователей?" -#: aleksis/apps/chronos/preferences.py:87 +#: aleksis/apps/chronos/preferences.py:126 msgid "Time for sending notifications about timetable changes" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ уведомлений об изменениÑÑ… в раÑпиÑании" -#: aleksis/apps/chronos/preferences.py:90 -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 "" -"Ðто иÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹, которые не влиÑÑŽÑ‚ на " -"Ð²Ñ€ÐµÐ¼Ñ ÑƒÑ€Ð¾ÐºÐ¾Ð², наÑтроенных выше. Ð’Ñе другие уведомлениÑ, которые влиÑÑŽÑ‚ на " -"ближайшие дни, отправлÑÑŽÑ‚ÑÑ Ð½ÐµÐ·Ð°Ð¼ÐµÐ´Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾." +#: aleksis/apps/chronos/preferences.py:129 +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 "Ðто иÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹, которые не влиÑÑŽÑ‚ на Ð²Ñ€ÐµÐ¼Ñ ÑƒÑ€Ð¾ÐºÐ¾Ð², наÑтроенных выше. Ð’Ñе другие уведомлениÑ, которые влиÑÑŽÑ‚ на ближайшие дни, отправлÑÑŽÑ‚ÑÑ Ð½ÐµÐ·Ð°Ð¼ÐµÐ´Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾." -#: aleksis/apps/chronos/preferences.py:101 -#: aleksis/apps/chronos/preferences.py:109 +#: aleksis/apps/chronos/preferences.py:140 +#: aleksis/apps/chronos/preferences.py:148 msgid "Send notifications for current timetable changes" msgstr "Отправить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ текущих изменениÑÑ… в раÑпиÑании" -#: aleksis/apps/chronos/tables.py:41 -msgid "Substitution" -msgstr "Замена" - -#: aleksis/apps/chronos/tables.py:43 -msgid "Manage substitution" -msgstr "Управление заменами" - -#: aleksis/apps/chronos/templates/chronos/all.html:25 -msgid "No teachers timetables available." -msgstr "РаÑпиÑÐ°Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ недоÑтупны." - -#: aleksis/apps/chronos/templates/chronos/all.html:39 -msgid "No group timetables available." -msgstr "РаÑпиÑÐ°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿ недоÑтупны." - -#: aleksis/apps/chronos/templates/chronos/all.html:53 -msgid "No room timetables available." -msgstr "РаÑпиÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚ недоÑтупны." - -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:6 -msgid "Edit substitution." -msgstr "Редактировать замену." - -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:7 -msgid "Edit substitution" -msgstr "Редактировать замену" +#: aleksis/apps/chronos/preferences.py:158 +#, fuzzy +#| msgid "Shorten groups in timetable views" +msgid "Group types to show in timetables" +msgstr "Сокращать группы в обзорах раÑпиÑаниÑ" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:20 -msgid "Delete" -msgstr "Удалить" +#: aleksis/apps/chronos/preferences.py:159 +msgid "If you leave it empty, all groups will be shown." +msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19 -#: aleksis/apps/chronos/templates/chronos/timetable.html:50 -msgid "SMART PLAN" -msgstr "SMART PLAN" +#: aleksis/apps/chronos/preferences.py:169 +msgid "Lesson calendar feed color" +msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22 -msgid "Show week timetable for" -msgstr "Отобразить недельное раÑпиÑание длÑ" +#: aleksis/apps/chronos/preferences.py:181 +#, fuzzy +#| msgid "Supervision area" +msgid "Supervision calendar feed color" +msgstr "Зона контролÑ" #: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 msgid "Absent teachers" @@ -579,104 +552,47 @@ msgstr "Ðа каких преподавателей влиÑет" msgid "Affected groups" msgstr "Ðа какие группы влиÑет" -#: aleksis/apps/chronos/templates/chronos/partials/lesson.html:27 -msgid "Cancelled due to an event" -msgstr "Отменено из-за ÑобытиÑ" - -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 -msgid "Cancelled" -msgstr "Отменено" +#: aleksis/apps/chronos/templates/chronos/partials/subs/period.html:12 +msgid "all day" +msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6 -msgid "Cancelled for teachers" -msgstr "Отменено Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 +msgid "Print: Substitutions" +msgstr "Печать: Замены" -#: aleksis/apps/chronos/templates/chronos/partials/today.html:2 -msgid "Today" -msgstr "СегоднÑ" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 +msgid "Substitutions" +msgstr "Замены" -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36 -msgid "CW" -msgstr "ÐД" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:27 +#, fuzzy +#| msgid "Timetable" +msgid "Time" +msgstr "РаÑпиÑание" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:49 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 msgid "Notes" msgstr "Заметки" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:57 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 msgid "No substitutions available." msgstr "Замены недоÑтупны." -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 -msgid "Print: Substitutions" -msgstr "Печать: Замены" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/timetable.html:24 -#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11 -#: aleksis/apps/chronos/util/notifications.py:206 -msgid "Timetable" -msgstr "РаÑпиÑание" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:29 -msgid "Group teachers:" -msgstr "Преподаватели групп:" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:55 -msgid "Show regular timetable" -msgstr "Показать обычное раÑпиÑание" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:63 -msgid "View class register of this week" -msgstr "Обзор клаÑÑного журнала за Ñту неделю" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:76 -msgid "Show SMART PLAN" -msgstr "Показать SMART PLAN" - -#: aleksis/apps/chronos/templates/chronos/widget.html:8 -#, python-format -msgid "" -"\n" -" My timetable for %(day)s\n" -" " -msgstr "" -"\n" -" Моё раÑпиÑание на %(day)s\n" -" " - -#: aleksis/apps/chronos/templates/chronos/widget.html:18 -msgid "" -"\n" -" There is no timetable linked to your person.\n" -" " +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:2 +msgid "Areas" msgstr "" -"\n" -" К Вашей перÑоне не привÑзан ни один журнал.\n" -" " - -#: aleksis/apps/chronos/templates/chronos/widget.html:27 -msgid "Go to smart plan" -msgstr "Перейти к SMART PLAN" -#: aleksis/apps/chronos/util/notifications.py:50 +#: aleksis/apps/chronos/util/notifications.py:48 #, 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 "Урок {subject} на {period} уроке {day} отменён." -#: aleksis/apps/chronos/util/notifications.py:57 +#: aleksis/apps/chronos/util/notifications.py:55 #, python-brace-format -msgid "" -"The {subject} lesson in the {period}. period on {day} has some current " -"changes." +msgid "The {subject} lesson in the {period}. period on {day} has some current changes." msgstr "Ð’ урок {subject} на {period} уроке {day} внеÑены некоторые изменениÑ." -#: aleksis/apps/chronos/util/notifications.py:66 +#: aleksis/apps/chronos/util/notifications.py:64 #, python-brace-format msgid "The teacher {old} is substituted by {new}." msgid_plural "The teachers {old} are substituted by {new}." @@ -685,97 +601,189 @@ msgstr[1] "Преподаватели {old} заменены преподава msgstr[2] "Преподаватели {old} заменены преподавателÑми {new}." msgstr[3] "Преподаватели {old} заменены преподавателÑми {new}." -#: aleksis/apps/chronos/util/notifications.py:78 +#: aleksis/apps/chronos/util/notifications.py:76 #, python-brace-format msgid "The subject is changed to {subject}." msgstr "Предмет заменён на {subject}." -#: aleksis/apps/chronos/util/notifications.py:84 +#: aleksis/apps/chronos/util/notifications.py:82 #, python-brace-format msgid "The lesson is moved from {old} to {new}." msgstr "Урок перенеÑён Ñ {old} на {new}." -#: aleksis/apps/chronos/util/notifications.py:93 +#: aleksis/apps/chronos/util/notifications.py:91 #, python-brace-format msgid "There is an additional comment: {comment}." msgstr "ПриÑутÑтвует дополнительный комментарий: {comment}." -#: aleksis/apps/chronos/util/notifications.py:101 +#: aleksis/apps/chronos/util/notifications.py:99 #, 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 "" -"Запланировано мероприÑтие, которое начинаетÑÑ {date_start}, на " -"{period_from}. уроке и заканчиваетÑÑ {date_end}, на {period_to}. уроке:" +msgid "There is an event that starts on {date_start}, {period_from}. period and ends on {date_end}, {period_to}. period:" +msgstr "Запланировано мероприÑтие, которое начинаетÑÑ {date_start}, на {period_from}. уроке и заканчиваетÑÑ {date_end}, на {period_to}. уроке:" -#: aleksis/apps/chronos/util/notifications.py:114 +#: aleksis/apps/chronos/util/notifications.py:112 #, python-brace-format -msgid "" -"There is an event on {date} from the {period_from}. period to the " -"{period_to}. period:" -msgstr "" -"Запланировано мероприÑтие {date} Ñ {period_from}. урока до {period_to}. " -"урока:" +msgid "There is an event on {date} from the {period_from}. period to the {period_to}. period:" +msgstr "Запланировано мероприÑтие {date} Ñ {period_from}. урока до {period_to}. урока:" -#: aleksis/apps/chronos/util/notifications.py:125 -#: aleksis/apps/chronos/util/notifications.py:145 +#: aleksis/apps/chronos/util/notifications.py:123 +#: aleksis/apps/chronos/util/notifications.py:143 #, python-brace-format msgid "Groups: {groups}" msgstr "Группы: {groups}" -#: aleksis/apps/chronos/util/notifications.py:127 -#: aleksis/apps/chronos/util/notifications.py:149 +#: aleksis/apps/chronos/util/notifications.py:125 +#: aleksis/apps/chronos/util/notifications.py:147 #, python-brace-format msgid "Teachers: {teachers}" msgstr "Преподаватели: {teachers}" -#: aleksis/apps/chronos/util/notifications.py:130 +#: aleksis/apps/chronos/util/notifications.py:128 #, python-brace-format msgid "Rooms: {rooms}" msgstr "Комнаты: {rooms}" -#: aleksis/apps/chronos/util/notifications.py:137 +#: aleksis/apps/chronos/util/notifications.py:135 #, python-brace-format msgid "There is an extra lesson on {date} in the {period}. period:" msgstr "Запланирован дополнительный урок {date} на {period}. уроке:" -#: aleksis/apps/chronos/util/notifications.py:147 +#: aleksis/apps/chronos/util/notifications.py:145 #, python-brace-format msgid "Subject: {subject}" msgstr "Предмет: {subject}" -#: aleksis/apps/chronos/util/notifications.py:151 +#: aleksis/apps/chronos/util/notifications.py:149 #, python-brace-format msgid "Room: {room}" msgstr "Комната: {room}" -#: aleksis/apps/chronos/util/notifications.py:153 +#: aleksis/apps/chronos/util/notifications.py:151 #, python-brace-format msgid "Comment: {comment}." msgstr "Комментарий: {comment}." -#: aleksis/apps/chronos/util/notifications.py:156 +#: aleksis/apps/chronos/util/notifications.py:154 #, 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 "" -"Контроль {old}, {date} между {period_from}. и {period_to}. уроками в зоне " -"{area} заменён на {new}." +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 "Контроль {old}, {date} между {period_from}. и {period_to}. уроками в зоне {area} заменён на {new}." -#: aleksis/apps/chronos/util/notifications.py:207 +#: aleksis/apps/chronos/util/notifications.py:204 +msgid "Timetable" +msgstr "РаÑпиÑание" + +#: aleksis/apps/chronos/util/notifications.py:205 msgid "There are current changes to your timetable." msgstr "У Ð’Ð°Ñ Ð² раÑпиÑании произошли изменениÑ." -#: aleksis/apps/chronos/views.py:270 -msgid "The substitution has been saved." -msgstr "Замена Ñохранена." +#~ msgid "Options for timetables" +#~ msgstr "Опции Ð´Ð»Ñ Ñ€Ð°ÑпиÑаниÑ" + +#~ msgid "Optional data for timetables" +#~ msgstr "Опциональные данные Ð´Ð»Ñ Ñ€Ð°ÑпиÑаниÑ" + +#~ msgid "My timetable" +#~ msgstr "Моё раÑпиÑание" + +#~ msgid "All timetables" +#~ msgstr "Ð’Ñе раÑпиÑаниÑ" + +#~ msgid "Daily lessons" +#~ msgstr "Ежедневные уроки" + +#~ msgid "Show announcement in timetable views?" +#~ msgstr "Показывать объÑвление при проÑмотре раÑпиÑаниÑ?" + +#~ msgid "Can view room timetable" +#~ msgstr "Может проÑмативать раÑпиÑание комнаты" + +#~ msgid "Timetable widget" +#~ msgstr "Виджет раÑпиÑаниÑ" -#: aleksis/apps/chronos/views.py:291 -msgid "The substitution has been deleted." -msgstr "Замена удалена." +#~ msgid "Timetable widgets" +#~ msgstr "Виджеты раÑпиÑаниÑ" -#: aleksis/apps/chronos/templates/chronos/timetable.html:84 -msgid "View class register of the current week" -msgstr "Обзор клаÑÑного журнала за текущую неделю" +#~ msgid "Substitution" +#~ msgstr "Замена" + +#~ msgid "Manage substitution" +#~ msgstr "Управление заменами" + +#~ msgid "No teachers timetables available." +#~ msgstr "РаÑпиÑÐ°Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ недоÑтупны." + +#~ msgid "No group timetables available." +#~ msgstr "РаÑпиÑÐ°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿ недоÑтупны." + +#~ msgid "No room timetables available." +#~ msgstr "РаÑпиÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚ недоÑтупны." + +#~ msgid "Edit substitution." +#~ msgstr "Редактировать замену." + +#~ msgid "Edit substitution" +#~ msgstr "Редактировать замену" + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#~ msgid "SMART PLAN" +#~ msgstr "SMART PLAN" + +#~ msgid "Show week timetable for" +#~ msgstr "Отобразить недельное раÑпиÑание длÑ" + +#~ msgid "Cancelled due to an event" +#~ msgstr "Отменено из-за ÑобытиÑ" + +#~ msgid "Cancelled for teachers" +#~ msgstr "Отменено Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹" + +#~ msgid "Today" +#~ msgstr "СегоднÑ" + +#~ msgid "CW" +#~ msgstr "ÐД" + +#~ msgid "Group teachers:" +#~ msgstr "Преподаватели групп:" + +#~ msgid "Show regular timetable" +#~ msgstr "Показать обычное раÑпиÑание" + +#~ msgid "View class register of this week" +#~ msgstr "Обзор клаÑÑного журнала за Ñту неделю" + +#~ msgid "Show SMART PLAN" +#~ msgstr "Показать SMART PLAN" + +#, python-format +#~ msgid "" +#~ "\n" +#~ " My timetable for %(day)s\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " Моё раÑпиÑание на %(day)s\n" +#~ " " + +#~ msgid "" +#~ "\n" +#~ " There is no timetable linked to your person.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " К Вашей перÑоне не привÑзан ни один журнал.\n" +#~ " " + +#~ msgid "Go to smart plan" +#~ msgstr "Перейти к SMART PLAN" + +#~ msgid "The substitution has been saved." +#~ msgstr "Замена Ñохранена." + +#~ msgid "The substitution has been deleted." +#~ msgstr "Замена удалена." + +#~ msgid "View class register of the current week" +#~ msgstr "Обзор клаÑÑного журнала за текущую неделю" diff --git a/aleksis/apps/chronos/locale/tr_TR/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/tr_TR/LC_MESSAGES/django.po index f4190ee2c3668ce8a8a236aa9dbb007292e467a9..cfc760f01b3206aaf7123340eccf529e9e4db354 100644 --- a/aleksis/apps/chronos/locale/tr_TR/LC_MESSAGES/django.po +++ b/aleksis/apps/chronos/locale/tr_TR/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-21 11:32+0200\n" +"POT-Creation-Date: 2024-08-18 14:23+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,76 +17,38 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: aleksis/apps/chronos/form_extensions.py:7 -msgid "Options for timetables" -msgstr "" - -#: aleksis/apps/chronos/form_extensions.py:8 -msgid "Optional data for timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:6 aleksis/apps/chronos/preferences.py:10 -msgid "Timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:16 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18 -msgid "My timetable" -msgstr "" - -#: aleksis/apps/chronos/menus.py:27 -#: aleksis/apps/chronos/templates/chronos/all.html:11 -#: aleksis/apps/chronos/templates/chronos/all.html:12 -msgid "All timetables" -msgstr "" - -#: aleksis/apps/chronos/menus.py:38 -msgid "Daily lessons" -msgstr "" - -#: aleksis/apps/chronos/menus.py:49 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:11 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:17 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 -msgid "Substitutions" -msgstr "" - #: aleksis/apps/chronos/mixins.py:25 msgid "Linked validity range" msgstr "" -#: aleksis/apps/chronos/model_extensions.py:142 -msgid "Show announcement in timetable views?" -msgstr "" - -#: aleksis/apps/chronos/model_extensions.py:151 +#: aleksis/apps/chronos/model_extensions.py:145 msgid "Can view group timetable" msgstr "" -#: aleksis/apps/chronos/model_extensions.py:155 +#: aleksis/apps/chronos/model_extensions.py:149 msgid "Can view person timetable" msgstr "" -#: aleksis/apps/chronos/models.py:86 +#: aleksis/apps/chronos/models.py:87 msgid "School term" msgstr "" -#: aleksis/apps/chronos/models.py:89 aleksis/apps/chronos/models.py:699 +#: aleksis/apps/chronos/models.py:90 aleksis/apps/chronos/models.py:626 +#: aleksis/apps/chronos/models.py:1310 msgid "Name" msgstr "" -#: aleksis/apps/chronos/models.py:91 aleksis/apps/chronos/models.py:754 -#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:1061 +#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:676 +#: aleksis/apps/chronos/models.py:747 aleksis/apps/chronos/models.py:979 msgid "Start date" msgstr "" -#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:755 -#: aleksis/apps/chronos/models.py:828 aleksis/apps/chronos/models.py:1062 +#: aleksis/apps/chronos/models.py:93 aleksis/apps/chronos/models.py:677 +#: aleksis/apps/chronos/models.py:748 aleksis/apps/chronos/models.py:980 msgid "End date" msgstr "" -#: aleksis/apps/chronos/models.py:111 +#: aleksis/apps/chronos/models.py:112 msgid "The start date must be earlier than the end date." msgstr "" @@ -106,628 +68,583 @@ msgstr "" msgid "Validity ranges" msgstr "" -#: aleksis/apps/chronos/models.py:150 +#: aleksis/apps/chronos/models.py:149 msgid "Week day" msgstr "" -#: aleksis/apps/chronos/models.py:152 +#: aleksis/apps/chronos/models.py:151 msgid "Number of period" msgstr "" -#: aleksis/apps/chronos/models.py:154 +#: aleksis/apps/chronos/models.py:153 msgid "Start time" msgstr "" -#: aleksis/apps/chronos/models.py:155 +#: aleksis/apps/chronos/models.py:154 msgid "End time" msgstr "" -#: aleksis/apps/chronos/models.py:338 aleksis/apps/chronos/models.py:525 -#: aleksis/apps/chronos/models.py:1191 +#: aleksis/apps/chronos/models.py:324 aleksis/apps/chronos/models.py:496 +#: aleksis/apps/chronos/models.py:1122 msgid "Time period" msgstr "" -#: aleksis/apps/chronos/models.py:339 +#: aleksis/apps/chronos/models.py:325 msgid "Time periods" msgstr "" -#: aleksis/apps/chronos/models.py:343 aleksis/apps/chronos/models.py:364 -#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:873 -#: aleksis/apps/chronos/models.py:895 +#: aleksis/apps/chronos/models.py:329 aleksis/apps/chronos/models.py:625 +#: aleksis/apps/chronos/models.py:793 aleksis/apps/chronos/models.py:810 msgid "Short name" msgstr "" -#: aleksis/apps/chronos/models.py:344 aleksis/apps/chronos/models.py:365 -#: aleksis/apps/chronos/models.py:874 aleksis/apps/chronos/models.py:896 +#: aleksis/apps/chronos/models.py:330 aleksis/apps/chronos/models.py:794 +#: aleksis/apps/chronos/models.py:811 msgid "Long name" msgstr "" -#: aleksis/apps/chronos/models.py:346 +#: aleksis/apps/chronos/models.py:332 msgid "Foreground colour" msgstr "" -#: aleksis/apps/chronos/models.py:347 +#: aleksis/apps/chronos/models.py:333 msgid "Background colour" msgstr "" -#: aleksis/apps/chronos/models.py:354 aleksis/apps/chronos/models.py:390 -#: aleksis/apps/chronos/models.py:446 aleksis/apps/chronos/models.py:1198 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:47 +#: aleksis/apps/chronos/models.py:340 aleksis/apps/chronos/models.py:349 +#: aleksis/apps/chronos/models.py:416 aleksis/apps/chronos/models.py:1129 +#: aleksis/apps/chronos/models.py:1345 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:2 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29 msgid "Subject" msgstr "" -#: aleksis/apps/chronos/models.py:355 +#: aleksis/apps/chronos/models.py:341 msgid "Subjects" msgstr "" -#: aleksis/apps/chronos/models.py:374 -msgid "Can view room timetable" -msgstr "" - -#: aleksis/apps/chronos/models.py:376 aleksis/apps/chronos/models.py:454 -#: aleksis/apps/chronos/models.py:533 aleksis/apps/chronos/models.py:751 -#: aleksis/apps/chronos/models.py:1213 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:48 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 -msgid "Room" -msgstr "" - -#: aleksis/apps/chronos/models.py:377 aleksis/apps/chronos/models.py:1078 -#: aleksis/apps/chronos/templates/chronos/all.html:45 -msgid "Rooms" -msgstr "" - -#: aleksis/apps/chronos/models.py:393 aleksis/apps/chronos/models.py:452 -#: aleksis/apps/chronos/models.py:1080 aleksis/apps/chronos/models.py:1206 -#: aleksis/apps/chronos/tables.py:35 -#: aleksis/apps/chronos/templates/chronos/all.html:17 +#: aleksis/apps/chronos/models.py:352 aleksis/apps/chronos/models.py:422 +#: aleksis/apps/chronos/models.py:998 aleksis/apps/chronos/models.py:1137 +#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:3 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28 +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:1 msgid "Teachers" msgstr "" -#: aleksis/apps/chronos/models.py:399 +#: aleksis/apps/chronos/models.py:358 msgid "Periods" msgstr "" -#: aleksis/apps/chronos/models.py:401 aleksis/apps/chronos/models.py:1077 -#: aleksis/apps/chronos/models.py:1201 aleksis/apps/chronos/tables.py:34 -#: aleksis/apps/chronos/templates/chronos/all.html:31 +#: aleksis/apps/chronos/models.py:360 aleksis/apps/chronos/models.py:995 +#: aleksis/apps/chronos/models.py:1132 aleksis/apps/chronos/models.py:1326 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:1 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:26 msgid "Groups" msgstr "" -#: aleksis/apps/chronos/models.py:424 aleksis/apps/chronos/models.py:519 -#: aleksis/apps/chronos/models.py:795 +#: aleksis/apps/chronos/models.py:394 aleksis/apps/chronos/models.py:490 +#: aleksis/apps/chronos/models.py:716 aleksis/apps/chronos/models.py:1430 +#: aleksis/apps/chronos/models.py:1454 msgid "Lesson" msgstr "" -#: aleksis/apps/chronos/models.py:425 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19 +#: aleksis/apps/chronos/models.py:395 aleksis/apps/chronos/models.py:1306 msgid "Lessons" msgstr "" -#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:1185 +#: aleksis/apps/chronos/models.py:403 aleksis/apps/chronos/models.py:1116 msgid "Week" msgstr "" -#: aleksis/apps/chronos/models.py:434 aleksis/apps/chronos/models.py:1186 +#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:1117 msgid "Year" msgstr "" -#: aleksis/apps/chronos/models.py:437 aleksis/apps/chronos/models.py:654 +#: aleksis/apps/chronos/models.py:407 aleksis/apps/chronos/models.py:620 msgid "Lesson period" msgstr "" -#: aleksis/apps/chronos/models.py:456 +#: aleksis/apps/chronos/models.py:425 aleksis/apps/chronos/models.py:504 +#: aleksis/apps/chronos/models.py:673 aleksis/apps/chronos/models.py:1144 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 +msgid "Room" +msgstr "" + +#: aleksis/apps/chronos/models.py:428 msgid "Cancelled?" msgstr "" -#: aleksis/apps/chronos/models.py:458 +#: aleksis/apps/chronos/models.py:430 msgid "Cancelled for teachers?" msgstr "" -#: aleksis/apps/chronos/models.py:461 aleksis/apps/chronos/models.py:770 -#: aleksis/apps/chronos/models.py:813 aleksis/apps/chronos/models.py:1216 +#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:692 +#: aleksis/apps/chronos/models.py:734 aleksis/apps/chronos/models.py:1147 +#: aleksis/apps/chronos/models.py:1357 msgid "Comment" msgstr "" -#: aleksis/apps/chronos/models.py:465 +#: aleksis/apps/chronos/models.py:437 msgid "Lessons can only be either substituted or cancelled." msgstr "" -#: aleksis/apps/chronos/models.py:506 +#: aleksis/apps/chronos/models.py:477 msgid "Lesson substitution" msgstr "" -#: aleksis/apps/chronos/models.py:507 +#: aleksis/apps/chronos/models.py:478 msgid "Lesson substitutions" msgstr "" -#: aleksis/apps/chronos/models.py:655 +#: aleksis/apps/chronos/models.py:621 msgid "Lesson periods" msgstr "" -#: aleksis/apps/chronos/models.py:693 -msgid "Timetable widget" -msgstr "" - -#: aleksis/apps/chronos/models.py:694 -msgid "Timetable widgets" -msgstr "" - -#: aleksis/apps/chronos/models.py:708 aleksis/apps/chronos/models.py:726 +#: aleksis/apps/chronos/models.py:635 aleksis/apps/chronos/models.py:648 msgid "Absence reason" msgstr "" -#: aleksis/apps/chronos/models.py:709 +#: aleksis/apps/chronos/models.py:636 msgid "Absence reasons" msgstr "" -#: aleksis/apps/chronos/models.py:735 aleksis/apps/chronos/models.py:974 -#: aleksis/apps/chronos/models.py:1025 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:46 +#: aleksis/apps/chronos/models.py:657 aleksis/apps/chronos/models.py:889 +#: aleksis/apps/chronos/models.py:943 msgid "Teacher" msgstr "" -#: aleksis/apps/chronos/models.py:743 +#: aleksis/apps/chronos/models.py:665 msgid "Group" msgstr "" -#: aleksis/apps/chronos/models.py:759 aleksis/apps/chronos/models.py:802 +#: aleksis/apps/chronos/models.py:681 aleksis/apps/chronos/models.py:723 msgid "Start period" msgstr "" -#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:808 +#: aleksis/apps/chronos/models.py:688 aleksis/apps/chronos/models.py:729 msgid "End period" msgstr "" -#: aleksis/apps/chronos/models.py:780 +#: aleksis/apps/chronos/models.py:702 msgid "Unknown absence" msgstr "" -#: aleksis/apps/chronos/models.py:786 +#: aleksis/apps/chronos/models.py:707 msgid "Absence" msgstr "" -#: aleksis/apps/chronos/models.py:787 +#: aleksis/apps/chronos/models.py:708 msgid "Absences" msgstr "" -#: aleksis/apps/chronos/models.py:798 +#: aleksis/apps/chronos/models.py:719 msgid "Date of exam" msgstr "" -#: aleksis/apps/chronos/models.py:812 aleksis/apps/chronos/models.py:826 -#: aleksis/apps/chronos/models.py:1059 +#: aleksis/apps/chronos/models.py:733 aleksis/apps/chronos/models.py:746 +#: aleksis/apps/chronos/models.py:977 msgid "Title" msgstr "" -#: aleksis/apps/chronos/models.py:819 +#: aleksis/apps/chronos/models.py:739 msgid "Exam" msgstr "" -#: aleksis/apps/chronos/models.py:820 +#: aleksis/apps/chronos/models.py:740 msgid "Exams" msgstr "" -#: aleksis/apps/chronos/models.py:829 +#: aleksis/apps/chronos/models.py:749 msgid "Comments" msgstr "" -#: aleksis/apps/chronos/models.py:868 +#: aleksis/apps/chronos/models.py:788 msgid "Holiday" msgstr "" -#: aleksis/apps/chronos/models.py:869 +#: aleksis/apps/chronos/models.py:789 msgid "Holidays" msgstr "" -#: aleksis/apps/chronos/models.py:883 aleksis/apps/chronos/models.py:964 +#: aleksis/apps/chronos/models.py:803 aleksis/apps/chronos/models.py:879 msgid "Supervision area" msgstr "" -#: aleksis/apps/chronos/models.py:884 +#: aleksis/apps/chronos/models.py:804 msgid "Supervision areas" msgstr "" -#: aleksis/apps/chronos/models.py:901 +#: aleksis/apps/chronos/models.py:816 msgid "Time period after break starts" msgstr "" -#: aleksis/apps/chronos/models.py:909 +#: aleksis/apps/chronos/models.py:824 msgid "Time period before break ends" msgstr "" -#: aleksis/apps/chronos/models.py:949 aleksis/apps/chronos/models.py:968 +#: aleksis/apps/chronos/models.py:864 aleksis/apps/chronos/models.py:883 msgid "Break" msgstr "" -#: aleksis/apps/chronos/models.py:950 +#: aleksis/apps/chronos/models.py:865 msgid "Breaks" msgstr "" -#: aleksis/apps/chronos/models.py:1005 aleksis/apps/chronos/models.py:1018 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23 -#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15 +#: aleksis/apps/chronos/models.py:923 aleksis/apps/chronos/models.py:936 +#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:3 msgid "Supervision" msgstr "" -#: aleksis/apps/chronos/models.py:1006 +#: aleksis/apps/chronos/models.py:924 aleksis/apps/chronos/models.py:1622 msgid "Supervisions" msgstr "" -#: aleksis/apps/chronos/models.py:1014 +#: aleksis/apps/chronos/models.py:932 msgid "Date" msgstr "" -#: aleksis/apps/chronos/models.py:1048 +#: aleksis/apps/chronos/models.py:966 msgid "Supervision substitution" msgstr "" -#: aleksis/apps/chronos/models.py:1049 +#: aleksis/apps/chronos/models.py:967 msgid "Supervision substitutions" msgstr "" -#: aleksis/apps/chronos/models.py:1067 +#: aleksis/apps/chronos/models.py:985 msgid "Start time period" msgstr "" -#: aleksis/apps/chronos/models.py:1073 +#: aleksis/apps/chronos/models.py:991 msgid "End time period" msgstr "" -#: aleksis/apps/chronos/models.py:1087 +#: aleksis/apps/chronos/models.py:996 aleksis/apps/chronos/models.py:1332 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:4 +msgid "Rooms" +msgstr "" + +#: aleksis/apps/chronos/models.py:1005 #, python-brace-format msgid "Event {pk}" msgstr "" -#: aleksis/apps/chronos/models.py:1172 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27 +#: aleksis/apps/chronos/models.py:1103 msgid "Event" msgstr "" -#: aleksis/apps/chronos/models.py:1173 +#: aleksis/apps/chronos/models.py:1104 msgid "Events" msgstr "" -#: aleksis/apps/chronos/models.py:1221 +#: aleksis/apps/chronos/models.py:1152 msgid "Related exam" msgstr "" -#: aleksis/apps/chronos/models.py:1251 +#: aleksis/apps/chronos/models.py:1181 msgid "Extra lesson" msgstr "" -#: aleksis/apps/chronos/models.py:1252 +#: aleksis/apps/chronos/models.py:1182 msgid "Extra lessons" msgstr "" -#: aleksis/apps/chronos/models.py:1264 +#: aleksis/apps/chronos/models.py:1194 msgid "Number of days shown in the plan" msgstr "" -#: aleksis/apps/chronos/models.py:1268 +#: aleksis/apps/chronos/models.py:1198 msgid "Show header box" msgstr "" -#: aleksis/apps/chronos/models.py:1269 aleksis/apps/chronos/preferences.py:61 +#: aleksis/apps/chronos/models.py:1199 aleksis/apps/chronos/preferences.py:100 msgid "The header box shows affected teachers/groups." msgstr "" -#: aleksis/apps/chronos/models.py:1276 +#: aleksis/apps/chronos/models.py:1206 msgid "Revision which triggered the last update" msgstr "" -#: aleksis/apps/chronos/models.py:1337 +#: aleksis/apps/chronos/models.py:1278 msgid "Automatic plan" msgstr "" -#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/models.py:1279 msgid "Automatic plans" msgstr "" -#: aleksis/apps/chronos/models.py:1352 +#: aleksis/apps/chronos/models.py:1293 msgid "Can view all room timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/models.py:1294 msgid "Can view all group timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1354 +#: aleksis/apps/chronos/models.py:1295 msgid "Can view all person timetables" msgstr "" -#: aleksis/apps/chronos/models.py:1355 +#: aleksis/apps/chronos/models.py:1296 msgid "Can view timetable overview" msgstr "" -#: aleksis/apps/chronos/models.py:1356 +#: aleksis/apps/chronos/models.py:1297 msgid "Can view all lessons per day" msgstr "" -#: aleksis/apps/chronos/preferences.py:18 -msgid "Use parent groups in timetable views" +#: aleksis/apps/chronos/models.py:1298 +msgid "Can view all supervisions per day" msgstr "" -#: aleksis/apps/chronos/preferences.py:20 -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." +#: aleksis/apps/chronos/models.py:1313 +msgid "Start slot number" msgstr "" -#: aleksis/apps/chronos/preferences.py:31 -msgid "Shorten groups in timetable views" +#: aleksis/apps/chronos/models.py:1316 +msgid "End slot number" msgstr "" -#: aleksis/apps/chronos/preferences.py:32 -msgid "If there are more groups than the set limit, they will be collapsed." +#: aleksis/apps/chronos/models.py:1320 +msgid "Course" msgstr "" -#: aleksis/apps/chronos/preferences.py:40 -msgid "Limit of groups for shortening of groups" +#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 +msgid "Cancelled" msgstr "" -#: aleksis/apps/chronos/preferences.py:42 -msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit." +#: aleksis/apps/chronos/models.py:1401 aleksis/apps/chronos/models.py:1413 +#: aleksis/apps/chronos/models.py:1425 +msgid "{} (instead of {})" msgstr "" -#: aleksis/apps/chronos/preferences.py:52 -msgid "Number of days shown on substitutions print view" +#: aleksis/apps/chronos/models.py:1614 +msgid "Lesson Event" msgstr "" -#: aleksis/apps/chronos/preferences.py:60 -msgid "Show header box in substitution views" +#: aleksis/apps/chronos/models.py:1615 +msgid "Lesson Events" msgstr "" -#: aleksis/apps/chronos/preferences.py:70 -msgid "Show parent groups in header box in substitution views instead of original groups" +#: aleksis/apps/chronos/models.py:1630 +msgid "Supervision: {}" msgstr "" -#: aleksis/apps/chronos/preferences.py:79 -msgid "How many days in advance users should be notified about timetable changes?" +#: aleksis/apps/chronos/preferences.py:21 +msgid "Timetables" msgstr "" -#: aleksis/apps/chronos/preferences.py:87 -msgid "Time for sending notifications about timetable changes" +#: aleksis/apps/chronos/preferences.py:29 +msgid "Use parent groups in timetable views" msgstr "" -#: aleksis/apps/chronos/preferences.py:90 -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." +#: aleksis/apps/chronos/preferences.py:31 +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 "" -#: aleksis/apps/chronos/preferences.py:101 -#: aleksis/apps/chronos/preferences.py:109 -msgid "Send notifications for current timetable changes" +#: aleksis/apps/chronos/preferences.py:42 +msgid "Shorten groups in timetable views" msgstr "" -#: aleksis/apps/chronos/tables.py:41 -msgid "Substitution" +#: aleksis/apps/chronos/preferences.py:43 +msgid "If there are more groups than the set limit, they will be collapsed." msgstr "" -#: aleksis/apps/chronos/tables.py:43 -msgid "Manage substitution" +#: aleksis/apps/chronos/preferences.py:51 +msgid "Limit of groups for shortening of groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:25 -msgid "No teachers timetables available." +#: aleksis/apps/chronos/preferences.py:53 +msgid "If a user activates shortening of groups,they will be collapsed if there are more groups than this limit." msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:39 -msgid "No group timetables available." +#: aleksis/apps/chronos/preferences.py:65 +msgid "Relevant days for substitution plans" msgstr "" -#: aleksis/apps/chronos/templates/chronos/all.html:53 -msgid "No room timetables available." +#: aleksis/apps/chronos/preferences.py:82 +msgid "Time when substitution plans switch to the next day" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:11 -msgid "Edit substitution." +#: aleksis/apps/chronos/preferences.py:91 +msgid "Number of days shown on substitutions print view" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:12 -msgid "Edit substitution" +#: aleksis/apps/chronos/preferences.py:99 +msgid "Show header box in substitution views" msgstr "" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:25 -msgid "Delete" +#: aleksis/apps/chronos/preferences.py:109 +msgid "Show parent groups in header box in substitution views instead of original groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19 -#: aleksis/apps/chronos/templates/chronos/timetable.html:50 -msgid "SMART PLAN" +#: aleksis/apps/chronos/preferences.py:118 +msgid "How many days in advance users should be notified about timetable changes?" msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22 -msgid "Show week timetable for" +#: aleksis/apps/chronos/preferences.py:126 +msgid "Time for sending notifications about timetable changes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 -msgid "Absent teachers" +#: aleksis/apps/chronos/preferences.py:129 +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 "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22 -msgid "Absent groups" +#: aleksis/apps/chronos/preferences.py:140 +#: aleksis/apps/chronos/preferences.py:148 +msgid "Send notifications for current timetable changes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34 -msgid "Affected teachers" +#: aleksis/apps/chronos/preferences.py:158 +msgid "Group types to show in timetables" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46 -msgid "Affected groups" +#: aleksis/apps/chronos/preferences.py:159 +msgid "If you leave it empty, all groups will be shown." msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/lesson.html:27 -msgid "Cancelled due to an event" +#: aleksis/apps/chronos/preferences.py:169 +msgid "Lesson calendar feed color" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 -msgid "Cancelled" +#: aleksis/apps/chronos/preferences.py:181 +msgid "Supervision calendar feed color" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6 -msgid "Cancelled for teachers" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 +msgid "Absent teachers" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/today.html:2 -msgid "Today" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22 +msgid "Absent groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36 -msgid "CW" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34 +msgid "Affected teachers" msgstr "" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:49 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 -msgid "Notes" +#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46 +msgid "Affected groups" msgstr "" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:57 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 -msgid "No substitutions available." +#: aleksis/apps/chronos/templates/chronos/partials/subs/period.html:12 +msgid "all day" msgstr "" #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 msgid "Print: Substitutions" msgstr "" -#: aleksis/apps/chronos/templates/chronos/timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/timetable.html:24 -#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11 -#: aleksis/apps/chronos/util/notifications.py:206 -msgid "Timetable" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:29 -msgid "Group teachers:" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:55 -msgid "Show regular timetable" -msgstr "" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:63 -#: aleksis/apps/chronos/templates/chronos/timetable.html:84 -msgid "View class register of this week" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 +msgid "Substitutions" msgstr "" -#: aleksis/apps/chronos/templates/chronos/timetable.html:76 -msgid "Show SMART PLAN" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:27 +msgid "Time" msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:8 -#, python-format -msgid "" -"\n" -" My timetable for %(day)s\n" -" " +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 +msgid "Notes" msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:18 -msgid "" -"\n" -" There is no timetable linked to your person.\n" -" " +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 +msgid "No substitutions available." msgstr "" -#: aleksis/apps/chronos/templates/chronos/widget.html:27 -msgid "Go to smart plan" +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:2 +msgid "Areas" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:50 +#: aleksis/apps/chronos/util/notifications.py:48 #, python-brace-format msgid "The {subject} lesson in the {period}. period on {day} has been cancelled." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:57 +#: aleksis/apps/chronos/util/notifications.py:55 #, python-brace-format msgid "The {subject} lesson in the {period}. period on {day} has some current changes." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:66 +#: aleksis/apps/chronos/util/notifications.py:64 #, python-brace-format msgid "The teacher {old} is substituted by {new}." msgid_plural "The teachers {old} are substituted by {new}." msgstr[0] "" msgstr[1] "" -#: aleksis/apps/chronos/util/notifications.py:78 +#: aleksis/apps/chronos/util/notifications.py:76 #, python-brace-format msgid "The subject is changed to {subject}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:84 +#: aleksis/apps/chronos/util/notifications.py:82 #, python-brace-format msgid "The lesson is moved from {old} to {new}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:93 +#: aleksis/apps/chronos/util/notifications.py:91 #, python-brace-format msgid "There is an additional comment: {comment}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:101 +#: aleksis/apps/chronos/util/notifications.py:99 #, 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 "" -#: aleksis/apps/chronos/util/notifications.py:114 +#: aleksis/apps/chronos/util/notifications.py:112 #, python-brace-format msgid "There is an event on {date} from the {period_from}. period to the {period_to}. period:" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:125 -#: aleksis/apps/chronos/util/notifications.py:145 +#: aleksis/apps/chronos/util/notifications.py:123 +#: aleksis/apps/chronos/util/notifications.py:143 #, python-brace-format msgid "Groups: {groups}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:127 -#: aleksis/apps/chronos/util/notifications.py:149 +#: aleksis/apps/chronos/util/notifications.py:125 +#: aleksis/apps/chronos/util/notifications.py:147 #, python-brace-format msgid "Teachers: {teachers}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:130 +#: aleksis/apps/chronos/util/notifications.py:128 #, python-brace-format msgid "Rooms: {rooms}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:137 +#: aleksis/apps/chronos/util/notifications.py:135 #, python-brace-format msgid "There is an extra lesson on {date} in the {period}. period:" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:147 +#: aleksis/apps/chronos/util/notifications.py:145 #, python-brace-format msgid "Subject: {subject}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:151 +#: aleksis/apps/chronos/util/notifications.py:149 #, python-brace-format msgid "Room: {room}" msgstr "" -#: aleksis/apps/chronos/util/notifications.py:153 +#: aleksis/apps/chronos/util/notifications.py:151 #, python-brace-format msgid "Comment: {comment}." msgstr "" -#: aleksis/apps/chronos/util/notifications.py:156 +#: aleksis/apps/chronos/util/notifications.py:154 #, 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 "" -#: aleksis/apps/chronos/util/notifications.py:207 -msgid "There are current changes to your timetable." -msgstr "" - -#: aleksis/apps/chronos/views.py:270 -msgid "The substitution has been saved." +#: aleksis/apps/chronos/util/notifications.py:204 +msgid "Timetable" msgstr "" -#: aleksis/apps/chronos/views.py:291 -msgid "The substitution has been deleted." +#: aleksis/apps/chronos/util/notifications.py:205 +msgid "There are current changes to your timetable." msgstr "" diff --git a/aleksis/apps/chronos/locale/uk/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/uk/LC_MESSAGES/django.po index 2985cd57672e71f444acfa40489d632919c92141..2a59feb53f2476f5088389967bf5de5ad9dbdd99 100644 --- a/aleksis/apps/chronos/locale/uk/LC_MESSAGES/django.po +++ b/aleksis/apps/chronos/locale/uk/LC_MESSAGES/django.po @@ -7,93 +7,49 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-21 11:32+0200\n" +"POT-Creation-Date: 2024-08-18 14:23+0200\n" "PO-Revision-Date: 2022-06-22 19:59+0000\n" "Last-Translator: Serhii Horichenko <m@sgg.im>\n" -"Language-Team: Ukrainian <https://translate.edugit.org/projects/aleksis/" -"aleksis-app-chronos/uk/>\n" +"Language-Team: Ukrainian <https://translate.edugit.org/projects/aleksis/aleksis-app-chronos/uk/>\n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 " -"? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > " -"14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % " -"100 >=11 && n % 100 <=14 )) ? 2: 3);\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" "X-Generator: Weblate 4.12.1\n" -#: aleksis/apps/chronos/form_extensions.py:7 -msgid "Options for timetables" -msgstr "Опції Ð´Ð»Ñ Ñ€Ð¾Ð·ÐºÐ»Ð°Ð´Ñ–Ð²" - -#: aleksis/apps/chronos/form_extensions.py:8 -msgid "Optional data for timetables" -msgstr "Додаткові дані Ð´Ð»Ñ Ñ€Ð¾Ð·ÐºÐ»Ð°Ð´Ñ–Ð²" - -#: aleksis/apps/chronos/menus.py:6 aleksis/apps/chronos/preferences.py:10 -msgid "Timetables" -msgstr "Розклади" - -#: aleksis/apps/chronos/menus.py:16 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18 -msgid "My timetable" -msgstr "Мій розклад" - -#: aleksis/apps/chronos/menus.py:27 -#: aleksis/apps/chronos/templates/chronos/all.html:11 -#: aleksis/apps/chronos/templates/chronos/all.html:12 -msgid "All timetables" -msgstr "УÑÑ– розклади" - -#: aleksis/apps/chronos/menus.py:38 -msgid "Daily lessons" -msgstr "Щоденні уроки" - -#: aleksis/apps/chronos/menus.py:49 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:11 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:17 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 -msgid "Substitutions" -msgstr "Заміни" - #: aleksis/apps/chronos/mixins.py:25 msgid "Linked validity range" msgstr "Пов'Ñзаний діапазон" -#: aleksis/apps/chronos/model_extensions.py:142 -msgid "Show announcement in timetable views?" -msgstr "Відображати Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ Ð· переглÑдом розкладу?" - -#: aleksis/apps/chronos/model_extensions.py:151 +#: aleksis/apps/chronos/model_extensions.py:145 msgid "Can view group timetable" msgstr "Може переглÑдати групові розклади" -#: aleksis/apps/chronos/model_extensions.py:155 +#: aleksis/apps/chronos/model_extensions.py:149 msgid "Can view person timetable" msgstr "Може переглÑдати оÑобиÑті розклади" -#: aleksis/apps/chronos/models.py:86 +#: aleksis/apps/chronos/models.py:87 msgid "School term" msgstr "Ðавчальний рік" -#: aleksis/apps/chronos/models.py:89 aleksis/apps/chronos/models.py:699 +#: aleksis/apps/chronos/models.py:90 aleksis/apps/chronos/models.py:626 +#: aleksis/apps/chronos/models.py:1310 msgid "Name" msgstr "Повне ім'Ñ" -#: aleksis/apps/chronos/models.py:91 aleksis/apps/chronos/models.py:754 -#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:1061 -#: aleksis/apps/chronos/models.py:829 aleksis/apps/chronos/models.py:1063 +#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:676 +#: aleksis/apps/chronos/models.py:747 aleksis/apps/chronos/models.py:979 msgid "Start date" msgstr "Дата початку" -#: aleksis/apps/chronos/models.py:92 aleksis/apps/chronos/models.py:755 -#: aleksis/apps/chronos/models.py:828 aleksis/apps/chronos/models.py:1062 -#: aleksis/apps/chronos/models.py:830 aleksis/apps/chronos/models.py:1064 +#: aleksis/apps/chronos/models.py:93 aleksis/apps/chronos/models.py:677 +#: aleksis/apps/chronos/models.py:748 aleksis/apps/chronos/models.py:980 msgid "End date" msgstr "Дата закінченнÑ" -#: aleksis/apps/chronos/models.py:111 +#: aleksis/apps/chronos/models.py:112 msgid "The start date must be earlier than the end date." msgstr "Початкова дата повинна бути раніше кінцевої." @@ -103,8 +59,7 @@ msgstr "Контрольний період повинен бути в рамк #: aleksis/apps/chronos/models.py:125 msgid "There is already a validity range for this time or a part of this time." -msgstr "" -"Ðа цей Ñ‡Ð°Ñ Ð°Ð±Ð¾ на чаÑтину цього чаÑу контрольний період вже призначений." +msgstr "Ðа цей Ñ‡Ð°Ñ Ð°Ð±Ð¾ на чаÑтину цього чаÑу контрольний період вже призначений." #: aleksis/apps/chronos/models.py:132 msgid "Validity range" @@ -114,480 +69,472 @@ msgstr "Контрольний період" msgid "Validity ranges" msgstr "Контрольні періоди" -#: aleksis/apps/chronos/models.py:150 +#: aleksis/apps/chronos/models.py:149 msgid "Week day" msgstr "День тижнÑ" -#: aleksis/apps/chronos/models.py:152 +#: aleksis/apps/chronos/models.py:151 msgid "Number of period" msgstr "Ðомер урока" -#: aleksis/apps/chronos/models.py:154 +#: aleksis/apps/chronos/models.py:153 msgid "Start time" msgstr "Ð§Ð°Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ" -#: aleksis/apps/chronos/models.py:155 +#: aleksis/apps/chronos/models.py:154 msgid "End time" msgstr "Ð§Ð°Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ" -#: aleksis/apps/chronos/models.py:338 aleksis/apps/chronos/models.py:525 -#: aleksis/apps/chronos/models.py:1191 aleksis/apps/chronos/models.py:1193 +#: aleksis/apps/chronos/models.py:324 aleksis/apps/chronos/models.py:496 +#: aleksis/apps/chronos/models.py:1122 msgid "Time period" msgstr "Ð§Ð°Ñ ÑƒÑ€Ð¾ÐºÑƒ" -#: aleksis/apps/chronos/models.py:339 +#: aleksis/apps/chronos/models.py:325 msgid "Time periods" msgstr "Ð§Ð°Ñ ÑƒÑ€Ð¾ÐºÑ–Ð²" -#: aleksis/apps/chronos/models.py:343 aleksis/apps/chronos/models.py:364 -#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:873 -#: aleksis/apps/chronos/models.py:895 aleksis/apps/chronos/models.py:875 -#: aleksis/apps/chronos/models.py:897 +#: aleksis/apps/chronos/models.py:329 aleksis/apps/chronos/models.py:625 +#: aleksis/apps/chronos/models.py:793 aleksis/apps/chronos/models.py:810 msgid "Short name" msgstr "Коротке ім'Ñ" -#: aleksis/apps/chronos/models.py:344 aleksis/apps/chronos/models.py:365 -#: aleksis/apps/chronos/models.py:874 aleksis/apps/chronos/models.py:896 -#: aleksis/apps/chronos/models.py:876 aleksis/apps/chronos/models.py:898 +#: aleksis/apps/chronos/models.py:330 aleksis/apps/chronos/models.py:794 +#: aleksis/apps/chronos/models.py:811 msgid "Long name" msgstr "Довге ім'Ñ" -#: aleksis/apps/chronos/models.py:346 +#: aleksis/apps/chronos/models.py:332 msgid "Foreground colour" msgstr "ОÑновний колір" -#: aleksis/apps/chronos/models.py:347 +#: aleksis/apps/chronos/models.py:333 msgid "Background colour" msgstr "Колір фону" -#: aleksis/apps/chronos/models.py:354 aleksis/apps/chronos/models.py:390 -#: aleksis/apps/chronos/models.py:446 aleksis/apps/chronos/models.py:1198 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:47 +#: aleksis/apps/chronos/models.py:340 aleksis/apps/chronos/models.py:349 +#: aleksis/apps/chronos/models.py:416 aleksis/apps/chronos/models.py:1129 +#: aleksis/apps/chronos/models.py:1345 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:2 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29 -#: aleksis/apps/chronos/models.py:1200 msgid "Subject" msgstr "Предмет" -#: aleksis/apps/chronos/models.py:355 +#: aleksis/apps/chronos/models.py:341 msgid "Subjects" msgstr "Предмети" -#: aleksis/apps/chronos/models.py:374 -msgid "Can view room timetable" -msgstr "Може переглÑдати розклад кімнати" - -#: aleksis/apps/chronos/models.py:376 aleksis/apps/chronos/models.py:454 -#: aleksis/apps/chronos/models.py:533 aleksis/apps/chronos/models.py:751 -#: aleksis/apps/chronos/models.py:1213 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:48 -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 -#: aleksis/apps/chronos/models.py:1215 -msgid "Room" -msgstr "Кімната" - -#: aleksis/apps/chronos/models.py:377 aleksis/apps/chronos/models.py:1078 -#: aleksis/apps/chronos/templates/chronos/all.html:45 -#: aleksis/apps/chronos/models.py:1080 -msgid "Rooms" -msgstr "Кімнати" - -#: aleksis/apps/chronos/models.py:393 aleksis/apps/chronos/models.py:452 -#: aleksis/apps/chronos/models.py:1080 aleksis/apps/chronos/models.py:1206 -#: aleksis/apps/chronos/tables.py:35 -#: aleksis/apps/chronos/templates/chronos/all.html:17 +#: aleksis/apps/chronos/models.py:352 aleksis/apps/chronos/models.py:422 +#: aleksis/apps/chronos/models.py:998 aleksis/apps/chronos/models.py:1137 +#: aleksis/apps/chronos/models.py:1338 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:3 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28 -#: aleksis/apps/chronos/models.py:1082 aleksis/apps/chronos/models.py:1208 +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:1 msgid "Teachers" msgstr "Викладачі" -#: aleksis/apps/chronos/models.py:399 +#: aleksis/apps/chronos/models.py:358 msgid "Periods" msgstr "Години" -#: aleksis/apps/chronos/models.py:401 aleksis/apps/chronos/models.py:1077 -#: aleksis/apps/chronos/models.py:1201 aleksis/apps/chronos/tables.py:34 -#: aleksis/apps/chronos/templates/chronos/all.html:31 -#: aleksis/apps/chronos/models.py:1079 aleksis/apps/chronos/models.py:1203 +#: aleksis/apps/chronos/models.py:360 aleksis/apps/chronos/models.py:995 +#: aleksis/apps/chronos/models.py:1132 aleksis/apps/chronos/models.py:1326 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:1 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:26 msgid "Groups" msgstr "Групи" -#: aleksis/apps/chronos/models.py:424 aleksis/apps/chronos/models.py:519 -#: aleksis/apps/chronos/models.py:795 +#: aleksis/apps/chronos/models.py:394 aleksis/apps/chronos/models.py:490 +#: aleksis/apps/chronos/models.py:716 aleksis/apps/chronos/models.py:1430 +#: aleksis/apps/chronos/models.py:1454 msgid "Lesson" msgstr "Урок" -#: aleksis/apps/chronos/models.py:425 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9 -#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19 +#: aleksis/apps/chronos/models.py:395 aleksis/apps/chronos/models.py:1306 msgid "Lessons" msgstr "Уроки" -#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:1185 -#: aleksis/apps/chronos/models.py:1187 +#: aleksis/apps/chronos/models.py:403 aleksis/apps/chronos/models.py:1116 msgid "Week" msgstr "Тиждень" -#: aleksis/apps/chronos/models.py:434 aleksis/apps/chronos/models.py:1186 -#: aleksis/apps/chronos/models.py:1188 +#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:1117 msgid "Year" msgstr "Рік" -#: aleksis/apps/chronos/models.py:437 aleksis/apps/chronos/models.py:654 +#: aleksis/apps/chronos/models.py:407 aleksis/apps/chronos/models.py:620 msgid "Lesson period" msgstr "Урок за розкладом" -#: aleksis/apps/chronos/models.py:456 +#: aleksis/apps/chronos/models.py:425 aleksis/apps/chronos/models.py:504 +#: aleksis/apps/chronos/models.py:673 aleksis/apps/chronos/models.py:1144 +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30 +msgid "Room" +msgstr "Кімната" + +#: aleksis/apps/chronos/models.py:428 msgid "Cancelled?" msgstr "СкаÑовано?" -#: aleksis/apps/chronos/models.py:458 +#: aleksis/apps/chronos/models.py:430 msgid "Cancelled for teachers?" msgstr "СкаÑовано Ð´Ð»Ñ Ð²Ð¸ÐºÐ»Ð°Ð´Ð°Ñ‡Ñ–Ð²?" -#: aleksis/apps/chronos/models.py:461 aleksis/apps/chronos/models.py:770 -#: aleksis/apps/chronos/models.py:813 aleksis/apps/chronos/models.py:1216 -#: aleksis/apps/chronos/models.py:815 aleksis/apps/chronos/models.py:1218 +#: aleksis/apps/chronos/models.py:433 aleksis/apps/chronos/models.py:692 +#: aleksis/apps/chronos/models.py:734 aleksis/apps/chronos/models.py:1147 +#: aleksis/apps/chronos/models.py:1357 msgid "Comment" msgstr "Коментар" -#: aleksis/apps/chronos/models.py:465 +#: aleksis/apps/chronos/models.py:437 msgid "Lessons can only be either substituted or cancelled." msgstr "Уроки можуть бути лише або замінені, або ÑкаÑовані." -#: aleksis/apps/chronos/models.py:506 +#: aleksis/apps/chronos/models.py:477 msgid "Lesson substitution" msgstr "Заміна уроку" -#: aleksis/apps/chronos/models.py:507 +#: aleksis/apps/chronos/models.py:478 msgid "Lesson substitutions" msgstr "Заміни уроків" -#: aleksis/apps/chronos/models.py:655 +#: aleksis/apps/chronos/models.py:621 msgid "Lesson periods" msgstr "Ðавчальні години" -#: aleksis/apps/chronos/models.py:693 -msgid "Timetable widget" -msgstr "Віджет розкладу" - -#: aleksis/apps/chronos/models.py:694 -msgid "Timetable widgets" -msgstr "Віджети розкладу" - -#: aleksis/apps/chronos/models.py:708 aleksis/apps/chronos/models.py:726 +#: aleksis/apps/chronos/models.py:635 aleksis/apps/chronos/models.py:648 msgid "Absence reason" msgstr "Причина відÑутноÑті" -#: aleksis/apps/chronos/models.py:709 +#: aleksis/apps/chronos/models.py:636 msgid "Absence reasons" msgstr "Причини відÑутноÑті" -#: aleksis/apps/chronos/models.py:735 aleksis/apps/chronos/models.py:974 -#: aleksis/apps/chronos/models.py:1025 -#: aleksis/apps/chronos/templates/chronos/substitutions.html:46 -#: aleksis/apps/chronos/models.py:976 aleksis/apps/chronos/models.py:1027 +#: aleksis/apps/chronos/models.py:657 aleksis/apps/chronos/models.py:889 +#: aleksis/apps/chronos/models.py:943 msgid "Teacher" msgstr "Викладач" -#: aleksis/apps/chronos/models.py:743 +#: aleksis/apps/chronos/models.py:665 msgid "Group" msgstr "Група" -#: aleksis/apps/chronos/models.py:759 aleksis/apps/chronos/models.py:802 +#: aleksis/apps/chronos/models.py:681 aleksis/apps/chronos/models.py:723 msgid "Start period" msgstr "Початок уроків" -#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:808 -#: aleksis/apps/chronos/models.py:809 +#: aleksis/apps/chronos/models.py:688 aleksis/apps/chronos/models.py:729 msgid "End period" msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ ÑƒÑ€Ð¾ÐºÑ–Ð²" -#: aleksis/apps/chronos/models.py:780 +#: aleksis/apps/chronos/models.py:702 msgid "Unknown absence" msgstr "ВідÑутніÑть без поÑÑнень" -#: aleksis/apps/chronos/models.py:786 +#: aleksis/apps/chronos/models.py:707 msgid "Absence" msgstr "ВідÑутніÑть" -#: aleksis/apps/chronos/models.py:787 +#: aleksis/apps/chronos/models.py:708 msgid "Absences" msgstr "ВідÑутноÑті" -#: aleksis/apps/chronos/models.py:798 +#: aleksis/apps/chronos/models.py:719 msgid "Date of exam" msgstr "Дата Ñ–Ñпиту" -#: aleksis/apps/chronos/models.py:812 aleksis/apps/chronos/models.py:826 -#: aleksis/apps/chronos/models.py:1059 aleksis/apps/chronos/models.py:814 -#: aleksis/apps/chronos/models.py:828 aleksis/apps/chronos/models.py:1061 +#: aleksis/apps/chronos/models.py:733 aleksis/apps/chronos/models.py:746 +#: aleksis/apps/chronos/models.py:977 msgid "Title" msgstr "Ðазва" -#: aleksis/apps/chronos/models.py:819 aleksis/apps/chronos/models.py:821 +#: aleksis/apps/chronos/models.py:739 msgid "Exam" msgstr "ІÑпит" -#: aleksis/apps/chronos/models.py:820 aleksis/apps/chronos/models.py:822 +#: aleksis/apps/chronos/models.py:740 msgid "Exams" msgstr "ІÑпити" -#: aleksis/apps/chronos/models.py:829 aleksis/apps/chronos/models.py:831 +#: aleksis/apps/chronos/models.py:749 msgid "Comments" msgstr "Коментарі" -#: aleksis/apps/chronos/models.py:868 aleksis/apps/chronos/models.py:870 +#: aleksis/apps/chronos/models.py:788 msgid "Holiday" msgstr "Вихідний" -#: aleksis/apps/chronos/models.py:869 aleksis/apps/chronos/models.py:871 +#: aleksis/apps/chronos/models.py:789 msgid "Holidays" msgstr "Вихідні" -#: aleksis/apps/chronos/models.py:883 aleksis/apps/chronos/models.py:964 -#: aleksis/apps/chronos/models.py:885 aleksis/apps/chronos/models.py:966 +#: aleksis/apps/chronos/models.py:803 aleksis/apps/chronos/models.py:879 msgid "Supervision area" msgstr "Зона контролю" -#: aleksis/apps/chronos/models.py:884 aleksis/apps/chronos/models.py:886 +#: aleksis/apps/chronos/models.py:804 msgid "Supervision areas" msgstr "Зони контролю" -#: aleksis/apps/chronos/models.py:901 aleksis/apps/chronos/models.py:903 +#: aleksis/apps/chronos/models.py:816 msgid "Time period after break starts" msgstr "ÐÐ°Ð²Ñ‡Ð°Ð½Ð½Ñ Ð¿Ñ–ÑÐ»Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð¸ починаєтьÑÑ" -#: aleksis/apps/chronos/models.py:909 aleksis/apps/chronos/models.py:911 +#: aleksis/apps/chronos/models.py:824 msgid "Time period before break ends" msgstr "ÐÐ°Ð²Ñ‡Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ перервою закінчуєтьÑÑ" -#: aleksis/apps/chronos/models.py:949 aleksis/apps/chronos/models.py:968 -#: aleksis/apps/chronos/models.py:951 aleksis/apps/chronos/models.py:970 +#: aleksis/apps/chronos/models.py:864 aleksis/apps/chronos/models.py:883 msgid "Break" msgstr "Перерва" -#: aleksis/apps/chronos/models.py:950 aleksis/apps/chronos/models.py:952 +#: aleksis/apps/chronos/models.py:865 msgid "Breaks" msgstr "Перерви" -#: aleksis/apps/chronos/models.py:1005 aleksis/apps/chronos/models.py:1018 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23 -#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15 -#: aleksis/apps/chronos/models.py:1007 aleksis/apps/chronos/models.py:1020 +#: aleksis/apps/chronos/models.py:923 aleksis/apps/chronos/models.py:936 +#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:3 msgid "Supervision" msgstr "Контроль" -#: aleksis/apps/chronos/models.py:1006 aleksis/apps/chronos/models.py:1008 +#: aleksis/apps/chronos/models.py:924 aleksis/apps/chronos/models.py:1622 msgid "Supervisions" msgstr "Контролі" -#: aleksis/apps/chronos/models.py:1014 aleksis/apps/chronos/models.py:1016 +#: aleksis/apps/chronos/models.py:932 msgid "Date" msgstr "Дата" -#: aleksis/apps/chronos/models.py:1048 aleksis/apps/chronos/models.py:1050 +#: aleksis/apps/chronos/models.py:966 msgid "Supervision substitution" msgstr "Заміна контролю" -#: aleksis/apps/chronos/models.py:1049 aleksis/apps/chronos/models.py:1051 +#: aleksis/apps/chronos/models.py:967 msgid "Supervision substitutions" msgstr "Заміни контролю" -#: aleksis/apps/chronos/models.py:1067 aleksis/apps/chronos/models.py:1069 +#: aleksis/apps/chronos/models.py:985 msgid "Start time period" msgstr "Початок навчаннÑ" -#: aleksis/apps/chronos/models.py:1073 aleksis/apps/chronos/models.py:1075 +#: aleksis/apps/chronos/models.py:991 msgid "End time period" msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð²Ñ‡Ð°Ð½Ð½Ñ" -#: aleksis/apps/chronos/models.py:1087 aleksis/apps/chronos/models.py:1089 +#: aleksis/apps/chronos/models.py:996 aleksis/apps/chronos/models.py:1332 +#: aleksis/apps/chronos/templates/chronos/lesson_event_description.txt:4 +msgid "Rooms" +msgstr "Кімнати" + +#: aleksis/apps/chronos/models.py:1005 #, python-brace-format msgid "Event {pk}" msgstr "ÐŸÐ¾Ð´Ñ–Ñ {pk}" -#: aleksis/apps/chronos/models.py:1172 -#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27 -#: aleksis/apps/chronos/models.py:1174 +#: aleksis/apps/chronos/models.py:1103 msgid "Event" msgstr "ПодіÑ" -#: aleksis/apps/chronos/models.py:1173 aleksis/apps/chronos/models.py:1175 +#: aleksis/apps/chronos/models.py:1104 msgid "Events" msgstr "Події" -#: aleksis/apps/chronos/models.py:1221 +#: aleksis/apps/chronos/models.py:1152 msgid "Related exam" msgstr "Пов'Ñзані Ñ–Ñпити" -#: aleksis/apps/chronos/models.py:1251 aleksis/apps/chronos/models.py:1244 +#: aleksis/apps/chronos/models.py:1181 msgid "Extra lesson" msgstr "Додатковий урок" -#: aleksis/apps/chronos/models.py:1252 aleksis/apps/chronos/models.py:1245 +#: aleksis/apps/chronos/models.py:1182 msgid "Extra lessons" msgstr "Додаткові уроки" -#: aleksis/apps/chronos/models.py:1264 aleksis/apps/chronos/models.py:1257 +#: aleksis/apps/chronos/models.py:1194 msgid "Number of days shown in the plan" msgstr "КількіÑть днів Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ плані" -#: aleksis/apps/chronos/models.py:1268 aleksis/apps/chronos/models.py:1261 +#: aleksis/apps/chronos/models.py:1198 msgid "Show header box" msgstr "Показати заголовок" -#: aleksis/apps/chronos/models.py:1269 aleksis/apps/chronos/preferences.py:61 -#: aleksis/apps/chronos/models.py:1262 +#: aleksis/apps/chronos/models.py:1199 aleksis/apps/chronos/preferences.py:100 msgid "The header box shows affected teachers/groups." msgstr "Заголовок показує викладачів/групи на Ñких це впливає." -#: aleksis/apps/chronos/models.py:1276 aleksis/apps/chronos/models.py:1269 +#: aleksis/apps/chronos/models.py:1206 msgid "Revision which triggered the last update" msgstr "РевізіÑ, Ñка запуÑтила оÑтаннє оновленнÑ" -#: aleksis/apps/chronos/models.py:1337 aleksis/apps/chronos/models.py:1330 +#: aleksis/apps/chronos/models.py:1278 msgid "Automatic plan" msgstr "Ðвтоматичний план" -#: aleksis/apps/chronos/models.py:1338 aleksis/apps/chronos/models.py:1331 +#: aleksis/apps/chronos/models.py:1279 msgid "Automatic plans" msgstr "Ðвтоматичні плани" -#: aleksis/apps/chronos/models.py:1352 aleksis/apps/chronos/models.py:1345 +#: aleksis/apps/chronos/models.py:1293 msgid "Can view all room timetables" msgstr "Може переглÑдати розклади уÑÑ–Ñ… кімнат" -#: aleksis/apps/chronos/models.py:1353 aleksis/apps/chronos/models.py:1346 +#: aleksis/apps/chronos/models.py:1294 msgid "Can view all group timetables" msgstr "Може переглÑдати розклади уÑÑ–Ñ… груп" -#: aleksis/apps/chronos/models.py:1354 aleksis/apps/chronos/models.py:1347 +#: aleksis/apps/chronos/models.py:1295 msgid "Can view all person timetables" msgstr "Може переглÑдати розклади уÑÑ–Ñ… оÑіб" -#: aleksis/apps/chronos/models.py:1355 aleksis/apps/chronos/models.py:1348 +#: aleksis/apps/chronos/models.py:1296 msgid "Can view timetable overview" msgstr "Може переглÑдати загальний розклад" -#: aleksis/apps/chronos/models.py:1356 aleksis/apps/chronos/models.py:1349 +#: aleksis/apps/chronos/models.py:1297 msgid "Can view all lessons per day" msgstr "Може переглÑдати уÑÑ– уроки окремого днÑ" -#: aleksis/apps/chronos/preferences.py:18 -msgid "Use parent groups in timetable views" -msgstr "ВикориÑтовувати батьківÑькі групи в оглÑді розкладу" +#: aleksis/apps/chronos/models.py:1298 +#, fuzzy +#| msgid "Can view all lessons per day" +msgid "Can view all supervisions per day" +msgstr "Може переглÑдати уÑÑ– уроки окремого днÑ" -#: aleksis/apps/chronos/preferences.py:20 -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." +#: aleksis/apps/chronos/models.py:1313 +#, fuzzy +#| msgid "Start time" +msgid "Start slot number" +msgstr "Ð§Ð°Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ" + +#: aleksis/apps/chronos/models.py:1316 +#, fuzzy +#| msgid "End time" +msgid "End slot number" +msgstr "Ð§Ð°Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ" + +#: aleksis/apps/chronos/models.py:1320 +msgid "Course" msgstr "" -"Якщо урок або заміна має лише одну групу Ñ– Ñ†Ñ Ð³Ñ€ÑƒÐ¿Ð° має батьківÑькі групи, " -"відображати ці батьківÑькі групи заміÑть дійÑної групи." + +#: aleksis/apps/chronos/models.py:1353 +#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 +msgid "Cancelled" +msgstr "СкаÑовано" + +#: aleksis/apps/chronos/models.py:1401 aleksis/apps/chronos/models.py:1413 +#: aleksis/apps/chronos/models.py:1425 +msgid "{} (instead of {})" +msgstr "" + +#: aleksis/apps/chronos/models.py:1614 +#, fuzzy +#| msgid "Lesson" +msgid "Lesson Event" +msgstr "Урок" + +#: aleksis/apps/chronos/models.py:1615 +#, fuzzy +#| msgid "Lessons" +msgid "Lesson Events" +msgstr "Уроки" + +#: aleksis/apps/chronos/models.py:1630 +#, fuzzy +#| msgid "Supervision" +msgid "Supervision: {}" +msgstr "Контроль" + +#: aleksis/apps/chronos/preferences.py:21 +msgid "Timetables" +msgstr "Розклади" + +#: aleksis/apps/chronos/preferences.py:29 +msgid "Use parent groups in timetable views" +msgstr "ВикориÑтовувати батьківÑькі групи в оглÑді розкладу" #: aleksis/apps/chronos/preferences.py:31 +#, fuzzy +#| 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." +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 "Якщо урок або заміна має лише одну групу Ñ– Ñ†Ñ Ð³Ñ€ÑƒÐ¿Ð° має батьківÑькі групи, відображати ці батьківÑькі групи заміÑть дійÑної групи." + +#: aleksis/apps/chronos/preferences.py:42 msgid "Shorten groups in timetable views" msgstr "Скорочувати групи в оглÑді розкладу" -#: aleksis/apps/chronos/preferences.py:32 +#: aleksis/apps/chronos/preferences.py:43 msgid "If there are more groups than the set limit, they will be collapsed." msgstr "Якщо груп більше за вÑтановлений ліміт, вони будуть згруповані." -#: aleksis/apps/chronos/preferences.py:40 +#: aleksis/apps/chronos/preferences.py:51 msgid "Limit of groups for shortening of groups" msgstr "Ліміт груп Ð´Ð»Ñ ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿" -#: aleksis/apps/chronos/preferences.py:42 -msgid "" -"If an user activates shortening of groups,they will be collapsed if there " -"are more groups than this limit." +#: aleksis/apps/chronos/preferences.py:53 +#, fuzzy +#| msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit." +msgid "If a user activates shortening of groups,they will be collapsed if there are more groups than this limit." +msgstr "Якщо кориÑтувач активує ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿, Ñ– кількіÑть груп буде більше за ліміт, вони згруповуватимутьÑÑ." + +#: aleksis/apps/chronos/preferences.py:65 +#, fuzzy +#| msgid "Lesson substitutions" +msgid "Relevant days for substitution plans" +msgstr "Заміни уроків" + +#: aleksis/apps/chronos/preferences.py:82 +msgid "Time when substitution plans switch to the next day" msgstr "" -"Якщо кориÑтувач активує ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿, Ñ– кількіÑть груп буде більше за " -"ліміт, вони згруповуватимутьÑÑ." -#: aleksis/apps/chronos/preferences.py:52 +#: aleksis/apps/chronos/preferences.py:91 msgid "Number of days shown on substitutions print view" msgstr "КількіÑть днів Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ друкованому виглÑді замін" -#: aleksis/apps/chronos/preferences.py:60 +#: aleksis/apps/chronos/preferences.py:99 msgid "Show header box in substitution views" msgstr "Відображати заголовок в оглÑді замін" -#: aleksis/apps/chronos/preferences.py:70 -msgid "" -"Show parent groups in header box in substitution views instead of original " -"groups" -msgstr "" -"У заголовку в оглÑді замін відображати батьківÑькі групи заміÑть дійÑних груп" +#: aleksis/apps/chronos/preferences.py:109 +msgid "Show parent groups in header box in substitution views instead of original groups" +msgstr "У заголовку в оглÑді замін відображати батьківÑькі групи заміÑть дійÑних груп" -#: aleksis/apps/chronos/preferences.py:79 -msgid "" -"How many days in advance users should be notified about timetable changes?" -msgstr "" -"За Ñкільки днів потрібно інформувати кориÑтувачів щодо змін у розкладі?" +#: aleksis/apps/chronos/preferences.py:118 +msgid "How many days in advance users should be notified about timetable changes?" +msgstr "За Ñкільки днів потрібно інформувати кориÑтувачів щодо змін у розкладі?" -#: aleksis/apps/chronos/preferences.py:87 +#: aleksis/apps/chronos/preferences.py:126 msgid "Time for sending notifications about timetable changes" msgstr "Ð§Ð°Ñ Ð´Ð»Ñ Ð½Ð°Ð´ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñповіщень щодо змін у розкладі" -#: aleksis/apps/chronos/preferences.py:90 -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 "" -"Це викориÑтовуєтьÑÑ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñповіщень, Ñкі не впливають на " -"навчальний чаÑ, вÑтановлений вище. УÑÑ– інші ÑповіщеннÑ, Ñкі впливають на " -"найближчі дні, надÑилаютьÑÑ Ð½ÐµÐ³Ð°Ð¹Ð½Ð¾." +#: aleksis/apps/chronos/preferences.py:129 +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 "Це викориÑтовуєтьÑÑ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñповіщень, Ñкі не впливають на навчальний чаÑ, вÑтановлений вище. УÑÑ– інші ÑповіщеннÑ, Ñкі впливають на найближчі дні, надÑилаютьÑÑ Ð½ÐµÐ³Ð°Ð¹Ð½Ð¾." -#: aleksis/apps/chronos/preferences.py:101 -#: aleksis/apps/chronos/preferences.py:109 +#: aleksis/apps/chronos/preferences.py:140 +#: aleksis/apps/chronos/preferences.py:148 msgid "Send notifications for current timetable changes" msgstr "ÐадіÑлати ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ поточних змін у розкладі" -#: aleksis/apps/chronos/tables.py:41 -msgid "Substitution" -msgstr "Заміна" - -#: aleksis/apps/chronos/tables.py:43 -msgid "Manage substitution" -msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¼Ñ–Ð½Ð°Ð¼Ð¸" - -#: aleksis/apps/chronos/templates/chronos/all.html:25 -msgid "No teachers timetables available." -msgstr "Розклади викладачів недоÑтупні." - -#: aleksis/apps/chronos/templates/chronos/all.html:39 -msgid "No group timetables available." -msgstr "Розклади груп недоÑтупні." - -#: aleksis/apps/chronos/templates/chronos/all.html:53 -msgid "No room timetables available." -msgstr "Розклади кімнат недоÑтупні." - -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:11 -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:6 -msgid "Edit substitution." -msgstr "Редагувати заміну." - -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:12 -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:7 -msgid "Edit substitution" -msgstr "Редагувати заміну" +#: aleksis/apps/chronos/preferences.py:158 +#, fuzzy +#| msgid "Shorten groups in timetable views" +msgid "Group types to show in timetables" +msgstr "Скорочувати групи в оглÑді розкладу" -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:25 -#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:20 -msgid "Delete" -msgstr "Видалити" +#: aleksis/apps/chronos/preferences.py:159 +msgid "If you leave it empty, all groups will be shown." +msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19 -#: aleksis/apps/chronos/templates/chronos/timetable.html:50 -msgid "SMART PLAN" -msgstr "SMART PLAN" +#: aleksis/apps/chronos/preferences.py:169 +msgid "Lesson calendar feed color" +msgstr "" -#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22 -msgid "Show week timetable for" -msgstr "Відобразити тижневий розклад длÑ" +#: aleksis/apps/chronos/preferences.py:181 +#, fuzzy +#| msgid "Supervision area" +msgid "Supervision calendar feed color" +msgstr "Зона контролю" #: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10 msgid "Absent teachers" @@ -605,105 +552,47 @@ msgstr "Ðа Ñких викладачів впливає" msgid "Affected groups" msgstr "Ðа Ñкі групи впливає" -#: aleksis/apps/chronos/templates/chronos/partials/lesson.html:27 -msgid "Cancelled due to an event" -msgstr "СкаÑовано через подію" - -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4 -msgid "Cancelled" -msgstr "СкаÑовано" +#: aleksis/apps/chronos/templates/chronos/partials/subs/period.html:12 +msgid "all day" +msgstr "" -#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6 -msgid "Cancelled for teachers" -msgstr "СкаÑовано Ð´Ð»Ñ Ð²Ð¸ÐºÐ»Ð°Ð´Ð°Ñ‡Ñ–Ð²" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 +msgid "Print: Substitutions" +msgstr "Друк: Заміни" -#: aleksis/apps/chronos/templates/chronos/partials/today.html:2 -msgid "Today" -msgstr "Сьогодні" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12 +msgid "Substitutions" +msgstr "Заміни" -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25 -#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36 -msgid "CW" -msgstr "ТЖ" +#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:27 +#, fuzzy +#| msgid "Timetable" +msgid "Time" +msgstr "Розклад" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:49 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31 msgid "Notes" msgstr "Ðотатки" -#: aleksis/apps/chronos/templates/chronos/substitutions.html:57 #: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41 msgid "No substitutions available." msgstr "Заміни недоÑтупні." -#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11 -msgid "Print: Substitutions" -msgstr "Друк: Заміни" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:11 -#: aleksis/apps/chronos/templates/chronos/timetable.html:24 -#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11 -#: aleksis/apps/chronos/util/notifications.py:206 -msgid "Timetable" -msgstr "Розклад" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:29 -msgid "Group teachers:" -msgstr "Викладачі груп:" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:55 -msgid "Show regular timetable" -msgstr "Відобразити звичайний розклад" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:63 -#: aleksis/apps/chronos/templates/chronos/timetable.html:84 -msgid "View class register of this week" -msgstr "ОглÑд клаÑного журналу за цей тиждень" - -#: aleksis/apps/chronos/templates/chronos/timetable.html:76 -msgid "Show SMART PLAN" -msgstr "Відобразити SMART PLAN" - -#: aleksis/apps/chronos/templates/chronos/widget.html:8 -#, python-format -msgid "" -"\n" -" My timetable for %(day)s\n" -" " -msgstr "" -"\n" -" Мій розклад на %(day)s\n" -" " - -#: aleksis/apps/chronos/templates/chronos/widget.html:18 -msgid "" -"\n" -" There is no timetable linked to your person.\n" -" " +#: aleksis/apps/chronos/templates/chronos/supervision_event_description.txt:2 +msgid "Areas" msgstr "" -"\n" -" До Вашої оÑоби жодного журналу не прив'Ñзано.\n" -" " -#: aleksis/apps/chronos/templates/chronos/widget.html:27 -msgid "Go to smart plan" -msgstr "Перейти до SMART PLAN" - -#: aleksis/apps/chronos/util/notifications.py:50 +#: aleksis/apps/chronos/util/notifications.py:48 #, 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 "Урок {subject} на {period} уроці у {day} ÑкаÑований." -#: aleksis/apps/chronos/util/notifications.py:57 +#: aleksis/apps/chronos/util/notifications.py:55 #, python-brace-format -msgid "" -"The {subject} lesson in the {period}. period on {day} has some current " -"changes." +msgid "The {subject} lesson in the {period}. period on {day} has some current changes." msgstr "Урок {subject} на {period} уроці у {day} зараз дещо змінений." -#: aleksis/apps/chronos/util/notifications.py:66 +#: aleksis/apps/chronos/util/notifications.py:64 #, python-brace-format msgid "The teacher {old} is substituted by {new}." msgid_plural "The teachers {old} are substituted by {new}." @@ -712,96 +601,189 @@ msgstr[1] "Викладачі {old} замінені викладачами {new msgstr[2] "Викладачі {old} замінені викладачами {new}." msgstr[3] "Викладачі {old} замінені викладачами {new}." -#: aleksis/apps/chronos/util/notifications.py:78 +#: aleksis/apps/chronos/util/notifications.py:76 #, python-brace-format msgid "The subject is changed to {subject}." msgstr "Предмет замінений на {subject}." -#: aleksis/apps/chronos/util/notifications.py:84 +#: aleksis/apps/chronos/util/notifications.py:82 #, python-brace-format msgid "The lesson is moved from {old} to {new}." msgstr "Урок перенеÑений з {old} до {new}." -#: aleksis/apps/chronos/util/notifications.py:93 +#: aleksis/apps/chronos/util/notifications.py:91 #, python-brace-format msgid "There is an additional comment: {comment}." msgstr "Маємо додатковий коментар: {comment}." -#: aleksis/apps/chronos/util/notifications.py:101 +#: aleksis/apps/chronos/util/notifications.py:99 #, 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 "" -"Маємо подію, Ñка розпочинаєтьÑÑ {date_start}, на {period_from}. уроці та " -"закінчуєтьÑÑ {date_end}, на {period_to}. уроці:" +msgid "There is an event that starts on {date_start}, {period_from}. period and ends on {date_end}, {period_to}. period:" +msgstr "Маємо подію, Ñка розпочинаєтьÑÑ {date_start}, на {period_from}. уроці та закінчуєтьÑÑ {date_end}, на {period_to}. уроці:" -#: aleksis/apps/chronos/util/notifications.py:114 +#: aleksis/apps/chronos/util/notifications.py:112 #, python-brace-format -msgid "" -"There is an event on {date} from the {period_from}. period to the " -"{period_to}. period:" -msgstr "" -"Маємо подію на {date} з {period_from}. уроку до ÐºÑ–Ð½Ñ†Ñ {period_to}. уроку:" +msgid "There is an event on {date} from the {period_from}. period to the {period_to}. period:" +msgstr "Маємо подію на {date} з {period_from}. уроку до ÐºÑ–Ð½Ñ†Ñ {period_to}. уроку:" -#: aleksis/apps/chronos/util/notifications.py:125 -#: aleksis/apps/chronos/util/notifications.py:145 +#: aleksis/apps/chronos/util/notifications.py:123 +#: aleksis/apps/chronos/util/notifications.py:143 #, python-brace-format msgid "Groups: {groups}" msgstr "Групи: {groups}" -#: aleksis/apps/chronos/util/notifications.py:127 -#: aleksis/apps/chronos/util/notifications.py:149 +#: aleksis/apps/chronos/util/notifications.py:125 +#: aleksis/apps/chronos/util/notifications.py:147 #, python-brace-format msgid "Teachers: {teachers}" msgstr "Викладачі: {teachers}" -#: aleksis/apps/chronos/util/notifications.py:130 +#: aleksis/apps/chronos/util/notifications.py:128 #, python-brace-format msgid "Rooms: {rooms}" msgstr "Кімнати: {rooms}" -#: aleksis/apps/chronos/util/notifications.py:137 +#: aleksis/apps/chronos/util/notifications.py:135 #, python-brace-format msgid "There is an extra lesson on {date} in the {period}. period:" msgstr "Маємо додатковий урок {date} на {period}. уроці:" -#: aleksis/apps/chronos/util/notifications.py:147 +#: aleksis/apps/chronos/util/notifications.py:145 #, python-brace-format msgid "Subject: {subject}" msgstr "Предмет: {subject}" -#: aleksis/apps/chronos/util/notifications.py:151 +#: aleksis/apps/chronos/util/notifications.py:149 #, python-brace-format msgid "Room: {room}" msgstr "Кімната: {room}" -#: aleksis/apps/chronos/util/notifications.py:153 +#: aleksis/apps/chronos/util/notifications.py:151 #, python-brace-format msgid "Comment: {comment}." msgstr "Коментар: {comment}." -#: aleksis/apps/chronos/util/notifications.py:156 +#: aleksis/apps/chronos/util/notifications.py:154 #, 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 "" -"Контроль {old}, {date} між {period_from}. та {period_to}. уроками у зоні " -"{area} замінений на {new}." +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 "Контроль {old}, {date} між {period_from}. та {period_to}. уроками у зоні {area} замінений на {new}." -#: aleksis/apps/chronos/util/notifications.py:207 +#: aleksis/apps/chronos/util/notifications.py:204 +msgid "Timetable" +msgstr "Розклад" + +#: aleksis/apps/chronos/util/notifications.py:205 msgid "There are current changes to your timetable." msgstr "У Вашому розкладі Ñ” зміни." -#: aleksis/apps/chronos/views.py:270 -msgid "The substitution has been saved." -msgstr "Заміна збережена." +#~ msgid "Options for timetables" +#~ msgstr "Опції Ð´Ð»Ñ Ñ€Ð¾Ð·ÐºÐ»Ð°Ð´Ñ–Ð²" + +#~ msgid "Optional data for timetables" +#~ msgstr "Додаткові дані Ð´Ð»Ñ Ñ€Ð¾Ð·ÐºÐ»Ð°Ð´Ñ–Ð²" + +#~ msgid "My timetable" +#~ msgstr "Мій розклад" + +#~ msgid "All timetables" +#~ msgstr "УÑÑ– розклади" + +#~ msgid "Daily lessons" +#~ msgstr "Щоденні уроки" + +#~ msgid "Show announcement in timetable views?" +#~ msgstr "Відображати Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ Ð· переглÑдом розкладу?" + +#~ msgid "Can view room timetable" +#~ msgstr "Може переглÑдати розклад кімнати" + +#~ msgid "Timetable widget" +#~ msgstr "Віджет розкладу" -#: aleksis/apps/chronos/views.py:291 -msgid "The substitution has been deleted." -msgstr "Заміна видалена." +#~ msgid "Timetable widgets" +#~ msgstr "Віджети розкладу" -#: aleksis/apps/chronos/templates/chronos/timetable.html:84 -msgid "View class register of the current week" -msgstr "ОглÑд клаÑного журналу поточного тижнÑ" +#~ msgid "Substitution" +#~ msgstr "Заміна" + +#~ msgid "Manage substitution" +#~ msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¼Ñ–Ð½Ð°Ð¼Ð¸" + +#~ msgid "No teachers timetables available." +#~ msgstr "Розклади викладачів недоÑтупні." + +#~ msgid "No group timetables available." +#~ msgstr "Розклади груп недоÑтупні." + +#~ msgid "No room timetables available." +#~ msgstr "Розклади кімнат недоÑтупні." + +#~ msgid "Edit substitution." +#~ msgstr "Редагувати заміну." + +#~ msgid "Edit substitution" +#~ msgstr "Редагувати заміну" + +#~ msgid "Delete" +#~ msgstr "Видалити" + +#~ msgid "SMART PLAN" +#~ msgstr "SMART PLAN" + +#~ msgid "Show week timetable for" +#~ msgstr "Відобразити тижневий розклад длÑ" + +#~ msgid "Cancelled due to an event" +#~ msgstr "СкаÑовано через подію" + +#~ msgid "Cancelled for teachers" +#~ msgstr "СкаÑовано Ð´Ð»Ñ Ð²Ð¸ÐºÐ»Ð°Ð´Ð°Ñ‡Ñ–Ð²" + +#~ msgid "Today" +#~ msgstr "Сьогодні" + +#~ msgid "CW" +#~ msgstr "ТЖ" + +#~ msgid "Group teachers:" +#~ msgstr "Викладачі груп:" + +#~ msgid "Show regular timetable" +#~ msgstr "Відобразити звичайний розклад" + +#~ msgid "View class register of this week" +#~ msgstr "ОглÑд клаÑного журналу за цей тиждень" + +#~ msgid "Show SMART PLAN" +#~ msgstr "Відобразити SMART PLAN" + +#, python-format +#~ msgid "" +#~ "\n" +#~ " My timetable for %(day)s\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " Мій розклад на %(day)s\n" +#~ " " + +#~ msgid "" +#~ "\n" +#~ " There is no timetable linked to your person.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " До Вашої оÑоби жодного журналу не прив'Ñзано.\n" +#~ " " + +#~ msgid "Go to smart plan" +#~ msgstr "Перейти до SMART PLAN" + +#~ msgid "The substitution has been saved." +#~ msgstr "Заміна збережена." + +#~ msgid "The substitution has been deleted." +#~ msgstr "Заміна видалена." + +#~ msgid "View class register of the current week" +#~ msgstr "ОглÑд клаÑного журналу поточного тижнÑ" diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py index ebda7f1eaedae20f3bee422df73a0c8853b2e428..600a20cae801604c76e7d992f8f07d30092dc696 100644 --- a/aleksis/apps/chronos/managers.py +++ b/aleksis/apps/chronos/managers.py @@ -9,13 +9,13 @@ from django.db.models.fields import DateField from django.db.models.functions import Concat from calendarweek import CalendarWeek -from polymorphic.managers import PolymorphicQuerySet from aleksis.apps.chronos.util.date import week_weekday_from_date, week_weekday_to_date from aleksis.apps.cursus.models import Course from aleksis.core.managers import ( AlekSISBaseManagerWithoutMigrations, DateRangeQuerySetMixin, + RecurrencePolymorphicQuerySet, SchoolTermRelatedQuerySet, ) from aleksis.core.models import Group, Person, Room @@ -866,7 +866,7 @@ class RoomPropertiesMixin: return sep.join([room.short_name for room in self.get_rooms()]) -class LessonEventQuerySet(PolymorphicQuerySet): +class LessonEventQuerySet(RecurrencePolymorphicQuerySet): """Queryset with special query methods for lesson events.""" def for_teacher(self, teacher: Union[int, Person]) -> "LessonEventQuerySet": @@ -971,3 +971,11 @@ class LessonEventQuerySet(PolymorphicQuerySet): def not_amending(self) -> "LessonEventQuerySet": """Get all lesson events that are not amending other events.""" return self.filter(amends__isnull=True) + + def amending(self) -> "LessonEventQuerySet": + """Get all lesson events that are amending other events.""" + return self.filter(amends__isnull=False) + + +class SupervisionEventQuerySet(LessonEventQuerySet): + pass diff --git a/aleksis/apps/chronos/migrations/0017_optional_slot_number.py b/aleksis/apps/chronos/migrations/0017_optional_slot_number.py new file mode 100644 index 0000000000000000000000000000000000000000..6ea182cfb9cef39f76a8c65f79ccc106e5af4225 --- /dev/null +++ b/aleksis/apps/chronos/migrations/0017_optional_slot_number.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.7 on 2024-07-26 19:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('chronos', '0016_lessonevent'), + ] + + operations = [ + migrations.AddField( + model_name='lessonevent', + name='slot_number_end', + field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='End slot number'), + ), + migrations.AddField( + model_name='lessonevent', + name='slot_number_start', + field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='Start slot number'), + ), + ] diff --git a/aleksis/apps/chronos/migrations/0017_add_substitution_global_permission.py b/aleksis/apps/chronos/migrations/0018_add_substitution_global_permission.py similarity index 93% rename from aleksis/apps/chronos/migrations/0017_add_substitution_global_permission.py rename to aleksis/apps/chronos/migrations/0018_add_substitution_global_permission.py index 1c34d2ef699d110b3f899f8505f814f55f564dfb..9f871f2021a519715355dfc99e6763438669f989 100644 --- a/aleksis/apps/chronos/migrations/0017_add_substitution_global_permission.py +++ b/aleksis/apps/chronos/migrations/0018_add_substitution_global_permission.py @@ -6,7 +6,7 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('chronos', '0016_lessonevent'), + ('chronos', '0017_optional_slot_number'), ] operations = [ diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index 8cb324f591a48a7a18b211f9d4e091375fd84062..e817203b759c519bda5362841ddbbf8be30763f2 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -42,6 +42,7 @@ from aleksis.apps.chronos.managers import ( LessonPeriodQuerySet, LessonSubstitutionManager, LessonSubstitutionQuerySet, + SupervisionEventQuerySet, SupervisionManager, SupervisionQuerySet, SupervisionSubstitutionManager, @@ -59,7 +60,10 @@ from aleksis.apps.chronos.util.format import format_m2m from aleksis.apps.cursus import models as cursus_models from aleksis.apps.cursus.models import Course from aleksis.apps.resint.models import LiveDocument -from aleksis.core.managers import AlekSISBaseManagerWithoutMigrations, PolymorphicBaseManager +from aleksis.core.managers import ( + AlekSISBaseManagerWithoutMigrations, + RecurrencePolymorphicManager, +) from aleksis.core.mixins import ( ExtensibleModel, GlobalPermissionModel, @@ -1206,20 +1210,26 @@ class AutomaticPlan(LiveDocument): @property def current_start_day(self) -> date: """Get first day which should be shown in the PDF.""" - return TimePeriod.get_next_relevant_day(timezone.now().date(), datetime.now().time()) + from aleksis.apps.chronos.util.chronos_helpers import get_next_relevant_day + + return get_next_relevant_day(timezone.now()) @property def current_end_day(self) -> date: """Get last day which should be shown in the PDF.""" - return self.current_start_day + timedelta(days=self.number_of_days - 1) + from aleksis.apps.chronos.util.chronos_helpers import get_next_relevant_day + + day = self.current_start_day + for _i in range(self.number_of_days - 1): + day = get_next_relevant_day(day) + return day def get_context_data(self) -> dict[str, Any]: """Get context data for generating the substitutions PDF.""" from aleksis.apps.chronos.util.chronos_helpers import get_substitutions_context_data # noqa context = get_substitutions_context_data( - request=None, - is_print=True, + wanted_day=date.today(), number_of_days=self.number_of_days, show_header_box=self.show_header_box, ) @@ -1245,11 +1255,16 @@ class AutomaticPlan(LiveDocument): continue # Check if the changed object is relevant for the time period of the PDF file - if isinstance(version.object, Event): + if not version.object.amends: + return + + if version.object.datetime_start: + date_start = version.object.datetime_start.date() + date_end = version.object.datetime_end.date() + else: date_start = version.object.date_start date_end = version.object.date_end - else: - date_start = date_end = version.object.date + if date_start <= self.current_end_day and date_end >= self.current_start_day: update = True break @@ -1291,10 +1306,17 @@ class LessonEvent(CalendarEvent): name = "lesson" verbose_name = _("Lessons") - objects = PolymorphicBaseManager.from_queryset(LessonEventQuerySet)() + objects = RecurrencePolymorphicManager.from_queryset(LessonEventQuerySet)() title = models.CharField(verbose_name=_("Name"), max_length=255, blank=True) + slot_number_start = models.PositiveSmallIntegerField( + verbose_name=_("Start slot number"), blank=True, null=True + ) + slot_number_end = models.PositiveSmallIntegerField( + verbose_name=_("End slot number"), blank=True, null=True + ) + course = models.ForeignKey( Course, on_delete=models.CASCADE, verbose_name=_("Course"), null=True, blank=True ) @@ -1491,6 +1513,8 @@ class LessonEvent(CalendarEvent): if reference_object.amends else None, "title": reference_object.title, + "slot_number_start": reference_object.slot_number_start, + "slot_number_end": reference_object.slot_number_end, "teachers": [ { "id": t.pk, @@ -1526,10 +1550,22 @@ class LessonEvent(CalendarEvent): @classmethod def get_objects( - cls, request: HttpRequest | None = None, params: dict[str, any] | None = None + cls, + request: HttpRequest | None = None, + params: dict[str, any] | None = None, + no_effect: bool = False, + **kwargs, ) -> Iterable: """Return all objects that should be included in the calendar.""" - objs = super().get_objects(request, params).not_instance_of(SupervisionEvent) + if no_effect: + return super().get_objects(request, params, **kwargs) + objs = ( + super() + .get_objects(request, params, **kwargs) + .not_instance_of(SupervisionEvent) + .select_related("subject", "course") + .prefetch_related("groups", "teachers", "rooms", "groups__members") + ) if request and not has_person(request.user): raise PermissionDenied() @@ -1540,6 +1576,7 @@ class LessonEvent(CalendarEvent): prefetch_absences = params.get("prefetch_absences", False) not_amended = params.get("not_amended", False) not_amending = params.get("not_amending", False) + amending = params.get("amending", False) own = params.get("own", False) all = params.get("all", False) @@ -1552,6 +1589,9 @@ class LessonEvent(CalendarEvent): if not_amending: objs = objs.not_amending() + if amending: + objs = objs.amending() + if request and "own" in params: if own: objs = objs.for_person(request.user.person) @@ -1674,7 +1714,7 @@ class SupervisionEvent(LessonEvent): name = "supervision" verbose_name = _("Supervisions") - objects = PolymorphicBaseManager.from_queryset(LessonEventQuerySet)() + objects = RecurrencePolymorphicManager.from_queryset(SupervisionEventQuerySet)() @classmethod def value_title(cls, reference_object: LessonEvent, request: HttpRequest | None = None) -> str: @@ -1696,13 +1736,25 @@ class SupervisionEvent(LessonEvent): @classmethod def get_objects( - cls, request: HttpRequest | None = None, params: dict[str, any] | None = None + cls, request: HttpRequest | None = None, params: dict[str, any] | None = None, **kwargs ) -> Iterable: """Return all objects that should be included in the calendar.""" - objs = cls.objects.instance_of(cls) + objs = super().get_objects(request, params, no_effect=True, **kwargs) if params: obj_id = int(params.get("id", 0)) type_ = params.get("type", None) + not_amended = params.get("not_amended", False) + not_amending = params.get("not_amending", False) + amending = params.get("amending", False) + + if not_amended: + objs = objs.not_amended() + + if not_amending: + objs = objs.not_amending() + + if amending: + objs = objs.amending() if type_ and obj_id: if type_ == "TEACHER": diff --git a/aleksis/apps/chronos/preferences.py b/aleksis/apps/chronos/preferences.py index e75062cc2209c6a2affddbf2f52a45aaebd0f0d2..b3dc8362091693b313bda2d5f9493d8afa7e7701 100644 --- a/aleksis/apps/chronos/preferences.py +++ b/aleksis/apps/chronos/preferences.py @@ -1,13 +1,16 @@ from datetime import time +from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ +from calendarweek.django import i18n_day_name_choices_lazy from colorfield.widgets import ColorWidget from dynamic_preferences.preferences import Section from dynamic_preferences.types import ( BooleanPreference, IntegerPreference, ModelMultipleChoicePreference, + MultipleChoicePreference, StringPreference, TimePreference, ) @@ -52,6 +55,34 @@ class ShortenGroupsLimit(IntegerPreference): ) +@site_preferences_registry.register +class SubstitutionsRelevantDays(MultipleChoicePreference): + """Relevant days which have substitution plans.""" + + section = chronos + name = "substitutions_relevant_days" + default = [0, 1, 2, 3, 4] + verbose_name = _("Relevant days for substitution plans") + required = True + choices = i18n_day_name_choices_lazy() + + def validate(self, value): + for v in value: + if int(v) not in self.get_choice_values(): + raise ValidationError(f"{v} is not a valid choice") + + +@site_preferences_registry.register +class SubstitutionsDayChangeTime(TimePreference): + """Time when substitution plans should switch to the next day.""" + + section = chronos + name = "substitutions_day_change_time" + default = time(18, 0) + verbose_name = _("Time when substitution plans switch to the next day") + required = True + + @site_preferences_registry.register class SubstitutionsPrintNumberOfDays(IntegerPreference): section = chronos @@ -127,9 +158,6 @@ class GroupTypesTimetables(ModelMultipleChoicePreference): verbose_name = _("Group types to show in timetables") help_text = _("If you leave it empty, all groups will be shown.") - def get_queryset(self): - return GroupType.objects.managed_and_unmanaged() - @site_preferences_registry.register class LessonEventFeedColor(StringPreference): diff --git a/aleksis/apps/chronos/schema/__init__.py b/aleksis/apps/chronos/schema/__init__.py index 6da805e05c64bee2f090b15c9515c68e382c4d12..537b36aa227212aea322203eec9c235f22e18790 100644 --- a/aleksis/apps/chronos/schema/__init__.py +++ b/aleksis/apps/chronos/schema/__init__.py @@ -7,15 +7,16 @@ from django.db.models import F, ManyToManyField, OuterRef, Subquery, Q, Prefetch import graphene from graphene_django import DjangoObjectType -from graphene_django_cud.mutations import ( - DjangoBatchCreateMutation, - DjangoBatchDeleteMutation, - DjangoBatchPatchMutation, -) from reversion import create_revision, set_comment, set_user from aleksis.core.models import CalendarEvent, Group, Person, Room -from aleksis.core.schema.base import DeleteMutation, FilterOrderList +from aleksis.core.schema.base import ( + BaseBatchCreateMutation, + BaseBatchDeleteMutation, + BaseBatchPatchMutation, + DeleteMutation, + FilterOrderList, +) from aleksis.apps.cursus.models import Subject from ..models import LessonEvent @@ -48,6 +49,9 @@ class LessonEventType(DjangoObjectType): model = LessonEvent fields = ( "id", + "title", + "slot_number_start", + "slot_number_end", "amends", "datetime_start", "datetime_end", @@ -95,27 +99,7 @@ class LessonEventType(DjangoObjectType): return [] -class DatetimeTimezoneMixin: - """Handle datetimes for mutations with CalendarEvent objects. - - This is necessary because the client sends timezone information as - ISO string which only includes an offset (+00:00 UTC) and an - offset is not a valid timezone. Instead we set UTC as timezone - here directly. - """ - - @classmethod - def handle_datetime_start(cls, value, name, info) -> int: - value = value.replace(tzinfo=timezone.utc) - return value - - @classmethod - def handle_datetime_end(cls, value, name, info) -> int: - value = value.replace(tzinfo=timezone.utc) - return value - - -class AmendLessonBatchCreateMutation(DatetimeTimezoneMixin, DjangoBatchCreateMutation): +class AmendLessonBatchCreateMutation(BaseBatchCreateMutation): class Meta: model = LessonEvent permissions = ("chronos.edit_substitution_rule",) @@ -133,12 +117,13 @@ class AmendLessonBatchCreateMutation(DatetimeTimezoneMixin, DjangoBatchCreateMut @classmethod def before_save(cls, root, info, input, created_objects): # noqa: A002 + super().before_save(root, info, input, created_objects) for obj in created_objects: obj.timezone = obj.amends.timezone return created_objects -class AmendLessonBatchPatchMutation(DatetimeTimezoneMixin, DjangoBatchPatchMutation): +class AmendLessonBatchPatchMutation(BaseBatchPatchMutation): class Meta: model = LessonEvent permissions = ("chronos.edit_substitution_rule",) @@ -146,12 +131,13 @@ class AmendLessonBatchPatchMutation(DatetimeTimezoneMixin, DjangoBatchPatchMutat @classmethod def before_save(cls, root, info, input, updated_objects): # noqa: A002 + super().before_save(root, info, input, updated_objects) for obj in updated_objects: obj.timezone = obj.amends.timezone return updated_objects -class AmendLessonBatchDeleteMutation(DjangoBatchDeleteMutation): +class AmendLessonBatchDeleteMutation(BaseBatchDeleteMutation): class Meta: model = LessonEvent permissions = ("chronos.delete_substitution_rule",) diff --git a/aleksis/apps/chronos/templates/chronos/partials/datepicker.html b/aleksis/apps/chronos/templates/chronos/partials/datepicker.html deleted file mode 100644 index f7d49f34e44569009b9af35aec1b0f26571773f4..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/datepicker.html +++ /dev/null @@ -1,30 +0,0 @@ -{% load static %} - -{% if not display_date_only %} - <script type="text/javascript" src="{% static "js/helper.js" %}"></script> - {{ datepicker|json_script:"datepicker_data" }} - <script type="text/javascript" src="{% static "js/chronos/date_select.js" %}"></script> -{% endif %} - -<div class="col s2 no-padding"> - <a class="waves-effect waves-secondary btn-flat btn-flat-medium left" href="{{ url_prev }}"> - <i class="material-icons iconify center" data-icon="mdi:chevron-left"></i> - </a> -</div> - -{% if display_date_only %} - <div class="col s8"> - <span class="card-title center-block" id="date"> - {{ day|date:"l" }}, {{ day }} - </span> - </div> -{% else %} - <div class="col s8 no-padding"> - <input type="text" class="datepicker center-align" id="date"> - </div> -{% endif %} -<div class="col s2 no-padding"> - <a class="waves-effect waves-secondary btn-flat btn-flat-medium right" href="{{ url_next }}"> - <i class="material-icons iconify center" data-icon="mdi:chevron-right"></i> - </a> -</div> diff --git a/aleksis/apps/chronos/templates/chronos/partials/elements.html b/aleksis/apps/chronos/templates/chronos/partials/elements.html deleted file mode 100644 index a7df614d20a2bc7fb2c203d90b0473756294da0a..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/elements.html +++ /dev/null @@ -1,13 +0,0 @@ -<div class="card lesson-card {% if active_day and week_day == active_day %} z-depth-5 active {% endif %}"> - <div class="card-content"> - {% for element in elements %} - {% if element.label_ == "lesson_period" %} - {% include "chronos/partials/lesson.html" with lesson_period=element %} - {% elif element.label_ == "extra_lesson" and smart %} - {% include "chronos/partials/extra_lesson.html" with extra_lesson=element %} - {% elif element.label_ == "event" and smart %} - {% include "chronos/partials/event.html" with event=element %} - {% endif %} - {% endfor %} - </div> -</div> diff --git a/aleksis/apps/chronos/templates/chronos/partials/event.html b/aleksis/apps/chronos/templates/chronos/partials/event.html deleted file mode 100644 index 3aa6b797639598c0e24051053f040fcd3f1aead4..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/event.html +++ /dev/null @@ -1,33 +0,0 @@ -<div class="lesson-with-event"> - <p> - {# Teacher or room > Display groups #} - {% if type.value == "teacher" or type.value == "room" %} - {% include "chronos/partials/groups.html" with groups=event.groups.all %} - {% endif %} - - {# Class or room > Display teachers #} - {% if type.value == "room" or type.value == "group" %} - {% include "chronos/partials/teachers.html" with teachers=event.teachers.all %} - {% endif %} - - {# Teacher or class > Display rooms #} - {% if type.value == "teacher" or type.value == "group" %} - {% for room in event.rooms.all %} - {% include "chronos/partials/room.html" with room=room %}{% if not forloop.last %},{% endif %} - {% endfor %} - {% endif %} - - {% if type.value == "teacher" and not event.groups.all and not event.rooms.all and event.title %} - <em>{{ event.title }}</em> - {% elif type.value == "group" and not event.teachers.all and not event.groups.all and event.title %} - <em>{{ event.title }}</em> - {% elif type.value == "room" and not event.teachers.all and not event.groups.all and event.title %} - <em>{{ event.title }}</em> - {% elif event.title %} - <br/> - <small> - <em>{{ event.title }}</em> - </small> - {% endif %} - </p> -</div> diff --git a/aleksis/apps/chronos/templates/chronos/partials/extra_lesson.html b/aleksis/apps/chronos/templates/chronos/partials/extra_lesson.html deleted file mode 100644 index 1113f011f0164be5a92f1dbe7ef3b32e8db07ed5..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/extra_lesson.html +++ /dev/null @@ -1,28 +0,0 @@ -<div class="lesson-with-sub" - style="{% include "chronos/partials/subject_colour.html" with subject=extra_lesson.subject %}"> - <p> - {# Teacher or room > Display groups #} - {% if type.value == "teacher" or type.value == "room" %} - {% include "chronos/partials/groups.html" with groups=extra_lesson.groups.all %} - {% endif %} - - {# Class or room > Display teachers #} - {% if type.value == "room" or type.value == "group" %} - {% include "chronos/partials/teachers.html" with teachers=extra_lesson.teachers.all %} - {% endif %} - - {% include "chronos/partials/subject.html" with subject=extra_lesson.subject %} - - {# Teacher or class > Display rooms #} - {% if type.value == "teacher" or type.value == "group" %} - {% include "chronos/partials/room.html" with room=extra_lesson.room %} - {% endif %} - - {% if extra_lesson.comment %} - <br/> - <small> - <em>{{ extra_lesson.comment }}</em> - </small> - {% endif %} - </p> -</div> diff --git a/aleksis/apps/chronos/templates/chronos/partials/group.html b/aleksis/apps/chronos/templates/chronos/partials/group.html index d2e345d53df2bec9020b9de38139726744d1effe..3105150c7630d7d6fd550536366900d3ba3a3fa1 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/group.html +++ b/aleksis/apps/chronos/templates/chronos/partials/group.html @@ -1,3 +1 @@ -<a href="{% url "timetable" "group" item.pk %}"> - {{ item.short_name }}{% if not forloop.last %},{% endif %} -</a> +{{ item.short_name }}{% if not forloop.last %},{% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/groups.html b/aleksis/apps/chronos/templates/chronos/partials/groups.html index fb85c6d4dce53da5aea4ecef805fb52ddab4eed9..61bf6927b350f89cb2f191acc593dcb2758fb055 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/groups.html +++ b/aleksis/apps/chronos/templates/chronos/partials/groups.html @@ -1,5 +1,5 @@ {% if groups.count == 1 and groups.0.parent_groups.all and request.site.preferences.chronos__use_parent_groups %} - {% include "chronos/partials/groups_part.html" with groups=groups.0.parent_groups.all no_collapsible=no_collapsible %} + {% include "chronos/partials/groups_part.html" with groups=groups.0.parent_groups.all %} {% else %} {% include "chronos/partials/groups_part.html" with groups=groups no_collapsible=no_collapsible %} {% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/groups_part.html b/aleksis/apps/chronos/templates/chronos/partials/groups_part.html index edafcb1977d04a18fb2a53651cf4ad6def3f0b19..d4c8f9f2a71c066f61b4c0a1c71d44674b190f0a 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/groups_part.html +++ b/aleksis/apps/chronos/templates/chronos/partials/groups_part.html @@ -1,7 +1,3 @@ -{% if groups.count > request.site.preferences.chronos__shorten_groups_limit and request.user.person.preferences.chronos__shorten_groups and not no_collapsible %} - {% include "components/text_collapsible.html" with template="chronos/partials/group.html" qs=groups %} -{% else %} - {% for group in groups %} - {% include "chronos/partials/group.html" with item=group %} - {% endfor %} -{% endif %} +{% for group in groups %} + {% include "chronos/partials/group.html" with item=group %} +{% endfor %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/headerbox.html b/aleksis/apps/chronos/templates/chronos/partials/headerbox.html index 1ed1e7de07cdcf64b2afea35f93f40b74aca9bd2..c3862168a7f71127935987b99767fbed20d9ab79 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/headerbox.html +++ b/aleksis/apps/chronos/templates/chronos/partials/headerbox.html @@ -1,53 +1,53 @@ {% load i18n %} {% if affected_teachers or affected_groups or absent_teachers or absent_groups %} - <div class="{% if not print %}card{% endif %}"> - <div class="{% if not print %}card-content{% endif %}"> + <div> + <div> {% if absent_teachers %} <div class="row no-margin"> - <div class="col {% if not print %}s12 m3{% else %}s3{% endif %}"> + <div class="col"> <strong class="truncate"> {% trans "Absent teachers" %} </strong> </div> - <div class="col {% if not print %}s12 m9{% else %}s9{% endif %} black-text-a"> + <div class="col"> {% include "chronos/partials/teachers.html" with teachers=absent_teachers %} </div> </div> {% endif %} {% if absent_groups %} <div class="row no-margin"> - <div class="col {% if not print %}s12 m3{% else %}s3{% endif %}"> + <div class="col"> <strong class="truncate"> {% trans "Absent groups" %} </strong> </div> - <div class="col {% if not print %}s12 m9{% else %}s9{% endif %} black-text-a"> + <div class="col"> {% include "chronos/partials/groups.html" with groups=absent_groups no_collapsible=True %} </div> </div> {% endif %} {% if affected_teachers %} <div class="row no-margin"> - <div class="col {% if not print %}s12 m3{% else %}s3{% endif %}"> + <div class="col"> <strong class="truncate"> {% trans "Affected teachers" %} </strong> </div> - <div class="col {% if not print %}s12 m9{% else %}s9{% endif %} black-text-a"> + <div class="col"> {% include "chronos/partials/teachers.html" with teachers=affected_teachers %} </div> </div> {% endif %} {% if affected_groups %} <div class="row no-margin"> - <div class="col {% if not print %}s12 m3{% else %}s3{% endif %}"> + <div class="col"> <strong class="truncate"> {% trans "Affected groups" %} </strong> </div> - <div class="col {% if not print %}s12 m9{% else %}s9{% endif %} black-text-a"> - {% include "chronos/partials/groups.html" with groups=affected_groups no_collapsible=True %} + <div class="col"> + {% include "chronos/partials/groups.html" with groups=affected_groups %} </div> </div> {% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/holiday.html b/aleksis/apps/chronos/templates/chronos/partials/holiday.html deleted file mode 100644 index 85fc42d4ffd50621da8fe04802b3c2d18a509b71..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/holiday.html +++ /dev/null @@ -1 +0,0 @@ -<span class="badge new blue center-align holiday-badge">{{ holiday.title }}</span> diff --git a/aleksis/apps/chronos/templates/chronos/partials/lesson.html b/aleksis/apps/chronos/templates/chronos/partials/lesson.html deleted file mode 100644 index 3fa1f75788ae6433bc1bf2ef9983a06df8fb59ff..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/lesson.html +++ /dev/null @@ -1,103 +0,0 @@ -{% load i18n %} - -<div style=" - {% with sub=lesson_period.get_substitution %} - {# Display background color only if lesson is not cancelled and it is not the old room #} - {% if not smart %} - {% include "chronos/partials/subject_colour.html" with subject=lesson_period.lesson.subject %} - {% elif not sub.cancelled and not lesson_period.get_substitution.cancelled_for_teachers and not lesson_period.replaced_by_event %} - {% if not type.value == "room" or lesson_period.room == lesson_period.get_room or lesson_period.get_room == el %} - {% if sub and sub.subject %} - {% include "chronos/partials/subject_colour.html" with subject=sub.subject %} - {% else %} - {% include "chronos/partials/subject_colour.html" with subject=lesson_period.lesson.subject %} - {% endif %} - {% endif %} - {% endif %} - {% endwith %} - " - {# Add CSS class for sub when it's a sub #} - class="{% if smart %}{% if lesson_period.get_substitution or lesson_period.replaced_by_event %}lesson-with-sub{% endif %}{% endif %}" -> - <p> - {% if lesson_period.replaced_by_event and smart %} - {% include "chronos/partials/groups.html" with groups=lesson_period.lesson.groups.all %} - {% include "chronos/partials/subject.html" with subject=lesson_period.lesson.subject %} - <br/> - <span class="badge new green">{% trans "Cancelled due to an event" %}</span> - {% elif lesson_period.get_substitution and smart %} - {% with sub=lesson_period.get_substitution %} - {# SUBSTITUTION #} - {% if type.value == "room" and lesson_period.room != lesson_period.get_room and lesson_period.get_room != el %} - {# When it's the old room, let it empty #} - - {% elif sub.cancelled or sub.cancelled_for_teachers %} - {# When a badge (cancellation, etc.) exists, then display it with the teacher#} - - {# Class or room > Display teacher #} - {% if type.value == "group" or type.value == "room" and lesson_period.lesson.teachers.all %} - {% include "chronos/partials/teachers.html" with teachers=lesson_period.lesson.teachers.all %}<br/> - {% endif %} - - {# Badge #} - {% include "chronos/partials/subs/badge.html" with sub=sub %} - - {% else %} - {# Display sub #} - - {# Teacher or room > display classes #} - {% if type.value == "teacher" or type.value == "room" %} - {% include "chronos/partials/groups.html" with groups=lesson_period.lesson.groups.all %} - {% endif %} - - {# Display teacher with tooltip #} - {% include "chronos/partials/subs/teachers.html" with type="substitution" el=sub %} - - {# Display subject #} - {% include "chronos/partials/subs/subject.html" with type="substitution" el=sub %} - - {# Teacher or class > display room #} - {% if type.value == "teacher" or type.value == "group" %} - {% include "chronos/partials/subs/room.html" with type="substitution" el=sub %} - {% endif %} - {% endif %} - - - {# Display the comment (e. g. work orders) #} - {% if sub.comment %} - <br> - <small> - <em>{{ sub.comment }}</em> - </small> - {% endif %} - {% endwith %} - - - {% else %} - {# Normal plan #} - - {# Teacher or room > Display classes #} - {% if type.value == "teacher" or type.value == "room" %} - {# {{ element_container.element.classes }}#} - {% if lesson_period.lesson.groups %} - {% include "chronos/partials/groups.html" with groups=lesson_period.lesson.groups.all %} - {% endif %} - {% endif %} - - {# Class or room > Display teacher #} - {% if type.value == "room" or type.value == "group" %} - {% include "chronos/partials/teachers.html" with teachers=lesson_period.lesson.teachers.all %} - {% endif %} - - {# Display subject #} - {% include "chronos/partials/subject.html" with subject=lesson_period.lesson.subject %} - - {# Teacher or class > Display room #} - {% if type.value == "teacher" or type.value == "group" %} - {% if lesson_period.room %} - {% include "chronos/partials/room.html" with room=lesson_period.room %} - {% endif %} - {% endif %} - {% endif %} - </p> -</div> diff --git a/aleksis/apps/chronos/templates/chronos/partials/lessons_col.html b/aleksis/apps/chronos/templates/chronos/partials/lessons_col.html deleted file mode 100644 index 25ddedc47f422916b2e44f5419151e1a36ce8332..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/lessons_col.html +++ /dev/null @@ -1,30 +0,0 @@ -{% if holiday %} - <div class="row"> - <div class="col s12"> - <div class="card col s12 holiday-card"> - <div class="card-content"> - <p> - {% include "chronos/partials/holiday.html" with holiday=holiday %}<br/> - </p> - </div> - </div> - </div> - </div> -{% else %} - {% for row in timetable %} - <div class="row"> - <div class="col s4"> - {% if row.type == "period" %} - {% include "chronos/partials/period_time.html" with period=row.period periods=periods %} - {% endif %} - </div> - <div class="col s8"> - {% if row.type == "period" %} - {% include "chronos/partials/elements.html" with elements=row.col %} - {% else %} - {% include "chronos/partials/supervision.html" with supervision=row.col %} - {% endif %} - </div> - </div> - {% endfor %} -{% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/period_time.html b/aleksis/apps/chronos/templates/chronos/partials/period_time.html deleted file mode 100644 index ebd76dab6393c83332e07c1b194248480846323f..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/period_time.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load data_helpers %} - -<div class="card timetable-title-card"> - <div class="card-content"> - - {# Lesson number #} - <span class="card-title left"> - {{ period }}. - </span> - - {# Time dimension of lesson #} - <div class="right timetable-time grey-text text-darken-2"> - {% with period_obj=periods|get_dict:period %} - <span>{{ period_obj.0|time }}</span> - <br/> - <span>{{ period_obj.1|time }}</span> - {% endwith %} - </div> - </div> -</div> diff --git a/aleksis/apps/chronos/templates/chronos/partials/room.html b/aleksis/apps/chronos/templates/chronos/partials/room.html deleted file mode 100644 index c96a7fd01975a86ac1bb66241a82872333d084bc..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/room.html +++ /dev/null @@ -1,7 +0,0 @@ -{% if room %} - <span class="tooltipped" data-position="bottom" data-tooltip="{{ room.name }}"> - <a href="{% url "timetable" "room" room.pk %}"> - {{ room.short_name }} - </a> - </span> -{% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/rooms.html b/aleksis/apps/chronos/templates/chronos/partials/rooms.html new file mode 100644 index 0000000000000000000000000000000000000000..e1f895c7d4aea8c03e02f71f0752e2a495e85c4a --- /dev/null +++ b/aleksis/apps/chronos/templates/chronos/partials/rooms.html @@ -0,0 +1,3 @@ +{% for room in rooms %} + {{ room.short_name|default:room.name }}{% if not forloop.last %},{% endif %} +{% endfor %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/subject.html b/aleksis/apps/chronos/templates/chronos/partials/subject.html index e326c75a2419b28880578a32a1ffea4002194847..efed11727cb1b824f238d0e33d08cd2036f60837 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/subject.html +++ b/aleksis/apps/chronos/templates/chronos/partials/subject.html @@ -1,3 +1 @@ -<strong> - <span data-position="bottom" class="tooltipped" data-tooltip="{{ subject.name }}">{{ subject.short_name }}</span> -</strong> +{{ subject.short_name|default:subject.name }} diff --git a/aleksis/apps/chronos/templates/chronos/partials/subject_colour.html b/aleksis/apps/chronos/templates/chronos/partials/subject_colour.html deleted file mode 100644 index 4cead55119b2c4b799c13018dc175c2fe414f059..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/subject_colour.html +++ /dev/null @@ -1,6 +0,0 @@ -{% if subject.colour_fg %} - color: {{ subject.colour_fg }}; -{% endif %} -{% if subject.colour_bg and subject.colour_bg != subject.colour_fg %} - background-color: {{ subject.colour_bg }}; -{% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/subs/badge.html b/aleksis/apps/chronos/templates/chronos/partials/subs/badge.html index c04c9dd331eeb4f271ae5e7c212b43a776c71a51..f0210546a37921a76c78a2e2d100f6b01092f1a9 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/subs/badge.html +++ b/aleksis/apps/chronos/templates/chronos/partials/subs/badge.html @@ -1,7 +1,5 @@ {% load i18n %} -{% if sub.cancelled %} +{% if el.cancelled %} <span class="badge new green">{% trans "Cancelled" %}</span> -{% elif item.el.cancelled_for_teachers %} - <span class="badge new green">{% trans "Cancelled for teachers" %}</span> {% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/subs/colour.html b/aleksis/apps/chronos/templates/chronos/partials/subs/colour.html index 833a24b2080d1ecb555ba94c8159fd8550ede7ce..06ccab2698661fd484ce14c9a06adb57551f225c 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/subs/colour.html +++ b/aleksis/apps/chronos/templates/chronos/partials/subs/colour.html @@ -1,11 +1,5 @@ -{% if item.type == "substitution" %} - {% if item.el.cancelled or item.el.cancelled_for_teachers %} - green-text - {% else %} - black-text - {% endif %} -{% elif item.type == "supervision_substitution" %} - blue-text -{% elif item.type == "event" %} - purple-text +{% if el.cancelled %} + green-text +{% else %} + black-text {% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/subs/groups.html b/aleksis/apps/chronos/templates/chronos/partials/subs/groups.html index d1a4da990b388458a9de5614acd17d988c4aac09..447054384f19929af4872de104df01401254be2a 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/subs/groups.html +++ b/aleksis/apps/chronos/templates/chronos/partials/subs/groups.html @@ -1,5 +1,11 @@ -{% if type == "substitution" %} - {% include "chronos/partials/groups.html" with groups=el.lesson_period.lesson.groups.all %} -{% elif type == "extra_lesson" or type == "event" %} +{% if el.cancelled and el.amends.groups.all %} + {% include "chronos/partials/groups.html" with groups=el.amends.groups.all %} +{% elif el.groups.all and el.amends.groups.all %} + <s>{% include "chronos/partials/groups.html" with groups=el.amends.groups.all %}</s> + → + <strong>{% include "chronos/partials/groups.html" with groups=el.groups.all %}</strong> +{% elif el.groups.all and not el.amends.groups.all %} {% include "chronos/partials/groups.html" with groups=el.groups.all %} +{% elif el.amends.groups.all %} + {% include "chronos/partials/groups.html" with groups=el.amends.groups.all %} {% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/subs/period.html b/aleksis/apps/chronos/templates/chronos/partials/subs/period.html index ef1d2838373b1537444aa6f2248ddc4c0e644267..9aa39762a4a0b88b58351b33ab0b02cc759b63b1 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/subs/period.html +++ b/aleksis/apps/chronos/templates/chronos/partials/subs/period.html @@ -1,19 +1,14 @@ +{% load i18n %} <strong> - {% if type == "substitution" and item.start_period == item.end_period %} - {{ el.lesson_period.period.period }}. - {% elif type == "substitution" %} - {{ item.start_period }}.–{{ item.end_period }}. - {% elif type == "extra_lesson" %} - {{ el.period.period }}. - {% elif type == "event" %} - {% if el.period_from_on_day == el.period_to_on_day %} - {{ el.period_from_on_day }}. + {% if el.REFERENCE_OBJECT.slot_number_start and el.REFERENCE_OBJECT.slot_number_end %} + {% if el.REFERENCE_OBJECT.slot_number_start == el.REFERENCE_OBJECT.slot_number_end %} + {{ el.REFERENCE_OBJECT.slot_number_start }}. {% else %} - {{ el.period_from_on_day }}.–{{ el.period_to_on_day }}. + {{ el.REFERENCE_OBJECT.slot_number_start }}.–{{ el.REFERENCE_OBJECT.slot_number_end }}. {% endif %} - {% elif type == "supervision_substitution" %} - {% with break=el.supervision.break_item %} - {{ break.after_period_number }}./{{ break.before_period_number }}. - {% endwith %} + {% elif el.DTSTART.dt.time %} + {{ el.DTSTART.dt.time }}–{{ el.DTEND.dt.time }} + {% else %} + {% trans "all day" %} {% endif %} </strong> diff --git a/aleksis/apps/chronos/templates/chronos/partials/subs/room.html b/aleksis/apps/chronos/templates/chronos/partials/subs/room.html deleted file mode 100644 index 94f2d3574992d23dffe3d6f9b03ffdd3e75cb042..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/subs/room.html +++ /dev/null @@ -1,39 +0,0 @@ -{% if type == "substitution" %} - {% if el.cancelled or el.cancelled_for_teachers %} - {# Cancelled lesson: no room #} - {% elif el.room and el.lesson_period.room %} - {# New and old room available #} - <span class="tooltipped" data-position="bottom" - data-tooltip="{{ el.lesson_period.room.name }} → {{ el.room.name }}" - title="{{ el.lesson_period.room.name }} → {{ el.room.name }}"> - <a href="{% url "timetable" "room" el.lesson_period.room.pk %}"> - <s>{{ el.lesson_period.room.short_name }}</s> - </a> - → - <a href="{% url "timetable" "room" el.room.pk %}"> - <strong>{{ el.room.short_name }}</strong> - </a> - </span> - {% elif el.room and not el.lesson_period.room %} - {# Only new room available #} - {% include "chronos/partials/room.html" with room=el.room %} - {% elif not el.room and not el.lesson_period.room %} - {# Nothing to view #} - {% else %} - {# Only old room available #} - {% include "chronos/partials/room.html" with room=el.lesson_period.room %} - {% endif %} -{% elif type == "supervision_substitution" %} - {% with supervision=el.supervision %} - <span data-position="bottom" class="tooltipped" - data-tooltip="{{ supervision.area.name }}" title="{{ supervision.area.name }}"> - {{ supervision.area.short_name }} - </span> - {% endwith %} -{% elif type == "extra_lesson" %} - {% include "chronos/partials/room.html" with room=el.room %} -{% elif type == "event" %} - {% for room in el.rooms.all %} - {% include "chronos/partials/room.html" with room=room %}{% if not forloop.last %},{% endif %} - {% endfor %} -{% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/subs/rooms.html b/aleksis/apps/chronos/templates/chronos/partials/subs/rooms.html new file mode 100644 index 0000000000000000000000000000000000000000..6a1ad0dedf556584323a97c9d4168497af81af35 --- /dev/null +++ b/aleksis/apps/chronos/templates/chronos/partials/subs/rooms.html @@ -0,0 +1,11 @@ +{% if el.cancelled and el.amends.rooms.all %} + {% include "chronos/partials/rooms.html" with rooms=el.amends.rooms.all %} +{% elif el.rooms.all and el.amends.rooms.all %} + <s>{% include "chronos/partials/rooms.html" with rooms=el.amends.rooms.all %}</s> + → + <strong>{% include "chronos/partials/rooms.html" with rooms=el.rooms.all %}</strong> +{% elif el.rooms.all and not el.amends.rooms.all %} + {% include "chronos/partials/rooms.html" with rooms=el.rooms.all %} +{% elif el.amends.rooms.all %} + {% include "chronos/partials/rooms.html" with rooms=el.amends.rooms.all %} +{% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/subs/subject.html b/aleksis/apps/chronos/templates/chronos/partials/subs/subject.html index 1b7a3c5ce4e0ba6f286778adfb846d5006b9e2cb..033d7b745a36aa3d859ad95b79e705b9ce4cfb87 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/subs/subject.html +++ b/aleksis/apps/chronos/templates/chronos/partials/subs/subject.html @@ -1,28 +1,21 @@ {% load i18n %} - -{% if type == "substitution" %} - {% if not el.lesson_period.lesson.subject and not el.subject %} - {% elif el.cancelled or el.cancelled_for_teachers %} - <span data-position="bottom" class="tooltipped" data-tooltip="{{ el.lesson_period.lesson.subject.name }}"> - <s>{{ el.lesson_period.lesson.subject.short_name }}</s> - </span> - {% elif el.subject and el.lesson_period.lesson.subject %} - <span data-position="bottom" class="tooltipped" data-tooltip="{{ el.lesson_period.lesson.subject.name }}"> - <s>{{ el.lesson_period.lesson.subject.short_name }}</s> - </span> - → - <span data-position="bottom" class="tooltipped" data-tooltip="{{ el.subject.name }}"> - <strong>{{ el.subject.short_name }}</strong> - </span> - {% elif el.subject and not el.lesson_period.lesson.subject %} - {% include "chronos/partials/subject.html" with subject=el.subject %} - {% else %} - {% include "chronos/partials/subject.html" with subject=el.lesson_period.lesson.subject %} - {% endif %} -{% elif type == "supervision_substitution" %} +{% if el.name == "supervision" %} {% trans "Supervision" %} -{% elif type == "extra_lesson" %} +{% elif not el.amends.subject and not el.subject %} + {% if el.amends.title %} + <s>{{ el.amends.title }}</s> + {% endif %} + {% if el.title %} + <s>{{ el.title }}</s> + {% endif %} +{% elif el.cancelled %} + <s>{% include "chronos/partials/subject.html" with subject=el.amends.subject %}</s> +{% elif el.subject and el.amends.subject %} + <s>{% include "chronos/partials/subject.html" with subject=el.amends.subject %}</s> + → + <strong>{% include "chronos/partials/subject.html" with subject=el.subject %}</strong> +{% elif el.subject and not el.amends.subject %} {% include "chronos/partials/subject.html" with subject=el.subject %} -{% elif type == "event" %} - {% trans "Event" %} +{% else %} + {% include "chronos/partials/subject.html" with subject=el.amends.subject %} {% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/subs/teachers.html b/aleksis/apps/chronos/templates/chronos/partials/subs/teachers.html index 4fa80d8fc7f82d8cae15010083ad4b93222bba41..9e08eeb5aca391263f0112010d58f58766af5f6a 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/subs/teachers.html +++ b/aleksis/apps/chronos/templates/chronos/partials/subs/teachers.html @@ -1,27 +1,15 @@ -{% if type == "substitution" %} - {% if el.cancelled and el.lesson_period.lesson.teachers.all %} - {% include "chronos/partials/teachers.html" with teachers=el.lesson_period.lesson.teachers.all %} - {% elif el.teachers.all and el.lesson_period.lesson.teachers.all %} - <s> - {% include "chronos/partials/teachers.html" with teachers=el.lesson_period.lesson.teachers.all %} - </s> - → - <strong> - {% include "chronos/partials/teachers.html" with teachers=el.teachers.all %} - </strong> - {% elif el.teachers.all and not el.lesson_period.lesson.teachers.all %} - {% include "chronos/partials/teachers.html" with teachers=el.teachers.all %} - {% elif el.lesson_period.lesson.teachers.all %} - {% include "chronos/partials/teachers.html" with teachers=el.lesson_period.lesson.teachers.all %} - {% endif %} -{% elif type == "supervision_substitution" %} +{% if el.cancelled and el.amends.teachers.all %} + {% include "chronos/partials/teachers.html" with teachers=el.amends.teachers.all %} +{% elif el.teachers.all and el.amends.teachers.all %} <s> - {% include "chronos/partials/teachers.html" with teachers=el.supervision.teachers %} + {% include "chronos/partials/teachers.html" with teachers=el.amends.teachers.all %} </s> → <strong> - {% include "chronos/partials/teachers.html" with teachers=el.teachers %} + {% include "chronos/partials/teachers.html" with teachers=el.teachers.all %} </strong> -{% elif type == "extra_lesson" or type == "event" %} +{% elif el.teachers.all and not el.amends.teachers.all %} {% include "chronos/partials/teachers.html" with teachers=el.teachers.all %} +{% elif el.amends.teachers.all %} + {% include "chronos/partials/teachers.html" with teachers=el.amends.teachers.all %} {% endif %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/supervision.html b/aleksis/apps/chronos/templates/chronos/partials/supervision.html deleted file mode 100644 index 0fff8f5cfef6c5fa1e897c0705210ce3d1a3ca54..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/supervision.html +++ /dev/null @@ -1,29 +0,0 @@ -{% load i18n %} - -<div class="card lesson-card supervision-card {% if active_day and week_day == active_day %} z-depth-5 active {% endif %}"> - <div class="card-content"> - {% if supervision %} - <div style=" - {% if supervision.area.colour_fg %} - color: {{ supervision.area.colour_fg }}; - {% endif %} - {% if supervision.area.colour_bg and supervision.area.colour_bg != supervision.area.colour_fg %} - background-color: {{ supervision.area.colour_bg }}; - {% endif %} - " class="{% if supervision.get_substitution and smart %}lesson-with-sub{% endif %}"> - <p> - <strong>{% trans "Supervision" %}</strong> - <span data-position="bottom" class="tooltipped" - data-tooltip="{{ supervision.area.name }}" title="{{ supervision.area.name }}"> - {{ supervision.area.short_name }} - </span> - {% if supervision.get_substitution and smart %} - {% include "chronos/partials/subs/teachers.html" with type="supervision_substitution" el=supervision.get_substitution %} - {% elif type == "supervision_area" %} - {% include "chronos/partials/teachers.html" with teachers=supervision.teachers %} - {% endif %} - </p> - </div> - {% endif %} - </div> -</div> diff --git a/aleksis/apps/chronos/templates/chronos/partials/teachers.html b/aleksis/apps/chronos/templates/chronos/partials/teachers.html index d7ec97197f1309c651d0a8c07b0d1e387ecaade8..f506b4b14287cb35d8f4127cd21aafdd223f3287 100644 --- a/aleksis/apps/chronos/templates/chronos/partials/teachers.html +++ b/aleksis/apps/chronos/templates/chronos/partials/teachers.html @@ -1,8 +1,3 @@ {% for teacher in teachers %} - <span data-position="bottom" class="tooltipped" - data-tooltip="{{ teacher }}"> - <a href="{% url "timetable" "teacher" teacher.pk %}"> - {{ teacher.short_name }}{% if not forloop.last %},{% endif %} - </a> - </span> + {{ teacher.short_name|default:teacher.full_name }}{% if not forloop.last %},{% endif %} {% endfor %} diff --git a/aleksis/apps/chronos/templates/chronos/partials/today.html b/aleksis/apps/chronos/templates/chronos/partials/today.html deleted file mode 100644 index 8f3897c26b5de1d4c69d825d828e8df6630cf682..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/today.html +++ /dev/null @@ -1,2 +0,0 @@ -{% load i18n %} -<span class="badge new orange center-align holiday-badge">{% trans "Today" %}</span> diff --git a/aleksis/apps/chronos/templates/chronos/partials/week_select.html b/aleksis/apps/chronos/templates/chronos/partials/week_select.html deleted file mode 100644 index e9b57b84ceb1ce5443676cb9e6711640bb7bebd9..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/week_select.html +++ /dev/null @@ -1,47 +0,0 @@ -{% load i18n %} - -<div class="col s12 m6 right"> - <div class="col s2 no-print"> - <a class="waves-effect waves-teal btn-flat btn-flat-medium right" href="{{ url_prev }}"> - <i class="material-icons iconify center" data-icon="mdi:chevron-left"></i> - </a> - </div> - - <div class="input-field col s8 no-margin hide-on-med-and-up"> - <select id="calendar-week-1"> - {% for week in weeks %} - <option value="{{ week.week }}" {% if week == wanted_week %} - selected {% endif %}>{% trans "CW" %} {{ week.week }} - ({{ week.0|date:"SHORT_DATE_FORMAT" }}–{{ week.6|date:"SHORT_DATE_FORMAT" }}) - </option> - {% endfor %} - </select> - </div> - - <div class="input-field col s8 no-margin hide-on-med-and-down"> - <select id="calendar-week-2"> - {% for week in weeks %} - <option value="{{ week.week }}" {% if week == wanted_week %} - selected {% endif %}>{% trans "CW" %} {{ week.week }} - ({{ week.0|date:"j.n." }}–{{ week.6|date:"SHORT_DATE_FORMAT" }}) - </option> - {% endfor %} - </select> - </div> - - <div class="input-field col s8 no-margin hide-on-small-and-down hide-on-large-only"> - <select id="calendar-week-3"> - {% for week in weeks %} - <option value="{{ week.week }}" {% if week == wanted_week %} - selected {% endif %}>{% trans "CW" %} {{ week.week }} ({{ week.0|date:"j.n." }}–{{ week.6|date:"j.n." }}) - </option> - {% endfor %} - </select> - </div> - - <div class="col s2 no-print"> - <a class="waves-effect waves-teal btn-flat btn-flat-medium left" href="{{ url_next }}"> - <i class="material-icons iconify center" data-icon="mdi:chevron-right"></i> - </a> - </div> -</div> diff --git a/aleksis/apps/chronos/templates/chronos/partials/week_timetable.html b/aleksis/apps/chronos/templates/chronos/partials/week_timetable.html deleted file mode 100644 index 22030da954fd3f96ccf324e4ef7b50ab76862835..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/partials/week_timetable.html +++ /dev/null @@ -1,71 +0,0 @@ -{# Week days #} -<div class="row"> - <div class="col {% if active_day %}s1{% else %}s2{% endif %}"> - - </div> - {# Show short weekdays on tablets #} - {% for weekday in weekdays_short %} - <div class="col s2 hide-on-large-only"> - <div class="card timetable-title-card {% if active_day and weekday.date == active_day %} z-depth-5 {% endif %}"> - <div class="card-content"> - <span class="card-title"> - {{ weekday.name }} - </span> - {% if smart %} - {{ weekday.date }} - {% if weekday.holiday %} - <br/>{% include "chronos/partials/holiday.html" with holiday=weekday.holiday %} - {% endif %} - {% if weekday.date == today %} - <br/> {% include "chronos/partials/today.html" %} - {% endif %} - {% endif %} - </div> - </div> - </div> - {% endfor %} - - {# Show long weekdays elsewere #} - {% for weekday in weekdays %} - <div class="col {% if weekday.date == active_day %} s3 {% else %} s2 {% endif %} hide-on-med-only"> - <div class="card timetable-title-card {% if active_day and weekday.date == active_day %} z-depth-5 {% endif %}"> - <div class="card-content"> - <span class="card-title"> - {{ weekday.name }} - </span> - {% if smart %} - {{ weekday.date }} - {% if weekday.holiday %} - <br/>{% include "chronos/partials/holiday.html" with holiday=weekday.holiday %} - {% endif %} - {% if weekday.date == today %} - <br/> {% include "chronos/partials/today.html" %} - {% endif %} - {% endif %} - </div> - </div> - </div> - {% endfor %} -</div> - -{# Lessons #} -{% for row in timetable %} -<div class="row"> - <div class="col {% if active_day %}s1{% else %}s2{% endif %}"> - {% if row.type == "period" %} - {% include "chronos/partials/period_time.html" with period=row.period periods=periods %} - {% endif %} - </div> - - {% for col in row.cols %} - {# A lesson #} - <div class="col {% if forloop.counter0 == active_day.weekday %} s3 {% else %} s2 {% endif %}"> - {% if row.type == "period" %} - {% include "chronos/partials/elements.html" with elements=col week_day=forloop.counter0 active_day=active_day.weekday %} - {% else %} - {% include "chronos/partials/supervision.html" with supervision=col %} - {% endif %} - </div> - {% endfor %} -</div> -{% endfor %} \ No newline at end of file diff --git a/aleksis/apps/chronos/templates/chronos/substitutions_print.html b/aleksis/apps/chronos/templates/chronos/substitutions_print.html index 743a2234e990bbafff8343e3ec7108e89995991c..04dc4cf24a5a171fa0638a9074693d025b1ccd02 100644 --- a/aleksis/apps/chronos/templates/chronos/substitutions_print.html +++ b/aleksis/apps/chronos/templates/chronos/substitutions_print.html @@ -18,13 +18,13 @@ {% include "core/partials/announcements.html" with announcements=c.announcements show_recipients=1 %} - {% include "chronos/partials/headerbox.html" with affected_teachers=c.affected_teachers affected_groups=c.affected_groups absent_teachers=c.absent_teachers absent_groups=c.absent_groups print=1 %} + {% include "chronos/partials/headerbox.html" with absent_teachers=c.absent_teachers absent_groups=c.absent_groups affected_teachers=c.affected_teachers affected_groups=c.affected_groups %} <table class="substitutions"> <thead> <tr> - <th><i class="material-icons iconify center" data-icon="mdi:account-multiple-outline"></i></th> - <th><i class="material-icons iconify center" data-icon="mdi:clock-outline"></i></th> + <th>{% blocktrans %}Groups{% endblocktrans %}</th> + <th>{% blocktrans %}Time{% endblocktrans %}</th> <th>{% blocktrans %}Teachers{% endblocktrans %}</th> <th>{% blocktrans %}Subject{% endblocktrans %}</th> <th>{% blocktrans %}Room{% endblocktrans %}</th> @@ -47,30 +47,30 @@ <tbody> {% for item in c.substitutions %} - {% ifchanged item.el.lesson_period.lesson.groups_to_show_names %} + {% ifchanged item.el.REFERENCE_OBJECT.group_names %} </tbody> <tbody class="{% cycle "striped" "not-striped" %}"> {% endifchanged %} - <tr class="{% include "chronos/partials/subs/colour.html" with item=item %}"> + <tr class="{% include "chronos/partials/subs/colour.html" with el=item.el.REFERENCE_OBJECT %}"> <td> - {% include "chronos/partials/subs/groups.html" with type=item.type el=item.el %} + {% include "chronos/partials/subs/groups.html" with el=item.el.REFERENCE_OBJECT %} </td> <td> - {% include "chronos/partials/subs/period.html" with type=item.type el=item.el item=item %} + {% include "chronos/partials/subs/period.html" with el=item.el %} </td> <td> - {% include "chronos/partials/subs/teachers.html" with type=item.type el=item.el %} + {% include "chronos/partials/subs/teachers.html" with el=item.el.REFERENCE_OBJECT %} </td> <td> - {% include "chronos/partials/subs/subject.html" with type=item.type el=item.el %} + {% include "chronos/partials/subs/subject.html" with el=item.el.REFERENCE_OBJECT %} </td> <td> - {% include "chronos/partials/subs/room.html" with type=item.type el=item.el %} + {% include "chronos/partials/subs/rooms.html" with el=item.el.REFERENCE_OBJECT %} </td> <td> - {% include "chronos/partials/subs/badge.html" with sub=item.el %} - {% include "chronos/partials/subs/comment.html" with el=item.el %} + {% include "chronos/partials/subs/badge.html" with el=item.el.REFERENCE_OBJECT %} + {% include "chronos/partials/subs/comment.html" with el=item.el.REFERENCE_OBJECT %} </td> </tr> {% endfor %} diff --git a/aleksis/apps/chronos/templates/chronos/timetable_print.html b/aleksis/apps/chronos/templates/chronos/timetable_print.html deleted file mode 100644 index 4769673610019ad98538d11db579a9cbe6c4601c..0000000000000000000000000000000000000000 --- a/aleksis/apps/chronos/templates/chronos/timetable_print.html +++ /dev/null @@ -1,55 +0,0 @@ -{% extends 'core/base_print.html' %} - -{% load data_helpers static i18n %} - -{% block extra_head %} - <link rel="stylesheet" href="{% static 'css/chronos/timetable.css' %}"> - <link rel="stylesheet" href="{% static 'css/chronos/timetable_print.css' %}"> -{% endblock %} - -{% block page_title %} - {% trans "Timetable" %} <i>{{ el.short_name }}</i> -{% endblock %} -{% block content %} - <div class="timetable-plan"> - {# Week days #} - <div class="row"> - <div class="col s2"> - - </div> - {% for weekday in weekdays_short %} - <div class="col s2"> - <div class="card timetable-title-card"> - <div class="card-content"> - <span class="card-title"> - {{ weekday.name }} - </span> - </div> - </div> - </div> - {% endfor %} - </div> - - {% for row in timetable %} - <div class="row"> - <div class="col s2"> - {% if row.type == "period" %} - {% include "chronos/partials/period_time.html" with period=row.period periods=periods %} - {% endif %} - </div> - - {% for col in row.cols %} - {# A lesson #} - <div class="col s2"> - {% if row.type == "period" %} - {% include "chronos/partials/elements.html" with elements=col %} - {% else %} - {% include "chronos/partials/supervision.html" with supervision=col %} - {% endif %} - </div> - {% endfor %} - </div> - {% endfor %} - </div> - -{% endblock %} diff --git a/aleksis/apps/chronos/urls.py b/aleksis/apps/chronos/urls.py index 7d55323042b9a23438975c589bd23967c3cbb396..0e3a3e7f10bf87613a2614fbd299ced106be0d96 100644 --- a/aleksis/apps/chronos/urls.py +++ b/aleksis/apps/chronos/urls.py @@ -8,4 +8,9 @@ urlpatterns = [ views.substitutions_print, name="substitutions_print", ), + path( + "substitutions/print/<str:day>/", + views.substitutions_print, + name="substitutions_print", + ), ] diff --git a/aleksis/apps/chronos/util/build.py b/aleksis/apps/chronos/util/build.py index 625998db7a20e293f0f8edc3e4f04f4109c3c9db..dd24a0452b93b3e34785e71f5ccdd5b58b908baa 100644 --- a/aleksis/apps/chronos/util/build.py +++ b/aleksis/apps/chronos/util/build.py @@ -1,5 +1,5 @@ from collections import OrderedDict -from datetime import date +from datetime import date, datetime, time from typing import Union from django.apps import apps @@ -7,9 +7,11 @@ from django.apps import apps from calendarweek import CalendarWeek from aleksis.apps.chronos.managers import TimetableType +from aleksis.apps.chronos.models import SupervisionEvent from aleksis.core.models import Group, Person, Room LessonPeriod = apps.get_model("chronos", "LessonPeriod") +LessonEvent = apps.get_model("chronos", "LessonEvent") TimePeriod = apps.get_model("chronos", "TimePeriod") Break = apps.get_model("chronos", "Break") Supervision = apps.get_model("chronos", "Supervision") @@ -380,96 +382,57 @@ def build_timetable( return rows -def build_substitutions_list(wanted_day: date) -> list[dict]: +def build_substitutions_list(wanted_day: date) -> tuple[list[dict], set[Person], set[Group]]: rows = [] - - subs = LessonSubstitution.objects.on_day(wanted_day).order_by( - "lesson_period__lesson__groups", "lesson_period__period" + affected_teachers = set() + affected_groups = set() + + lesson_events = LessonEvent.get_single_events( + datetime.combine(wanted_day, time.min), + datetime.combine(wanted_day, time.max), + params={"amending": True}, + with_reference_object=True, ) - start_period = None - for i, sub in enumerate(subs): - if not sub.cancelled_for_teachers: - sort_a = sub.lesson_period.lesson.groups_to_show_names - else: - sort_a = f"Z.{sub.lesson_period.lesson.teacher_names}" - - # Get next substitution - next_sub = subs[i + 1] if i + 1 < len(subs) else None - - # Check if next substitution is equal with this substitution - if ( - next_sub - and sub.comment == next_sub.comment - and sub.cancelled == next_sub.cancelled - and sub.subject == next_sub.subject - and sub.room == next_sub.room - and sub.lesson_period.lesson == next_sub.lesson_period.lesson - and set(sub.teachers.all()) == set(next_sub.teachers.all()) - ): - if not start_period: - start_period = sub.lesson_period.period.period - continue + for lesson_event in lesson_events: + affected_teachers.update(lesson_event["REFERENCE_OBJECT"].teachers.all()) + affected_teachers.update(lesson_event["REFERENCE_OBJECT"].amends.teachers.all()) + affected_groups.update(lesson_event["REFERENCE_OBJECT"].groups.all()) + affected_groups.update(lesson_event["REFERENCE_OBJECT"].amends.groups.all()) row = { "type": "substitution", - "sort_a": sort_a, - "sort_b": str(sub.lesson_period.period.period), - "el": sub, - "start_period": start_period if start_period else sub.lesson_period.period.period, - "end_period": sub.lesson_period.period.period, + "sort_a": lesson_event["REFERENCE_OBJECT"].group_names, + "sort_b": str(lesson_event["DTSTART"]), + "el": lesson_event, } - if start_period: - start_period = None - rows.append(row) - # Get supervision substitutions - super_subs = SupervisionSubstitution.objects.filter(date=wanted_day) + supervision_events = SupervisionEvent.get_single_events( + datetime.combine(wanted_day, time.min), + datetime.combine(wanted_day, time.max), + params={"amending": True}, + with_reference_object=True, + ) + print(supervision_events) + + for supervision_event in supervision_events: + affected_teachers.update(supervision_event["REFERENCE_OBJECT"].teachers.all()) + affected_teachers.update(supervision_event["REFERENCE_OBJECT"].amends.teachers.all()) - for super_sub in super_subs: row = { "type": "supervision_substitution", - "sort_a": f"Z.{super_sub.teacher}", - "sort_b": str(super_sub.supervision.break_item.after_period_number), - "el": super_sub, + "sort_a": "Z", + "sort_b": str(supervision_event["DTSTART"]), + "el": supervision_event, } - rows.append(row) - - # Get extra lessons - extra_lessons = ExtraLesson.objects.on_day(wanted_day) - for extra_lesson in extra_lessons: - row = { - "type": "extra_lesson", - "sort_a": str(extra_lesson.group_names), - "sort_b": str(extra_lesson.period.period), - "el": extra_lesson, - } rows.append(row) - # Get events - events = Event.objects.on_day(wanted_day).annotate_day(wanted_day) + rows.sort(key=lambda row: row["sort_a"] + row["sort_b"]) - for event in events: - sort_a = event.group_names if event.groups.all() else f"Z.{event.teacher_names}" - - row = { - "type": "event", - "sort_a": sort_a, - "sort_b": str(event.period_from_on_day), - "el": event, - } - rows.append(row) - - # Sort all items - def sorter(row: dict): - return row["sort_a"] + row["sort_b"] - - rows.sort(key=sorter) - - return rows + return rows, affected_teachers, affected_groups def build_weekdays( diff --git a/aleksis/apps/chronos/util/change_tracker.py b/aleksis/apps/chronos/util/change_tracker.py index c9b8afb1b94c9bd5630a50b36d36e08ba58d31fd..669f5c4ee3f0cd6077189e019f58954ad3adf0f1 100644 --- a/aleksis/apps/chronos/util/change_tracker.py +++ b/aleksis/apps/chronos/util/change_tracker.py @@ -1,9 +1,4 @@ -from typing import Any, Optional - from django.contrib.contenttypes.models import ContentType -from django.db import transaction -from django.db.models import Model -from django.db.models.signals import m2m_changed, post_save, pre_delete from django.dispatch import Signal, receiver from celery import shared_task @@ -11,126 +6,9 @@ from reversion.models import Revision def _get_substitution_models(): - from aleksis.apps.chronos.models import ( - Event, - ExtraLesson, - LessonSubstitution, - SupervisionSubstitution, - ) - - return [LessonSubstitution, Event, ExtraLesson, SupervisionSubstitution] - - -class TimetableChange: - """A change to timetable models.""" - - def __init__( - self, - instance: Model, - changed_fields: Optional[dict[str, Any]] = None, - created: bool = False, - deleted: bool = False, - ): - self.instance = instance - self.changed_fields = changed_fields or {} - self.created = created - self.deleted = deleted - - -class TimetableDataChangeTracker: - """Helper class for tracking changes in timetable models by using signals.""" - - @classmethod - def get_models(cls) -> list[type[Model]]: - """Return all models that should be tracked.""" - from aleksis.apps.chronos.models import ( - Event, - ExtraLesson, - LessonSubstitution, - SupervisionSubstitution, - ) - - return [LessonSubstitution, Event, ExtraLesson, SupervisionSubstitution] - - def __init__(self): - self.changes = {} - self.m2m_fields = {} - - if transaction.get_autocommit(): - raise RuntimeError("Cannot use change tracker outside of transaction") - - for model in self.get_models(): - post_save.connect(self._handle_save, sender=model, weak=False) - pre_delete.connect(self._handle_delete, sender=model, weak=False) - - # Register signals for all relevant m2m fields - m2m_fields = { - getattr(model, f.name).through: f - for f in model._meta.get_fields() - if f.many_to_many - } - self.m2m_fields.update(m2m_fields) - for through_model, _field in m2m_fields.items(): - m2m_changed.connect(self._handle_m2m_changed, sender=through_model, weak=False) - - transaction.on_commit(self.close) - - def get_instance_key(self, instance: Model) -> str: - """Get unique string key for an instance.""" - return f"{instance._meta.model_name}_{instance.id}" - - def _add_change(self, change: TimetableChange): - """Add a change to the list of changes and update, if necessary.""" - key = self.get_instance_key(change.instance) - if key not in self.changes or change.deleted or change.created: - self.changes[key] = change - else: - self.changes[key].changed_fields.update(change.changed_fields) - - def _handle_save(self, sender: type[Model], instance: Model, created: bool, **kwargs): - """Handle the save signal.""" - change = TimetableChange(instance, created=created) - if not created: - change.changed_fields = instance.tracker.changed() - self._add_change(change) - - def _handle_delete(self, sender: type[Model], instance: Model, **kwargs): - """Handle the delete signal.""" - change = TimetableChange(instance, deleted=True) - self._add_change(change) - - def _handle_m2m_changed( - self, - sender: type[Model], - instance: Model, - action: str, - model: type[Model], - pk_set: set, - **kwargs, - ): - """Handle the m2m_changed signal.""" - if action in ["pre_add", "pre_remove", "pre_clear"]: - field_name = self.m2m_fields[sender].name - current_value = list(getattr(instance, field_name).all()) - if self.get_instance_key(instance) in self.changes: - change = self.changes[self.get_instance_key(instance)] - if field_name in change.changed_fields: - current_value = None - - if current_value is not None: - change = TimetableChange(instance, changed_fields={field_name: current_value}) - self._add_change(change) - - def close(self): - """Disconnect signals and send change signal.""" - for model in self.get_models(): - post_save.disconnect(self._handle_save, sender=model) - pre_delete.disconnect(self._handle_delete, sender=model) - - for through_model, _field in self.m2m_fields.items(): - m2m_changed.disconnect(self._handle_m2m_changed, sender=through_model) + from aleksis.apps.chronos.models import LessonEvent, SupervisionEvent - timetable_data_changed.send(sender=self, changes=self.changes) + return [LessonEvent, SupervisionEvent] chronos_revision_created = Signal() diff --git a/aleksis/apps/chronos/util/chronos_helpers.py b/aleksis/apps/chronos/util/chronos_helpers.py index 8e1640150383c7c00cfb145c74c9b8750c7a0c29..8e70ceae4b383dfcd72eb3aad80afd12d2f08175 100644 --- a/aleksis/apps/chronos/util/chronos_helpers.py +++ b/aleksis/apps/chronos/util/chronos_helpers.py @@ -1,11 +1,9 @@ -from datetime import datetime, timedelta +from datetime import date, datetime, timedelta from typing import TYPE_CHECKING, Optional from django.db.models import Count, Q from django.http import HttpRequest, HttpResponseNotFound from django.shortcuts import get_object_or_404 -from django.urls import reverse -from django.utils import timezone from guardian.core import ObjectPermissionChecker @@ -15,15 +13,12 @@ from aleksis.core.util.predicates import check_global_permission from ..managers import TimetableType from ..models import ( - Absence, LessonPeriod, LessonSubstitution, Supervision, SupervisionSubstitution, - TimePeriod, ) from .build import build_substitutions_list -from .js import date_unix if TYPE_CHECKING: from django.contrib.auth import get_user_model @@ -160,23 +155,13 @@ def get_rooms(user: "User"): def get_substitutions_context_data( - request: Optional[HttpRequest] = None, - year: Optional[int] = None, - month: Optional[int] = None, - day: Optional[int] = None, - is_print: bool = False, + wanted_day: date, number_of_days: Optional[int] = None, show_header_box: Optional[bool] = None, ): """Get context data for the substitutions table.""" context = {} - if day: - wanted_day = timezone.datetime(year=year, month=month, day=day).date() - wanted_day = TimePeriod.get_next_relevant_day(wanted_day) - else: - wanted_day = TimePeriod.get_next_relevant_day(timezone.now().date(), timezone.now().time()) - day_number = ( number_of_days or get_site_preferences()["chronos__substitutions_print_number_of_days"] ) @@ -187,50 +172,41 @@ def get_substitutions_context_data( ) day_contexts = {} - if is_print: - next_day = wanted_day - for _i in range(day_number): - day_contexts[next_day] = {"day": next_day} - next_day = TimePeriod.get_next_relevant_day(next_day + timedelta(days=1)) - else: - day_contexts = {wanted_day: {"day": wanted_day}} + day = get_next_relevant_day(wanted_day) + for _i in range(day_number): + day_contexts[day] = {"day": day} - for day in day_contexts: - subs = build_substitutions_list(day) + subs, affected_teachers, affected_groups = build_substitutions_list(day) day_contexts[day]["substitutions"] = subs - day_contexts[day]["announcements"] = Announcement.for_timetables().on_date(day) + day_contexts[day]["announcements"] = Announcement.objects.on_date(day) if show_header_box: - subs = LessonSubstitution.objects.on_day(day).order_by( - "lesson_period__lesson__groups", "lesson_period__period" + day_contexts[day]["affected_teachers"] = sorted( + affected_teachers, key=lambda t: t.short_name or t.full_name ) - absences = Absence.objects.on_day(day) - day_contexts[day]["absent_teachers"] = absences.absent_teachers() - day_contexts[day]["absent_groups"] = absences.absent_groups() - day_contexts[day]["affected_teachers"] = subs.affected_teachers() - affected_groups = subs.affected_groups() - if get_site_preferences()["chronos__affected_groups_parent_groups"]: - groups_with_parent_groups = affected_groups.filter(parent_groups__isnull=False) - groups_without_parent_groups = affected_groups.filter(parent_groups__isnull=True) - affected_groups = Group.objects.filter( - Q(child_groups__pk__in=groups_with_parent_groups.values_list("pk", flat=True)) - | Q(pk__in=groups_without_parent_groups.values_list("pk", flat=True)) - ).distinct() day_contexts[day]["affected_groups"] = affected_groups - if not is_print: - context = day_contexts[wanted_day] - context["datepicker"] = { - "date": date_unix(wanted_day), - "dest": reverse("substitutions"), - } + day = get_next_relevant_day(day + timedelta(days=1)) - context["url_prev"], context["url_next"] = TimePeriod.get_prev_next_by_day( - wanted_day, "substitutions_by_date" - ) + context["days"] = day_contexts + + return context + + +def get_next_relevant_day(current: datetime | date) -> date: + """Get next relevant day for substitution plans.""" + relevant_days = get_site_preferences()["chronos__substitutions_relevant_days"] + change_time = get_site_preferences()["chronos__substitutions_day_change_time"] + if isinstance(current, datetime): + current_day = current.date() + if current.time() > change_time: + current_day += timedelta(days=1) else: - context["days"] = day_contexts + current_day = current - return context + while str(current_day.weekday()) not in relevant_days: + current_day += timedelta(days=1) + + return current_day diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py index a45997ca580db9f8fa442be52d88054055e2661d..84d093728e50825f90358084909d828f48cc7d71 100644 --- a/aleksis/apps/chronos/views.py +++ b/aleksis/apps/chronos/views.py @@ -1,10 +1,10 @@ +from datetime import date, datetime from typing import Optional from django.http import HttpRequest, HttpResponse from rules.contrib.views import permission_required -from aleksis.core.decorators import pwa_cache from aleksis.core.util.pdf import render_pdf from .util.chronos_helpers import ( @@ -12,14 +12,12 @@ from .util.chronos_helpers import ( ) -@pwa_cache @permission_required("chronos.view_substitutions_rule") def substitutions_print( request: HttpRequest, - year: Optional[int] = None, - month: Optional[int] = None, - day: Optional[int] = None, + day: Optional[str] = None, ) -> HttpResponse: """View all substitutions on a specified day.""" - context = get_substitutions_context_data(request, year, month, day, is_print=True) + day = datetime.strptime(day, "%Y-%m-%d").date() if day else date.today() + context = get_substitutions_context_data(day) return render_pdf(request, "chronos/substitutions_print.html", context) diff --git a/pyproject.toml b/pyproject.toml index fb56e25888a876fd01f48f6ef6e32490d1376bf7..0e8dc2244f8d364a90b8f923dc48df22228444e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "AlekSIS-App-Chronos" -version = "4.0.0.dev4" +version = "4.0.0.dev6" packages = [ { include = "aleksis" } ] @@ -51,9 +51,9 @@ priority = "supplemental" [tool.poetry.dependencies] python = "^3.10" calendarweek = "^0.5.0" -aleksis-core = "^4.0.0.dev6" +aleksis-core = "^4.0.0.dev11" aleksis-app-resint = "^4.0.0.dev1" -aleksis-app-cursus = "^0.1.0.dev1" +aleksis-app-cursus = "^0.1.0.dev3" aleksis-app-kolego = "^0.1.dev0"