diff --git a/CHANGELOG.rst b/CHANGELOG.rst index bdb61698a6f5fe82a4ebc30a0ef5df58ca93f4dc..4fc79137da727a052f5f2d9ed2ac17cfded5aa20 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -9,8 +9,28 @@ and this project adheres to `Semantic Versioning`_. Unreleased ---------- +Notable, breaking changes +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Starting from the class register core functionality, Alsijil is getting a entire rewrite +of both its frontend and backend. The models formerly used for lesson documentation, notably +`LessonDocumentation` and `PersonalNote` are replaced by new ones based on the calendar framework +provided by `AlekSIS-Core` and the absense framework provided by `AlekSIS-App-Kolego`. The legacy +views providing management functionality for those legacy models are not available anymore. Currently, +there exists no migration path away from legacy data. + +Changed +~~~~~~~ + +* Modern rewrite of class register/coursebook, both in the frontend and the backend + * Several legacy class register views were consolidated in a modern frontend (coursebook). + * [Dev] The `LessonDocumentation` model is replaced with the `Documentation` model, based on the calendar framework. + * [Dev] The `PersonalNote` model is replaced with the `NewPersonalNote` model. + * [Dev] Participation status documentation is taken over by the new `Participation` model. + Fixed ~~~~~ + * Migrating failed due to an incorrect field reference. `3.0`_ - 2023-05-15 diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue new file mode 100644 index 0000000000000000000000000000000000000000..af143a59af433bba0d8ed87fa8beccabbbac6dfe --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue @@ -0,0 +1,366 @@ +<template> + <c-r-u-d-iterator + i18n-key="alsijil.coursebook" + :gql-query="gqlQuery" + :gql-additional-query-args="gqlQueryArgs" + :enable-create="false" + :enable-edit="false" + :elevated="false" + @lastQuery="lastQuery = $event" + ref="iterator" + fixed-header + disable-pagination + hide-default-footer + use-deep-search + > + <template #additionalActions="{ attrs, on }"> + <coursebook-filters v-model="filters" /> + </template> + <template #default="{ items }"> + <coursebook-loader /> + <coursebook-day + v-for="{ date, docs, first, last } in groupDocsByDay(items)" + v-intersect="{ + handler: intersectHandler(date, first, last), + options: { + rootMargin: '-' + topMargin + 'px 0px 0px 0px', + threshold: [0, 1], + }, + }" + :date="date" + :docs="docs" + :lastQuery="lastQuery" + :focus-on-mount="initDate && initDate.toMillis() === date.toMillis()" + @init="transition" + :key="'day-' + date" + ref="days" + /> + <coursebook-loader /> + + <date-select-footer + :value="currentDate" + @input="gotoDate" + @prev="gotoPrev" + @next="gotoNext" + /> + </template> + <template #loading> + <coursebook-loader :number-of-days="10" :number-of-docs="5" /> + </template> + + <template #no-data> + <CoursebookEmptyMessage icon="mdi-book-off-outline"> + {{ $t("alsijil.coursebook.no_data") }} + </CoursebookEmptyMessage> + </template> + + <template #no-results> + <CoursebookEmptyMessage icon="mdi-book-alert-outline"> + {{ + $t("alsijil.coursebook.no_results", { search: $refs.iterator.search }) + }} + </CoursebookEmptyMessage> + </template> + </c-r-u-d-iterator> +</template> + +<script> +import CRUDIterator from "aleksis.core/components/generic/CRUDIterator.vue"; +import DateSelectFooter from "aleksis.core/components/generic/DateSelectFooter.vue"; +import CoursebookDay from "./CoursebookDay.vue"; +import { DateTime, Interval } from "luxon"; +import { documentationsForCoursebook } from "./coursebook.graphql"; +import CoursebookFilters from "./CoursebookFilters.vue"; +import CoursebookLoader from "./CoursebookLoader.vue"; +import CoursebookEmptyMessage from "./CoursebookEmptyMessage.vue"; + +export default { + name: "Coursebook", + components: { + CoursebookEmptyMessage, + CoursebookFilters, + CoursebookLoader, + CRUDIterator, + DateSelectFooter, + CoursebookDay, + }, + props: { + filterType: { + type: String, + required: true, + }, + objId: { + type: [Number, String], + required: false, + default: null, + }, + objType: { + type: String, + required: false, + default: null, + }, + /** + * Number of consecutive to load at once + * This number of days is initially loaded and loaded + * incrementally while scrolling. + */ + dayIncrement: { + type: Number, + required: false, + default: 7, + }, + /** + * Margin from coursebook list to top of viewport in pixels + */ + topMargin: { + type: Number, + required: false, + default: 165, + }, + }, + data() { + return { + gqlQuery: documentationsForCoursebook, + lastQuery: null, + dateStart: "", + dateEnd: "", + // Placeholder values while query isn't completed yet + groups: [], + courses: [], + incomplete: false, + ready: false, + initDate: false, + currentDate: "", + hashUpdater: false, + }; + }, + computed: { + // Assertion: Should only fire on page load or selection change. + // Resets date range. + gqlQueryArgs() { + return { + own: this.filterType === "all" ? false : true, + objId: this.objId ? Number(this.objId) : undefined, + objType: this.objType?.toUpperCase(), + dateStart: this.dateStart, + dateEnd: this.dateEnd, + incomplete: !!this.incomplete, + }; + }, + filters: { + get() { + return { + objType: this.objType, + objId: this.objId, + filterType: this.filterType, + incomplete: this.incomplete, + }; + }, + set(selectedFilters) { + if (Object.hasOwn(selectedFilters, "incomplete")) { + this.incomplete = selectedFilters.incomplete; + } else if ( + Object.hasOwn(selectedFilters, "filterType") || + Object.hasOwn(selectedFilters, "objId") || + Object.hasOwn(selectedFilters, "objType") + ) { + this.$router.push({ + name: "alsijil.coursebook", + params: { + filterType: selectedFilters.filterType + ? selectedFilters.filterType + : this.filterType, + objType: selectedFilters.objType, + objId: selectedFilters.objId, + }, + hash: this.$route.hash, + }); + // computed should not have side effects + // but this was actually done before filters was refactored into + // its own component + this.resetDate(); + // might skip query until both set = atomic + } + }, + }, + }, + methods: { + resetDate(toDate) { + // Assure current date + console.log("Resetting date range", this.$route.hash); + this.currentDate = toDate || this.$route.hash?.substring(1); + if (!this.currentDate) { + console.log("Set default date"); + this.setDate(DateTime.now().toISODate()); + } + + const date = DateTime.fromISO(this.currentDate); + this.initDate = date; + this.dateStart = date.minus({ days: this.dayIncrement }).toISODate(); + this.dateEnd = date.plus({ days: this.dayIncrement }).toISODate(); + }, + transition() { + this.initDate = false; + this.ready = true; + }, + groupDocsByDay(docs) { + // => {dt: {date: dt, docs: doc ...} ...} + const docsByDay = docs.reduce((byDay, doc) => { + // This works with dummy. Does actual doc have dateStart instead? + const day = DateTime.fromISO(doc.datetimeStart).startOf("day"); + byDay[day] ??= { date: day, docs: [] }; + byDay[day].docs.push(doc); + return byDay; + }, {}); + // => [{date: dt, docs: doc ..., idx: idx, lastIdx: last-idx} ...] + // sorting is necessary since backend can send docs unordered + return Object.keys(docsByDay) + .sort() + .map((key, idx, { length }) => { + const day = docsByDay[key]; + day.first = idx === 0; + const lastIdx = length - 1; + day.last = idx === lastIdx; + return day; + }); + }, + // docsByDay: {dt: [dt doc ...] ...} + fetchMore(from, to, then) { + console.log("fetching", from, to); + this.lastQuery.fetchMore({ + variables: { + dateStart: from, + dateEnd: to, + }, + // Transform the previous result with new data + updateQuery: (previousResult, { fetchMoreResult }) => { + console.log("Received more"); + then(); + return { items: previousResult.items.concat(fetchMoreResult.items) }; + }, + }); + }, + setDate(date) { + this.currentDate = date; + if (!this.hashUpdater) { + this.hashUpdater = window.requestIdleCallback(() => { + if (!(this.$route.hash.substring(1) === this.currentDate)) { + this.$router.replace({ hash: this.currentDate }); + } + this.hashUpdater = false; + }); + } + }, + fixScrollPos(height, top) { + this.$nextTick(() => { + if (height < document.documentElement.scrollHeight) { + document.documentElement.scrollTop = + document.documentElement.scrollHeight - height + top; + this.ready = true; + } else { + // Update top, could have changed in the meantime. + this.fixScrollPos(height, document.documentElement.scrollTop); + } + }); + }, + intersectHandler(date, first, last) { + let once = true; + return (entries) => { + const entry = entries[0]; + if (entry.isIntersecting) { + if (entry.boundingClientRect.top <= this.topMargin || first) { + console.log("@ ", date.toISODate()); + this.setDate(date.toISODate()); + } + + if (once && this.ready && first) { + console.log("load up", date.toISODate()); + this.ready = false; + this.fetchMore( + date.minus({ days: this.dayIncrement }).toISODate(), + date.minus({ days: 1 }).toISODate(), + () => { + this.fixScrollPos( + document.documentElement.scrollHeight, + document.documentElement.scrollTop, + ); + }, + ); + once = false; + } else if (once && this.ready && last) { + console.log("load down", date.toISODate()); + this.ready = false; + this.fetchMore( + date.plus({ days: 1 }).toISODate(), + date.plus({ days: this.dayIncrement }).toISODate(), + () => { + this.ready = true; + }, + ); + once = false; + } + } + }; + }, + // Improve me? + // The navigation logic could be a bit simpler if the current days + // where known as a sorted array (= result of groupDocsByDay) But + // then the list would need its own component and this gets rather + // complicated. Then the calendar could also show the present days + // / gray out the missing. + // + // Next two: arg date is ts object + findPrev(date) { + return this.$refs.days + .map((day) => day.date) + .sort() + .reverse() + .find((date2) => date2 < date); + }, + findNext(date) { + return this.$refs.days + .map((day) => day.date) + .sort() + .find((date2) => date2 > date); + }, + gotoDate(date) { + const present = this.$refs.days.find( + (day) => day.date.toISODate() === date, + ); + + if (present) { + // React immediatly -> smoother navigation + // Also intersect handler does not always react to scrollIntoView + this.setDate(date); + present.focus("smooth"); + } else if ( + !this.findPrev(DateTime.fromISO(date)) || + !this.findNext(DateTime.fromISO(date)) + ) { + this.resetDate(date); + } + }, + gotoPrev() { + const prev = this.findPrev(DateTime.fromISO(this.currentDate)); + if (prev) { + this.gotoDate(prev.toISODate()); + } + }, + gotoNext() { + const next = this.findNext(DateTime.fromISO(this.currentDate)); + if (next) { + this.gotoDate(next.toISODate()); + } + }, + }, + created() { + this.resetDate(); + }, +}; +</script> + +<style> +.max-width { + max-width: 25rem; +} +</style> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookDay.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookDay.vue new file mode 100644 index 0000000000000000000000000000000000000000..14411e9ce9c1c2780402890a80aa907b246262ff --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookDay.vue @@ -0,0 +1,66 @@ +<template> + <v-list-item :style="{ scrollMarginTop: '145px' }" two-line> + <v-list-item-content> + <v-subheader class="text-h6">{{ + $d(date, "dateWithWeekday") + }}</v-subheader> + <v-list max-width="100%" class="pt-0 mt-n1"> + <v-list-item + v-for="doc in docs" + :key="'documentation-' + (doc.oldId || doc.id)" + > + <documentation-modal + :documentation="doc" + :affected-query="lastQuery" + /> + </v-list-item> + </v-list> + </v-list-item-content> + </v-list-item> +</template> + +<script> +import DocumentationModal from "./documentation/DocumentationModal.vue"; +export default { + name: "CoursebookDay", + components: { + DocumentationModal, + }, + props: { + date: { + type: Object, + required: true, + }, + docs: { + type: Array, + required: true, + }, + lastQuery: { + type: Object, + required: true, + }, + focusOnMount: { + type: Boolean, + required: false, + default: false, + }, + }, + emits: ["init"], + methods: { + focus(how) { + this.$el.scrollIntoView({ + behavior: how, + block: "start", + inline: "nearest", + }); + console.log("focused @", this.date.toISODate()); + }, + }, + mounted() { + if (this.focusOnMount) { + this.$nextTick(this.focus("instant")); + this.$emit("init"); + } + }, +}; +</script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookEmptyMessage.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookEmptyMessage.vue new file mode 100644 index 0000000000000000000000000000000000000000..346ecc63c272ab5c57a1da9f5e5f78b825739a79 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookEmptyMessage.vue @@ -0,0 +1,25 @@ +<template> + <v-list-item> + <v-list-item-content + class="d-flex justify-center align-center flex-column full-width" + > + <div class="mb-4"> + <v-icon large color="primary">{{ icon }}</v-icon> + </div> + <v-list-item-title> + <slot></slot> + </v-list-item-title> + </v-list-item-content> + </v-list-item> +</template> +<script> +export default { + name: "CoursebookEmptyMessage", + props: { + icon: { + type: String, + default: "mdi-book-alert-outline", + }, + }, +}; +</script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookFilters.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookFilters.vue new file mode 100644 index 0000000000000000000000000000000000000000..e5493b07cda406fddbb3fccc89e5d1b42080ab89 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookFilters.vue @@ -0,0 +1,109 @@ +<template> + <div class="d-flex flex-grow-1 justify-end"> + <v-autocomplete + :items="selectable" + item-text="name" + clearable + return-object + filled + dense + hide-details + :placeholder="$t('alsijil.coursebook.filter.filter_for_obj')" + :loading="selectLoading" + :value="currentObj" + @input="selectObject" + @click:clear="selectObject" + class="max-width" + /> + <div class="ml-6"> + <v-switch + :loading="selectLoading" + :label="$t('alsijil.coursebook.filter.own')" + :input-value="value.filterType === 'my'" + @change="selectFilterType($event)" + dense + inset + hide-details + /> + <v-switch + :loading="selectLoading" + :label="$t('alsijil.coursebook.filter.missing')" + :input-value="value.incomplete" + @change=" + $emit('input', { + incomplete: $event, + }) + " + dense + inset + hide-details + /> + </div> + </div> +</template> + +<script> +import { coursesOfPerson, groupsByPerson } from "./coursebook.graphql"; + +export default { + name: "CoursebookFilters", + data() { + return { + // Placeholder values while query isn't completed yet + groups: [], + courses: [], + }; + }, + props: { + value: { + type: Object, + required: true, + }, + }, + emits: ["input"], + apollo: { + groups: { + query: groupsByPerson, + }, + courses: { + query: coursesOfPerson, + }, + }, + computed: { + selectable() { + return [ + { header: this.$t("alsijil.coursebook.filter.groups") }, + ...this.groups.map((group) => ({ type: "group", ...group })), + { header: this.$t("alsijil.coursebook.filter.courses") }, + ...this.courses.map((course) => ({ type: "course", ...course })), + ]; + }, + selectLoading() { + return ( + this.$apollo.queries.groups.loading || + this.$apollo.queries.courses.loading + ); + }, + currentObj() { + return this.selectable.find( + (o) => o.type === this.value.objType && o.id === this.value.objId, + ); + }, + }, + methods: { + selectObject(selection) { + this.$emit("input", { + objType: selection ? selection.type : null, + objId: selection ? selection.id : null, + }); + }, + selectFilterType(switchValue) { + this.$emit("input", { + filterType: switchValue ? "my" : "all", + objType: this.value.objType, + objId: this.value.objId, + }); + }, + }, +}; +</script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookLoader.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookLoader.vue new file mode 100644 index 0000000000000000000000000000000000000000..a5136eb9f0c2535009fd78a02e7481aebacd12b4 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookLoader.vue @@ -0,0 +1,36 @@ +<template> + <div> + <v-list-item v-for="i in numberOfDays" :key="'i-' + i"> + <v-list-item-content> + <v-list-item-title> + <v-skeleton-loader type="heading" /> + </v-list-item-title> + <v-list max-width="100%"> + <v-list-item v-for="j in numberOfDocs" :key="'j-' + j"> + <DocumentationLoader /> + </v-list-item> + </v-list> + </v-list-item-content> + </v-list-item> + </div> +</template> +<script> +import DocumentationLoader from "./documentation/DocumentationLoader.vue"; + +export default { + name: "CoursebookLoader", + components: { DocumentationLoader }, + props: { + numberOfDays: { + type: Number, + required: false, + default: 1, + }, + numberOfDocs: { + type: Number, + required: false, + default: 1, + }, + }, +}; +</script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql b/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql new file mode 100644 index 0000000000000000000000000000000000000000..8444f9e35af335080026b221424fda598068c6fc --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql @@ -0,0 +1,97 @@ +query groupsByPerson { + groups: groupsByPerson { + id + name + } +} + +query coursesOfPerson { + courses: coursesOfPerson { + id + name + groups { + id + name + } + } +} + +query documentationsForCoursebook( + $own: Boolean! + $objId: ID + $objType: String + $dateStart: Date! + $dateEnd: Date! + $incomplete: Boolean +) { + items: documentationsForCoursebook( + own: $own + objId: $objId + objType: $objType + dateStart: $dateStart + dateEnd: $dateEnd + incomplete: $incomplete + ) { + id + course { + id + name + } + amends { + id + amends { + id + teachers { + id + shortName + fullName + avatarContentUrl + } + subject { + id + name + shortName + colourFg + colourBg + } + } + cancelled + } + teachers { + id + shortName + fullName + avatarContentUrl + } + subject { + id + name + shortName + colourFg + colourBg + } + topic + homework + groupNote + datetimeStart + datetimeEnd + dateStart + dateEnd + oldId + canEdit + futureNotice + canDelete + } +} + +mutation createOrUpdateDocumentations($input: [DocumentationInputType]!) { + createOrUpdateDocumentations(input: $input) { + items: documentations { + id + topic + homework + groupNote + oldId + } + } +} diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/Documentation.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/Documentation.vue new file mode 100644 index 0000000000000000000000000000000000000000..5bbc21c0de53b613986c30360e853ee6720526b5 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/Documentation.vue @@ -0,0 +1,96 @@ +<template> + <v-card :class="{ 'my-1 full-width': true, 'd-flex flex-column': !compact }"> + <v-card-title v-if="!compact"> + <lesson-information v-bind="documentationPartProps" /> + </v-card-title> + + <v-card-text + class="full-width main-body" + :class="{ + vertical: !compact || $vuetify.breakpoint.mobile, + 'pa-2': compact, + }" + > + <lesson-information v-if="compact" v-bind="documentationPartProps" /> + <lesson-summary + ref="summary" + v-bind="{ ...$attrs, ...documentationPartProps }" + :is-create="false" + :gql-patch-mutation="documentationsMutation" + @open="$emit('open')" + @loading="loading = $event" + @save="$emit('close')" + /> + <lesson-notes v-bind="documentationPartProps" /> + </v-card-text> + <v-spacer /> + <v-divider /> + <v-card-actions v-if="!compact"> + <v-spacer /> + <cancel-button + v-if="documentation.canEdit" + @click="$emit('close')" + :disabled="loading" + /> + <save-button + v-if="documentation.canEdit" + @click="save" + :loading="loading" + /> + <cancel-button + v-if="!documentation.canEdit" + i18n-key="actions.close" + @click="$emit('close')" + /> + </v-card-actions> + </v-card> +</template> + +<script> +import LessonInformation from "./LessonInformation.vue"; +import LessonSummary from "./LessonSummary.vue"; +import LessonNotes from "./LessonNotes.vue"; + +import SaveButton from "aleksis.core/components/generic/buttons/SaveButton.vue"; +import CancelButton from "aleksis.core/components/generic/buttons/CancelButton.vue"; + +import { createOrUpdateDocumentations } from "../coursebook.graphql"; + +import documentationPartMixin from "./documentationPartMixin"; + +export default { + name: "Documentation", + components: { + LessonInformation, + LessonSummary, + LessonNotes, + SaveButton, + CancelButton, + }, + emits: ["open", "close"], + mixins: [documentationPartMixin], + data() { + return { + loading: false, + documentationsMutation: createOrUpdateDocumentations, + }; + }, + methods: { + save() { + this.$refs.summary.save(); + this.$emit("close"); + }, + }, +}; +</script> + +<style scoped> +.main-body { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1em; +} +.vertical { + grid-template-columns: 1fr; +} +</style> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationCompactDetails.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationCompactDetails.vue new file mode 100644 index 0000000000000000000000000000000000000000..09ae0e5d09903387dd314bc25b8885c9eff1b370 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationCompactDetails.vue @@ -0,0 +1,30 @@ +<template> + <v-card outlined dense rounded="lg" v-bind="$attrs" v-on="$listeners"> + <div class="font-weight-medium mr-2"> + {{ $t("alsijil.coursebook.summary.topic.label") }}: + </div> + <div class="text-truncate">{{ documentation.topic || "–" }}</div> + + <div class="font-weight-medium mr-2"> + {{ $t("alsijil.coursebook.summary.homework.label") }}: + </div> + <div class="text-truncate">{{ documentation.homework || "–" }}</div> + + <div class="font-weight-medium mr-2"> + {{ $t("alsijil.coursebook.summary.group_note.label") }}: + </div> + <div class="text-truncate">{{ documentation.groupNote || "–" }}</div> + </v-card> +</template> + +<script> +export default { + name: "DocumentationCompactDetails", + props: { + documentation: { + type: Object, + required: true, + }, + }, +}; +</script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationFullDetails.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationFullDetails.vue new file mode 100644 index 0000000000000000000000000000000000000000..58ef4285647a5b80e7c8dd94aae54955aa95c81d --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationFullDetails.vue @@ -0,0 +1,34 @@ +<template> + <div v-bind="$attrs" v-on="$listeners"> + <v-card outlined dense rounded="lg" class="mb-2"> + <v-card-title class="text-subtitle-2 pb-1 font-weight-medium"> + {{ $t("alsijil.coursebook.summary.topic.label") }} + </v-card-title> + <v-card-text>{{ documentation.topic || "–" }}</v-card-text> + </v-card> + <v-card outlined dense rounded="lg" class="mb-2"> + <v-card-title class="text-subtitle-2 pb-1 font-weight-medium"> + {{ $t("alsijil.coursebook.summary.homework.label") }} + </v-card-title> + <v-card-text>{{ documentation.homework || "–" }}</v-card-text> + </v-card> + <v-card outlined dense rounded="lg"> + <v-card-title class="text-subtitle-2 pb-1 font-weight-medium"> + {{ $t("alsijil.coursebook.summary.group_note.label") }} + </v-card-title> + <v-card-text>{{ documentation.groupNote || "–" }}</v-card-text> + </v-card> + </div> +</template> + +<script> +export default { + name: "DocumentationFullDetails", + props: { + documentation: { + type: Object, + required: true, + }, + }, +}; +</script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationLoader.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationLoader.vue new file mode 100644 index 0000000000000000000000000000000000000000..ad326bc61437ee394852917e48163b663b955ca0 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationLoader.vue @@ -0,0 +1,32 @@ +<template> + <v-card class="my-2 full-width"> + <div class="full-width d-flex flex-column align-stretch flex-md-row"> + <v-card-text> + <v-skeleton-loader + type="avatar, heading, chip" + class="d-flex full-width align-center gap" + height="100%" + /> + </v-card-text> + <v-card-text> + <v-skeleton-loader + type="heading@2" + class="d-flex full-width align-center gap" + height="100%" + /> + </v-card-text> + <v-card-text> + <v-skeleton-loader + type="chip@3" + class="d-flex full-width align-center justify-end gap" + height="100%" + /> + </v-card-text> + </div> + </v-card> +</template> +<script> +export default { + name: "DocumentationLoader", +}; +</script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue new file mode 100644 index 0000000000000000000000000000000000000000..460f39f97fc15b61d0476dd99ed33d29cf43029c --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue @@ -0,0 +1,31 @@ +<!-- Wrapper around Documentation.vue --> +<!-- That uses it either as list item or as editable modal dialog. --> +<template> + <mobile-fullscreen-dialog v-model="popup" max-width="500px"> + <template #activator="activator"> + <!-- list view -> activate dialog --> + <documentation compact v-bind="$attrs" :dialog-activator="activator" /> + </template> + <!-- dialog view -> deactivate dialog --> + <!-- cancel | save (through lesson-summary) --> + <documentation v-bind="$attrs" @close="popup = false" /> + </mobile-fullscreen-dialog> +</template> + +<script> +import MobileFullscreenDialog from "aleksis.core/components/generic/dialogs/MobileFullscreenDialog.vue"; +import Documentation from "./Documentation.vue"; + +export default { + name: "DocumentationModal", + components: { + MobileFullscreenDialog, + Documentation, + }, + data() { + return { + popup: false, + }; + }, +}; +</script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationStatus.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationStatus.vue new file mode 100644 index 0000000000000000000000000000000000000000..ad214b49da74fcab14fd39f456b9e24e2e620c47 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationStatus.vue @@ -0,0 +1,132 @@ +<template> + <v-tooltip bottom> + <template #activator="{ on, attrs }"> + <v-icon + :color="currentStatus?.color" + class="mr-md-4" + v-on="on" + v-bind="attrs" + >{{ currentStatus?.icon }}</v-icon + > + </template> + <span>{{ currentStatus?.text }}</span> + </v-tooltip> +</template> + +<script> +import documentationPartMixin from "./documentationPartMixin"; + +import { DateTime } from "luxon"; + +export default { + name: "DocumentationStatus", + mixins: [documentationPartMixin], + data() { + return { + statusChoices: [ + { + name: "available", + text: this.$t("alsijil.coursebook.status.available"), + icon: "$success", + color: "success", + }, + { + name: "missing", + text: this.$t("alsijil.coursebook.status.missing"), + icon: "$warning", + color: "error", + }, + { + name: "running", + text: this.$t("alsijil.coursebook.status.running"), + icon: "mdi-play-outline", + color: "warning", + }, + { + name: "substitution", + text: this.$t("alsijil.coursebook.status.substitution"), + icon: "$info", + color: "warning", + }, + { + name: "cancelled", + text: this.$t("alsijil.coursebook.status.cancelled"), + icon: "mdi-cancel", + color: "error", + }, + { + name: "pending", + text: this.$t("alsijil.coursebook.status.pending"), + icon: "mdi-clipboard-clock-outline", + color: "blue", + }, + ], + statusTimeout: null, + currentStatusName: "", + }; + }, + computed: { + currentStatus() { + return this.statusChoices.find((s) => s.name === this.currentStatusName); + }, + documentationDateTimeStart() { + return DateTime.fromISO(this.documentation.datetimeStart); + }, + documentationDateTimeEnd() { + return DateTime.fromISO(this.documentation.datetimeEnd); + }, + }, + methods: { + updateStatus() { + if (this.documentation?.amends.cancelled) { + this.currentStatusName = "cancelled"; + } else if (this.documentation.topic) { + this.currentStatusName = "available"; + } else if (DateTime.now() > this.documentationDateTimeEnd) { + this.currentStatusName = "missing"; + } else if (this.documentation?.amends.amends) { + this.currentStatusName = "substitution"; + } else if ( + DateTime.now() > this.documentationDateTimeStart && + DateTime.now() < this.documentationDateTimeEnd + ) { + this.currentStatusName = "running"; + } else { + this.currentStatusName = "pending"; + } + }, + }, + watch: { + documentation: { + handler() { + this.updateStatus(); + }, + deep: true, + }, + }, + mounted() { + this.updateStatus(); + + if (DateTime.now() < this.documentationDateTimeStart) { + this.statusTimeout = setTimeout( + this.updateStatus, + this.documentationDateTimeStart + .diff(DateTime.now(), "seconds") + .toObject(), + ); + } else if (DateTime.now() < this.documentationDateTimeEnd) { + this.statusTimeout = setTimeout( + this.updateStatus, + this.documentationDateTimeEnd + .diff(DateTime.now(), "seconds") + .toObject(), + ); + } + }, + beforeDestroy() { + if (this.statusTimeout) { + clearTimeout(this.statusTimeout); + } + }, +}; +</script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue new file mode 100644 index 0000000000000000000000000000000000000000..09a04bcb67c6ae618fa0b1546a0171af30323885 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue @@ -0,0 +1,143 @@ +<script setup> +import DocumentationStatus from "./DocumentationStatus.vue"; +import PersonChip from "aleksis.core/components/person/PersonChip.vue"; +</script> + +<template> + <div :class="{ 'full-width grid': true, 'large-grid': largeGrid }"> + <div class="d-flex"> + <documentation-status v-if="compact" v-bind="documentationPartProps" /> + <div :class="{ 'text-right d-flex flex-column fit-content': largeGrid }"> + <time :datetime="documentation.datetimeStart" class="text-no-wrap"> + {{ $d(toDateTime(documentation.datetimeStart), "shortTime") }} + </time> + <span v-if="!largeGrid">–</span> + <time :datetime="documentation.datetimeEnd" class="text-no-wrap"> + {{ $d(toDateTime(documentation.datetimeEnd), "shortTime") }} + </time> + </div> + </div> + <span + :class="{ + 'text-right': !largeGrid, + 'text-subtitle-1': largeGrid, + 'font-weight-medium': largeGrid, + }" + > + {{ documentation.course?.name }} + </span> + <div + :class="{ + 'd-flex align-center flex-wrap gap': true, + 'justify-center': largeGrid, + 'justify-start': !largeGrid, + }" + > + <subject-chip + v-if="documentation.subject" + :subject="documentation.subject" + v-bind="compact ? dialogActivator.attrs : {}" + v-on="compact ? dialogActivator.on : {}" + /> + <subject-chip + v-if=" + documentation?.amends?.amends?.subject && + documentation.amends.amends.subject.id !== documentation.subject.id + " + :subject="documentation.amends.amends.subject" + v-bind="compact ? dialogActivator.attrs : {}" + v-on="compact ? dialogActivator.on : {}" + class="text-decoration-line-through" + disabled + /> + </div> + <div + :class="{ + 'd-flex align-center flex-wrap gap': true, + 'justify-end': !largeGrid, + }" + > + <person-chip + v-for="teacher in documentation.teachers" + :key="documentation.id + '-teacher-' + teacher.id" + :person="teacher" + no-link + v-bind="compact ? dialogActivator.attrs : {}" + v-on="compact ? dialogActivator.on : {}" + /> + <person-chip + v-for="teacher in amendedTeachers" + :key="documentation.id + '-amendedTeacher-' + teacher.id" + :person="teacher" + no-link + v-bind="compact ? dialogActivator.attrs : {}" + v-on="compact ? dialogActivator.on : {}" + class="text-decoration-line-through" + disabled + /> + </div> + </div> +</template> + +<script> +import SubjectChip from "aleksis.apps.cursus/components/SubjectChip.vue"; +import { DateTime } from "luxon"; +import documentationPartMixin from "./documentationPartMixin"; + +export default { + name: "LessonInformation", + mixins: [documentationPartMixin], + components: { + SubjectChip, + }, + methods: { + toDateTime(dateString) { + return DateTime.fromISO(dateString); + }, + }, + computed: { + largeGrid() { + return this.compact && !this.$vuetify.breakpoint.mobile; + }, + amendedTeachers() { + if ( + this.documentation?.amends?.amends?.teachers && + this.documentation.amends.amends.teachers.length + ) { + return this.documentation.amends.amends.teachers.filter( + (at) => !this.documentation.teachers.includes((t) => t.id === at.id), + ); + } + return []; + }, + }, +}; +</script> + +<style scoped> +.grid { + display: grid; + grid-template-columns: 1fr 1fr; + align-items: center; + gap: 1em; + align-content: start; +} + +.large-grid { + grid-template-columns: 1fr 1fr 1fr 1fr; + align-content: unset; +} + +.grid:last-child { + justify-self: end; + justify-content: end; +} + +.fit-content { + width: fit-content; +} + +.gap { + gap: 0.25em; +} +</style> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue new file mode 100644 index 0000000000000000000000000000000000000000..f85633f2e6f3864a20db9136f86cee4b51311719 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue @@ -0,0 +1,50 @@ +<template> + <div + class="d-flex align-center justify-space-between justify-md-end flex-wrap gap" + > + <!-- eslint-disable @intlify/vue-i18n/no-raw-text --> + <v-chip dense color="success"> + <v-chip small dense class="mr-2" color="green darken-3 white--text" + >26</v-chip + > + von 30 anwesend + </v-chip> + <v-chip dense color="warning"> + <v-chip small dense class="mr-2" color="orange darken-3 white--text" + >3</v-chip + > + entschuldigt + </v-chip> + <v-chip dense color="error"> + <v-chip small dense class="mr-2" color="red darken-3 white--text" + >1</v-chip + > + unentschuldigt + </v-chip> + <v-chip dense color="grey lighten-1"> + <v-chip small dense class="mr-2" color="grey darken-1 white--text" + >4</v-chip + > + Hausaufgaben vergessen + </v-chip> + <v-chip dense color="primary" outlined> + <v-icon>$edit</v-icon> + </v-chip> + <!-- eslint-enable @intlify/vue-i18n/no-raw-text --> + </div> +</template> + +<script> +import documentationPartMixin from "./documentationPartMixin"; + +export default { + name: "LessonNotes", + mixins: [documentationPartMixin], +}; +</script> + +<style scoped> +.gap { + gap: 0.25em; +} +</style> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonSummary.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonSummary.vue new file mode 100644 index 0000000000000000000000000000000000000000..f4ef410e2f12f17d7e284178e7a2b6acc8022e66 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonSummary.vue @@ -0,0 +1,294 @@ +<template> + <div> + <!-- compact --> + <div + class="d-flex flex-column flex-md-row align-stretch align-md-center gap justify-start fill-height" + v-if="compact" + > + <documentation-compact-details + v-bind="dialogActivator.attrs" + v-on="dialogActivator.on" + v-if=" + !documentation.canEdit && + (documentation.topic || + documentation.homework || + documentation.groupNote) + " + :documentation="documentation" + @click="$emit('open')" + :class="{ + 'flex-grow-1 min-width pa-1 read-only-grid': true, + 'full-width': $vuetify.breakpoint.mobile, + }" + /> + <v-alert + v-else-if="documentation.futureNotice" + type="warning" + outlined + class="min-width flex-grow-1 mb-0" + > + {{ $t("alsijil.coursebook.notices.future") }} + </v-alert> + <v-alert + v-else-if="!documentation.canEdit" + type="info" + outlined + class="min-width flex-grow-1 mb-0" + > + {{ $t("alsijil.coursebook.notices.no_entry") }} + </v-alert> + + <v-text-field + v-if="documentation.canEdit" + :class="{ + 'flex-grow-1 min-width': true, + 'full-width': $vuetify.breakpoint.mobile, + }" + hide-details + outlined + :label="$t('alsijil.coursebook.summary.topic.label')" + :value="documentation.topic" + @input="topic = $event" + @focusout="save" + @keydown.enter="saveAndBlur" + :loading="loading" + > + <template #append> + <v-tooltip bottom> + <template #activator="{ on, attrs }"> + <v-scroll-x-transition> + <v-icon + v-if="appendIcon" + :color="appendIconColor" + v-on="on" + v-bind="attrs" + >{{ appendIcon }}</v-icon + > + </v-scroll-x-transition> + </template> + <span>{{ appendIconTooltip }}</span> + </v-tooltip> + </template> + </v-text-field> + <div + :class="{ + 'flex-grow-1 max-width': true, + 'full-width': $vuetify.breakpoint.mobile, + }" + v-if="documentation.canEdit" + > + <v-card + v-bind="dialogActivator.attrs" + v-on="dialogActivator.on" + outlined + @click="$emit('open')" + class="max-width grid-layout pa-1" + dense + rounded="lg" + > + <span class="max-width text-truncate">{{ + documentation.homework + ? $t("alsijil.coursebook.summary.homework.value", documentation) + : $t("alsijil.coursebook.summary.homework.empty") + }}</span> + <v-icon right class="float-right">{{ homeworkIcon }}</v-icon> + <span class="max-width text-truncate">{{ + documentation.groupNote + ? $t("alsijil.coursebook.summary.group_note.value", documentation) + : $t("alsijil.coursebook.summary.group_note.empty") + }}</span> + <v-icon right class="float-right">{{ groupNoteIcon }}</v-icon> + </v-card> + </div> + </div> + <!-- not compact --> + <!-- Are focusout & enter enough trigger? --> + <v-text-field + filled + v-if="!compact && documentation.canEdit" + :label="$t('alsijil.coursebook.summary.topic.label')" + :value="documentation.topic" + @input="topic = $event" + /> + <v-textarea + filled + auto-grow + rows="3" + clearable + v-if="!compact && documentation.canEdit" + :label="$t('alsijil.coursebook.summary.homework.label')" + :value="documentation.homework" + @input="homework = $event ? $event : ''" + /> + <v-textarea + filled + auto-grow + rows="3" + clearable + v-if="!compact && documentation.canEdit" + :label="$t('alsijil.coursebook.summary.group_note.label')" + :value="documentation.groupNote" + @input="groupNote = $event ? $event : ''" + /> + + <documentation-full-details + v-if="!compact && !documentation.canEdit" + :documentation="documentation" + /> + </div> +</template> + +<script setup> +import DocumentationCompactDetails from "./DocumentationCompactDetails.vue"; +import DocumentationFullDetails from "./DocumentationFullDetails.vue"; +</script> + +<script> +import createOrPatchMixin from "aleksis.core/mixins/createOrPatchMixin.js"; +import documentationPartMixin from "./documentationPartMixin"; + +export default { + name: "LessonSummary", + mixins: [createOrPatchMixin, documentationPartMixin], + emits: ["open"], + data() { + return { + topic: null, + homework: null, + groupNote: null, + appendIcon: null, + topicError: null, + }; + }, + methods: { + handleUpdateAfterCreateOrPatch(itemId) { + return (cached, incoming) => { + for (const object of incoming) { + console.log("summary: handleUpdateAfterCreateOrPatch", object); + // Replace the current documentation + const index = cached.findIndex( + (o) => o[itemId] === this.documentation.id, + ); + // merged with the incoming partial documentation + // if creation of proper documentation from dummy one, set ID of documentation currently being edited as oldID so that key in coursebook doesn't change + cached[index] = { + ...this.documentation, + ...object, + oldId: + this.documentation.id !== object.id + ? this.documentation.id + : this.documentation.oldId, + }; + } + return cached; + }; + }, + handleAppendIconSuccess() { + this.topicError = null; + this.appendIcon = "$success"; + setTimeout(() => { + this.appendIcon = ""; + }, 3000); + }, + save() { + if ( + this.topic !== null || + this.homework !== null || + this.groupNote !== null + ) { + this.createOrPatch([ + { + id: this.documentation.id, + ...(this.topic !== null && { topic: this.topic }), + ...(this.homework !== null && { homework: this.homework }), + ...(this.groupNote !== null && { groupNote: this.groupNote }), + }, + ]); + + this.topic = null; + this.homework = null; + this.groupNote = null; + } + }, + saveAndBlur(event) { + this.save(); + event.target.blur(); + }, + handleError(error) { + this.appendIcon = "$error"; + this.topicError = error; + }, + }, + computed: { + homeworkIcon() { + if (this.documentation.homework) { + return this.documentation.canEdit + ? "mdi-book-edit-outline" + : "mdi-book-alert-outline"; + } + return this.documentation.canEdit + ? "mdi-book-plus-outline" + : "mdi-book-off-outline"; + }, + groupNoteIcon() { + if (this.documentation.groupNote) { + return this.documentation.canEdit + ? "mdi-note-edit-outline" + : "mdi-note-alert-outline"; + } + return this.documentation.canEdit + ? "mdi-note-plus-outline" + : "mdi-note-off-outline"; + }, + minWidth() { + return Math.min(this.documentation?.topic?.length || 15, 15) + "ch"; + }, + maxWidth() { + return this.$vuetify.breakpoint.mobile ? "100%" : "20ch"; + }, + appendIconColor() { + return ( + { $success: "success", $error: "error" }[this.appendIcon] || "primary" + ); + }, + appendIconTooltip() { + return ( + { + $success: this.$t("alsijil.coursebook.summary.topic.status.success"), + $error: this.$t("alsijil.coursebook.summary.topic.status.error", { + error: this.topicError, + }), + }[this.appendIcon] || "" + ); + }, + }, + mounted() { + this.$on("save", this.handleAppendIconSuccess); + }, +}; +</script> + +<style scoped> +.min-width { + min-width: v-bind(minWidth); +} + +.max-width { + max-width: v-bind(maxWidth); +} + +.gap { + gap: 1em; +} + +.grid-layout { + display: grid; + grid-template-columns: auto min-content; +} + +.read-only-grid { + display: grid; + grid-template-columns: min-content auto; + grid-template-rows: auto; +} +</style> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js new file mode 100644 index 0000000000000000000000000000000000000000..165f1d2fd157bb35bf2831fc7973f480b29ccd0a --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js @@ -0,0 +1,44 @@ +/** + * Mixin to provide common fields for all components specific to a singular documentation inside the coursebook + */ +export default { + props: { + /** + * The documentation in question + */ + documentation: { + type: Object, + required: true, + }, + /** + * Whether the documentation is currently in the compact mode (meaning coursebook row) + */ + compact: { + type: Boolean, + required: false, + default: false, + }, + /** + * Activator attributes and event listeners to open documentation dialog in different places + */ + dialogActivator: { + type: Object, + required: false, + default: () => ({ attrs: {}, on: {} }), + }, + }, + + computed: { + /** + * All necessary props bundled together to easily pass to child components + * @returns {{compact: Boolean, documentation: Object, dialogActivator: Object<{attrs: Object, on: Object}>}} + */ + documentationPartProps() { + return { + documentation: this.documentation, + compact: this.compact, + dialogActivator: this.dialogActivator, + }; + }, + }, +}; diff --git a/aleksis/apps/alsijil/frontend/index.js b/aleksis/apps/alsijil/frontend/index.js index 521c4b5629d6800abebaec1e4ce27f4f57cc3ab4..1ec79280e06ef377c4be215c27b5291c51043522 100644 --- a/aleksis/apps/alsijil/frontend/index.js +++ b/aleksis/apps/alsijil/frontend/index.js @@ -2,206 +2,20 @@ import { notLoggedInValidator, hasPersonValidator, } from "aleksis.core/routeValidators"; +import { DateTime } from "luxon"; export default { meta: { inMenu: true, titleKey: "alsijil.menu_title", icon: "mdi-account-group-outline", + iconActive: "mdi-account-group", validators: [hasPersonValidator], }, props: { byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, }, children: [ - { - path: "lesson", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.lessonPeriod", - meta: { - inMenu: true, - titleKey: "alsijil.lesson.menu_title", - icon: "mdi-alarm", - permission: "alsijil.view_lesson_menu_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "lesson/:year(\\d+)/:week(\\d+)/:id_(\\d+)", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.lessonPeriodByCWAndID", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "extra_lesson/:id_(\\d+)/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.extraLessonByID", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "event/:id_(\\d+)/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.eventByID", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "week/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.weekView", - meta: { - inMenu: true, - titleKey: "alsijil.week.menu_title", - icon: "mdi-view-week-outline", - permission: "alsijil.view_week_menu_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "week/:year(\\d+)/:week(\\d+)/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.weekViewByWeek", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "week/year/cw/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.weekViewPlaceholders", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "week/:type_/:id_(\\d+)/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.weekViewByTypeAndID", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "week/year/cw/:type_/:id_(\\d+)/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.weekViewPlaceholdersByTypeAndID", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "week/:year(\\d+)/:week(\\d+)/:type_/:id_(\\d+)/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.weekViewByWeekTypeAndID", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "print/group/:id_(\\d+)", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.fullRegisterGroup", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "groups/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.myGroups", - meta: { - inMenu: true, - titleKey: "alsijil.groups.menu_title", - icon: "mdi-account-multiple-outline", - permission: "alsijil.view_my_groups_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "groups/:pk(\\d+)/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.studentsList", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "persons/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.myStudents", - meta: { - inMenu: true, - titleKey: "alsijil.persons.menu_title", - icon: "mdi-account-school-outline", - permission: "alsijil.view_my_students_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "persons/:id_(\\d+)/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.overviewPerson", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "me/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.overviewMe", - meta: { - inMenu: true, - titleKey: "alsijil.my_overview.menu_title", - icon: "mdi-chart-box-outline", - permission: "alsijil.view_person_overview_menu_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "notes/:pk(\\d+)/delete/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.deletePersonalNote", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "absence/new/:id_(\\d+)/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.registerAbsenceWithID", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "absence/new/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.registerAbsence", - meta: { - inMenu: true, - titleKey: "alsijil.absence.menu_title", - icon: "mdi-message-alert-outline", - permission: "alsijil.view_register_absence_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, { path: "extra_marks/", component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), @@ -210,6 +24,7 @@ export default { inMenu: true, titleKey: "alsijil.extra_marks.menu_title", icon: "mdi-label-variant-outline", + iconActive: "mdi-label-variant", permission: "alsijil.view_extramarks_rule", }, props: { @@ -241,156 +56,40 @@ export default { }, }, { - path: "excuse_types/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.excuseTypes", - meta: { - inMenu: true, - titleKey: "alsijil.excuse_types.menu_title", - icon: "mdi-label-outline", - permission: "alsijil.view_excusetypes_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "excuse_types/create/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.createExcuseType", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + path: "coursebook/", + component: () => import("./components/coursebook/Coursebook.vue"), + redirect: () => { + return { + name: "alsijil.coursebook", + params: { + filterType: "my", + }, + hash: "#" + DateTime.now().toISODate(), + }; }, - }, - { - path: "excuse_types/:pk(\\d+)/edit/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.editExcuseType", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "excuse_types/:pk(\\d+)/delete/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.deleteExcuseType", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "group_roles/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.groupRoles", + name: "alsijil.coursebook_landing", + props: true, meta: { inMenu: true, - titleKey: "alsijil.group_roles.menu_title_manage", - icon: "mdi-clipboard-plus-outline", - permission: "alsijil.view_grouproles_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "group_roles/create/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.createGroupRole", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "group_roles/:pk(\\d+)/edit/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.editGroupRole", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "group_roles/:pk(\\d+)/delete/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.deleteGroupRole", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "groups/:pk(\\d+)/group_roles/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.assignedGroupRoles", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "groups/:pk(\\d+)/group_roles/assign/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.assignGroupRole", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "groups/:pk(\\d+)/group_roles/:role_pk(\\d+)/assign/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.assignGroupRoleByRolePK", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "group_roles/assignments/:pk(\\d+)/edit/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.editGroupRoleAssignment", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "group_roles/assignments/:pk(\\d+)/stop/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.stopGroupRoleAssignment", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "group_roles/assignments/:pk(\\d+)/delete/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.deleteGroupRoleAssignment", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "group_roles/assignments/assign/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.assignGroupRoleMultiple", - meta: { - inMenu: true, - titleKey: "alsijil.group_roles.menu_title_assign", - icon: "mdi-clipboard-account-outline", - permission: "alsijil.assign_grouprole_for_multiple_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "all/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "alsijil.allRegisterObjects", - meta: { - inMenu: true, - titleKey: "alsijil.all_lessons.menu_title", - icon: "mdi-format-list-text", - permission: "alsijil.view_register_objects_list_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, + icon: "mdi-book-education-outline", + iconActive: "mdi-book-education", + titleKey: "alsijil.coursebook.menu_title", + toolbarTitle: "alsijil.coursebook.menu_title", + permission: "alsijil.view_documentations_menu_rule", + }, + children: [ + { + path: ":filterType(my|all)/:objType(group|course|teacher)?/:objId(\\d+)?/", + component: () => import("./components/coursebook/Coursebook.vue"), + name: "alsijil.coursebook", + meta: { + titleKey: "alsijil.coursebook.menu_title", + toolbarTitle: "alsijil.coursebook.menu_title", + permission: "alsijil.view_documentations_menu_rule", + fullWidth: true, + }, + }, + ], }, ], }; diff --git a/aleksis/apps/alsijil/frontend/messages/de.json b/aleksis/apps/alsijil/frontend/messages/de.json index 09456c74481a13e390b1e08e2389d027d8c6974d..f38f1621d800af92e0c595a7f044b9895376c751 100644 --- a/aleksis/apps/alsijil/frontend/messages/de.json +++ b/aleksis/apps/alsijil/frontend/messages/de.json @@ -31,6 +31,47 @@ }, "all_lessons": { "menu_title": "Alle Stunden" + }, + "coursebook": { + "menu_title": "Kursbuch", + "page_title": "Kursbuch für {name}", + "title_plural": "Kursbuch", + "status": { + "available": "Kursbucheintrag vorhanden", + "missing": "Kursbucheintrag fehlt", + "running": "Stunde läuft", + "substitution": "Vertretungsstunde", + "cancelled": "Stunde fällt aus", + "pending": "Stunde in der Zukunft" + }, + "summary": { + "topic": { + "label": "Topic", + "status": { + "success": "Topic saved successfully", + "error": "There has been an error while saving the topic: {error}" + } + }, + "homework": { + "label": "Hausaufgaben", + "value": "HA: {homework}", + "empty": "Keine Hausaufgaben" + }, + "group_note": { + "label": "Gruppennotiz", + "value": "GN: {groupNote}", + "empty": "Keine Gruppennotiz" + } + }, + "filter": { + "own": "Nur eigene Stunden anzeigen", + "missing": "Nur unvollständige Stunden anzeigen", + "groups": "Gruppen", + "courses": "Kurse", + "filter_for_obj": "Nach Gruppe und Kurs filtern" + }, + "no_data": "Keine Stunden der ausgewählten Gruppen und Kurse im aktuellen Zeitraum", + "no_results": "Keine Suchergebnisse für {search}" } } } diff --git a/aleksis/apps/alsijil/frontend/messages/en.json b/aleksis/apps/alsijil/frontend/messages/en.json index cd9798229b0d867611da8dc6b89dfe02eae91f85..acadfea9a598f5edf1952cd205166db7b6ecde62 100644 --- a/aleksis/apps/alsijil/frontend/messages/en.json +++ b/aleksis/apps/alsijil/frontend/messages/en.json @@ -31,6 +31,51 @@ "all_lessons": { "menu_title": "All lessons" }, - "menu_title": "Class register" + "menu_title": "Class register", + "coursebook": { + "menu_title": "Coursebook", + "page_title": "Coursebook for {name}", + "title_plural": "Coursebook", + "status": { + "available": "Documentation available", + "missing": "Documentation missing", + "running": "Lesson running", + "substitution": "Substitution lesson", + "cancelled": "Lesson cancelled", + "pending": "Lesson pending" + }, + "summary": { + "topic": { + "label": "Topic", + "status": { + "success": "Topic saved successfully", + "error": "There has been an error while saving the topic: {error}" + } + }, + "homework": { + "label": "Homework", + "value": "HW: {homework}", + "empty": "No homework" + }, + "group_note": { + "label": "Group note", + "value": "GN: {groupNote}", + "empty": "No group note" + } + }, + "notices": { + "future": "Editing this lesson isn't allowed as this lesson is in the future.", + "no_entry": "There is no entry for this lesson yet." + }, + "filter": { + "own": "Only show own lessons", + "missing": "Only show incomplete lessons", + "groups": "Groups", + "courses": "Courses", + "filter_for_obj": "Filter for group and course" + }, + "no_data": "No lessons for the selected groups and courses in this period", + "no_results": "No search results for {search}" + } } } diff --git a/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po index 9b3363583bbfa59f7e4c85070f65c6dd3b6a6c55..461e0f3cec97715fef05f37eae2d09b466b6e984 100644 --- a/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po +++ b/aleksis/apps/alsijil/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-25 15:28+0200\n" +"POT-Creation-Date: 2024-04-23 21:13+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" @@ -50,55 +50,55 @@ msgstr "" msgid "Ask teacher to check data" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:12 +#: aleksis/apps/alsijil/data_checks.py:16 msgid "Delete object" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:22 +#: aleksis/apps/alsijil/data_checks.py:26 msgid "Set current groups" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:33 +#: aleksis/apps/alsijil/data_checks.py:37 msgid "Reset personal note to defaults" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:45 +#: aleksis/apps/alsijil/data_checks.py:49 msgid "Ensure that there are no personal notes in cancelled lessons" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:46 +#: aleksis/apps/alsijil/data_checks.py:50 msgid "The personal note is related to a cancelled lesson." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:73 +#: aleksis/apps/alsijil/data_checks.py:77 msgid "Ensure that 'groups_of_person' is set for every personal note" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:74 +#: aleksis/apps/alsijil/data_checks.py:78 msgid "The personal note has no group in 'groups_of_person'." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:99 +#: aleksis/apps/alsijil/data_checks.py:103 msgid "Ensure that there are no filled out lesson documentations on holidays" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:100 +#: aleksis/apps/alsijil/data_checks.py:104 msgid "The lesson documentation is on holidays." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:133 +#: aleksis/apps/alsijil/data_checks.py:137 msgid "Ensure that there are no filled out personal notes on holidays" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:134 +#: aleksis/apps/alsijil/data_checks.py:138 msgid "The personal note is on holidays." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:162 +#: aleksis/apps/alsijil/data_checks.py:166 msgid "Ensure that there are no excused personal notes without an absence" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:163 +#: aleksis/apps/alsijil/data_checks.py:167 msgid "The personal note is marked as excused, but not as absent." msgstr "" @@ -110,10 +110,10 @@ msgstr "" msgid "Before" msgstr "" -#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349 -#: aleksis/apps/alsijil/tables.py:116 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227 +#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371 +#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220 msgid "Subject" @@ -135,8 +135,8 @@ msgstr "" msgid "Carry over data to all other lessons with the same subject in this week" msgstr "" -#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256 -#: aleksis/apps/alsijil/forms.py:348 +#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278 +#: aleksis/apps/alsijil/forms.py:370 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219 msgid "Group" msgstr "" @@ -151,80 +151,80 @@ msgstr "" msgid "You can't select a group and a teacher both." msgstr "" -#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350 -#: aleksis/apps/alsijil/models.py:491 +#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291 +#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27 +msgid "Person" +msgstr "" + +#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372 +#: aleksis/apps/alsijil/models.py:730 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64 msgid "Start date" msgstr "" -#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351 -#: aleksis/apps/alsijil/models.py:495 +#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373 +#: aleksis/apps/alsijil/models.py:734 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65 msgid "End date" msgstr "" -#: aleksis/apps/alsijil/forms.py:194 +#: aleksis/apps/alsijil/forms.py:196 msgid "Start period" msgstr "" -#: aleksis/apps/alsijil/forms.py:195 +#: aleksis/apps/alsijil/forms.py:197 msgid "End period" msgstr "" -#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117 -#: aleksis/apps/alsijil/tables.py:138 +#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623 +#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352 msgid "Absent" msgstr "" -#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146 +#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297 msgid "Excused" msgstr "" -#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71 -#: aleksis/apps/alsijil/models.py:253 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73 +#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79 +#: aleksis/apps/alsijil/models.py:255 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72 msgid "Excuse type" msgstr "" -#: aleksis/apps/alsijil/forms.py:204 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94 +#: aleksis/apps/alsijil/forms.py:206 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354 msgid "Remarks" msgstr "" -#: aleksis/apps/alsijil/forms.py:269 -#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 -msgid "Person" -msgstr "" - -#: aleksis/apps/alsijil/forms.py:346 +#: aleksis/apps/alsijil/forms.py:368 msgid "School term" msgstr "" -#: aleksis/apps/alsijil/forms.py:347 +#: aleksis/apps/alsijil/forms.py:369 msgid "Has lesson documentation" msgstr "" -#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50 +#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455 @@ -232,69 +232,6 @@ msgstr "" msgid "Event" msgstr "" -#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 -msgid "Class register" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:16 -msgid "Current lesson" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:27 -msgid "Current week" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:38 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 -msgid "My groups" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:49 -msgid "My overview" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:60 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 -msgid "My students" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:71 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 -msgid "Assign group role" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 -msgid "All lessons" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 -msgid "Excuse types" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258 -#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 -msgid "Extra marks" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:115 -msgid "Manage group roles" -msgstr "" - #: aleksis/apps/alsijil/model_extensions.py:191 msgid "Can view week overview of group class register" msgstr "" @@ -335,149 +272,244 @@ msgstr "" msgid "Can register an absence for a person" msgstr "" -#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430 +#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432 msgid "Short name" msgstr "" -#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431 -#: aleksis/apps/alsijil/models.py:455 +#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433 +#: aleksis/apps/alsijil/models.py:694 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 msgid "Name" msgstr "" -#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41 +#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41 msgid "Count as absent" msgstr "" -#: aleksis/apps/alsijil/models.py:57 +#: aleksis/apps/alsijil/models.py:65 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report." msgstr "" -#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332 +#: aleksis/apps/alsijil/models.py:80 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 +msgid "Excuse types" +msgstr "" + +#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334 msgid "Year" msgstr "" -#: aleksis/apps/alsijil/models.py:292 +#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450 +#: aleksis/apps/alsijil/tables.py:120 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 +msgid "Extra marks" +msgstr "" + +#: aleksis/apps/alsijil/models.py:294 msgid "Personal note" msgstr "" -#: aleksis/apps/alsijil/models.py:293 +#: aleksis/apps/alsijil/models.py:295 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21 msgid "Personal notes" msgstr "" -#: aleksis/apps/alsijil/models.py:344 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26 +#: aleksis/apps/alsijil/models.py:346 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421 msgid "Lesson topic" msgstr "" -#: aleksis/apps/alsijil/models.py:345 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34 +#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422 msgid "Homework" msgstr "" -#: aleksis/apps/alsijil/models.py:346 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42 +#: aleksis/apps/alsijil/models.py:348 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41 msgid "Group note" msgstr "" -#: aleksis/apps/alsijil/models.py:396 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17 +#: aleksis/apps/alsijil/models.py:398 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16 msgid "Lesson documentation" msgstr "" -#: aleksis/apps/alsijil/models.py:397 +#: aleksis/apps/alsijil/models.py:399 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77 msgid "Lesson documentations" msgstr "" -#: aleksis/apps/alsijil/models.py:442 +#: aleksis/apps/alsijil/models.py:435 +msgid "Foreground colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:436 +msgid "Background colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:438 +msgid "Show in coursebook" +msgstr "" + +#: aleksis/apps/alsijil/models.py:449 msgid "Extra mark" msgstr "" -#: aleksis/apps/alsijil/models.py:456 +#: aleksis/apps/alsijil/models.py:467 +msgid "Course" +msgstr "" + +#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331 +msgid "Teachers" +msgstr "" + +#: aleksis/apps/alsijil/models.py:482 +msgid "Lesson Topic" +msgstr "" + +#: aleksis/apps/alsijil/models.py:484 +msgid "Group Note" +msgstr "" + +#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619 +#: aleksis/apps/alsijil/models.py:665 +msgid "Documentation" +msgstr "" + +#: aleksis/apps/alsijil/models.py:513 +msgid "Documentations" +msgstr "" + +#: aleksis/apps/alsijil/models.py:612 +msgid "Groups of Person" +msgstr "" + +#: aleksis/apps/alsijil/models.py:625 +msgid "Absence Reason" +msgstr "" + +#: aleksis/apps/alsijil/models.py:634 +msgid "Base Absence" +msgstr "" + +#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642 +msgid "Participation Status" +msgstr "" + +#: aleksis/apps/alsijil/models.py:670 +msgid "Note" +msgstr "" + +#: aleksis/apps/alsijil/models.py:672 +msgid "Extra Mark" +msgstr "" + +#: aleksis/apps/alsijil/models.py:679 +msgid "Personal Note" +msgstr "" + +#: aleksis/apps/alsijil/models.py:680 +msgid "Personal Notes" +msgstr "" + +#: aleksis/apps/alsijil/models.py:695 msgid "Icon" msgstr "" -#: aleksis/apps/alsijil/models.py:457 +#: aleksis/apps/alsijil/models.py:696 msgid "Colour" msgstr "" -#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478 +#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62 msgid "Group role" msgstr "" -#: aleksis/apps/alsijil/models.py:464 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34 +#: aleksis/apps/alsijil/models.py:703 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9 msgid "Group roles" msgstr "" -#: aleksis/apps/alsijil/models.py:468 +#: aleksis/apps/alsijil/models.py:704 msgid "Can assign group role" msgstr "" -#: aleksis/apps/alsijil/models.py:484 +#: aleksis/apps/alsijil/models.py:723 msgid "Assigned person" msgstr "" -#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326 +#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321 msgid "Groups" msgstr "" -#: aleksis/apps/alsijil/models.py:496 +#: aleksis/apps/alsijil/models.py:735 msgid "Can be left empty if end date is not clear yet" msgstr "" -#: aleksis/apps/alsijil/models.py:511 +#: aleksis/apps/alsijil/models.py:750 msgid "Group role assignment" msgstr "" -#: aleksis/apps/alsijil/models.py:512 +#: aleksis/apps/alsijil/models.py:751 msgid "Group role assignments" msgstr "" -#: aleksis/apps/alsijil/models.py:519 +#: aleksis/apps/alsijil/models.py:758 msgid "Can view lesson overview" msgstr "" -#: aleksis/apps/alsijil/models.py:520 +#: aleksis/apps/alsijil/models.py:759 msgid "Can view week overview" msgstr "" -#: aleksis/apps/alsijil/models.py:521 +#: aleksis/apps/alsijil/models.py:760 msgid "Can view full register" msgstr "" -#: aleksis/apps/alsijil/models.py:522 +#: aleksis/apps/alsijil/models.py:761 msgid "Can register absence" msgstr "" -#: aleksis/apps/alsijil/models.py:523 +#: aleksis/apps/alsijil/models.py:762 msgid "Can list all personal note filters" msgstr "" +#: aleksis/apps/alsijil/preferences.py:9 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 +msgid "Class register" +msgstr "" + #: aleksis/apps/alsijil/preferences.py:17 msgid "Block adding personal notes for cancelled lessons" msgstr "" @@ -558,6 +590,22 @@ msgstr "" msgid "Filter lessons by existence of their lesson documentation on default" msgstr "" +#: aleksis/apps/alsijil/preferences.py:170 +msgid "Allow editing of all future documentations" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:173 +msgid "Allow editing of all documentations up to and including those on the current day" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:178 +msgid "Allow editing of all documentations up to and including those on the current date and time" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:183 +msgid "Set time range for which documentations may be edited" +msgstr "" + #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47 #: aleksis/apps/alsijil/tables.py:72 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13 @@ -570,24 +618,17 @@ msgid "Date" msgstr "" #: aleksis/apps/alsijil/tables.py:99 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122 msgid "Period" msgstr "" -#: aleksis/apps/alsijil/tables.py:111 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336 -msgid "Teachers" -msgstr "" - #: aleksis/apps/alsijil/tables.py:118 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323 msgid "Tardiness" msgstr "" @@ -598,14 +639,46 @@ msgstr "" #: aleksis/apps/alsijil/tables.py:156 #, python-brace-format -msgid "{value}' late" +msgid "{value}' tardiness" +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:26 +msgid "Load data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:49 +msgid "Sort data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:64 +msgid "Load lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:104 +msgid "Sort lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:133 +msgid "Load statistics ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:173 +msgid "Generate template ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:179 +msgid "Generate PDF ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:185 +msgid "PDF generation failed" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140 msgid "Register absence" msgstr "" @@ -649,26 +722,36 @@ msgstr "" msgid "Cancel" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 +msgid "All lessons" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 +msgid "My groups" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21 msgid "Students" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59 msgid "Students list" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19 msgid "Week view" msgstr "" @@ -683,8 +766,8 @@ msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66 msgid "Generate printout" msgstr "" @@ -701,39 +784,25 @@ msgstr "" msgid "Lesson" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83 msgid "Persons" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45 msgid "Seating plan" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32 msgid "Previous" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63 msgid "More" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93 -msgid "My previous lesson" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104 -msgid "My next lesson" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105 -msgid "Next" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114 msgid "" "\n" " This lesson overlaps with holidays and can't be edited.\n" @@ -786,84 +855,89 @@ msgstr "" msgid "Filter results" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120 msgid "Statistics on absences, tardiness and remarks" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291 msgid "Absences" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302 msgid "thereof" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141 msgid "Without Excuse Type" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313 msgid "Unexcused" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 +msgid "My students" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12 #, python-format msgid "Students list: %(group)s" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25 msgid "Select" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31 msgid "Toggle filters" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38 #, python-format msgid "" "CW %(week)s:\n" " %(instance)s" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289 msgid "Unfold" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355 msgid "Visit lesson overview" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393 msgid "unexcused" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396 msgid "Summed up tardiness" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126 msgid "Count of tardiness" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431 msgid "No lessons available" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434 msgid "" "\n" " There are no lessons for the selected group or teacher in this week.\n" @@ -907,6 +981,11 @@ msgstr "" msgid "Assign group role for %(group)s" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 +msgid "Assign group role" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34 msgid "Assign" msgstr "" @@ -976,16 +1055,16 @@ msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139 msgid "(e)" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143 msgid "(u)" msgstr "" @@ -1009,8 +1088,8 @@ msgid "Unexcused absences" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138 msgid "Sum (e)" msgstr "" @@ -1027,14 +1106,28 @@ msgstr "" msgid "Excuse types (not counted as absent)" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +msgid "My previous lesson" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42 +msgid "My next lesson" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43 +msgid "Next" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7 #, python-format msgid "%(period)s. period" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80 #, python-format msgid "" "\n" @@ -1042,13 +1135,13 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139 msgid "Save" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20 #, python-format msgid "" "\n" @@ -1056,7 +1149,7 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31 #, python-format msgid "" "\n" @@ -1064,11 +1157,11 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11 msgid "Change history" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58 msgid "Tardiness (in m)" msgstr "" @@ -1184,27 +1277,27 @@ msgid "No students available." msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 msgid "Primary group" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 msgid "Uncounted Absences" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 msgid "Sum" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92 msgid "Regular excused" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132 msgid "Show more details" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133 msgid "Details" msgstr "" @@ -1375,78 +1468,98 @@ msgstr "" msgid "Notes" msgstr "" -#: aleksis/apps/alsijil/views.py:118 +#: aleksis/apps/alsijil/views.py:114 msgid "You either selected an invalid lesson or there is currently no lesson in progress." msgstr "" -#: aleksis/apps/alsijil/views.py:151 +#: aleksis/apps/alsijil/views.py:147 msgid "You are not allowed to create a lesson documentation for a lesson in the future." msgstr "" -#: aleksis/apps/alsijil/views.py:268 +#: aleksis/apps/alsijil/views.py:264 msgid "The lesson documentation has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:302 +#: aleksis/apps/alsijil/views.py:298 msgid "The personal notes have been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1119 +#: aleksis/apps/alsijil/views.py:658 +msgid "Generate full register printout for {}" +msgstr "" + +#: aleksis/apps/alsijil/views.py:659 +msgid "Generate full register printout …" +msgstr "" + +#: aleksis/apps/alsijil/views.py:660 +msgid "The printout has been generated successfully." +msgstr "" + +#: aleksis/apps/alsijil/views.py:661 +msgid "There was a problem while generating the printout." +msgstr "" + +#: aleksis/apps/alsijil/views.py:664 +msgid "Download PDF" +msgstr "" + +#: aleksis/apps/alsijil/views.py:1030 msgid "The absence has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1140 +#: aleksis/apps/alsijil/views.py:1051 msgid "The personal note has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1162 +#: aleksis/apps/alsijil/views.py:1074 msgid "The extra mark has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1174 +#: aleksis/apps/alsijil/views.py:1086 msgid "The extra mark has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1185 +#: aleksis/apps/alsijil/views.py:1097 msgid "The extra mark has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1206 +#: aleksis/apps/alsijil/views.py:1119 msgid "The excuse type has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1218 +#: aleksis/apps/alsijil/views.py:1131 msgid "The excuse type has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1229 +#: aleksis/apps/alsijil/views.py:1142 msgid "The excuse type has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1250 +#: aleksis/apps/alsijil/views.py:1164 msgid "The group role has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1262 +#: aleksis/apps/alsijil/views.py:1176 msgid "The group role has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1273 +#: aleksis/apps/alsijil/views.py:1187 msgid "The group role has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338 +#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253 msgid "The group role has been assigned." msgstr "" -#: aleksis/apps/alsijil/views.py:1357 +#: aleksis/apps/alsijil/views.py:1272 msgid "The group role assignment has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1378 +#: aleksis/apps/alsijil/views.py:1293 msgid "The group role assignment has been stopped." msgstr "" -#: aleksis/apps/alsijil/views.py:1391 +#: aleksis/apps/alsijil/views.py:1306 msgid "The group role assignment has been deleted." msgstr "" diff --git a/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po index 5c846bc0433997a8a2dfe7488705f1f836591e38..95e2c62508d2213718a6d6ad97fda65b7a4fd234 100644 --- a/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po +++ b/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po @@ -7,11 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-25 15:28+0200\n" +"POT-Creation-Date: 2024-04-23 21:13+0200\n" "PO-Revision-Date: 2022-06-25 13:53+0000\n" "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n" -"Language-Team: German <https://translate.edugit.org/projects/aleksis/" -"aleksis-app-alsijil/de/>\n" +"Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/de/>\n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -51,55 +50,55 @@ msgstr "Wir haben erfolgreich Benachrichtigungen an {count_teachers} Personen f msgid "Ask teacher to check data" msgstr "Lehrkraft bitten, die Daten zu überprüfen" -#: aleksis/apps/alsijil/data_checks.py:12 +#: aleksis/apps/alsijil/data_checks.py:16 msgid "Delete object" msgstr "Objekt löschen" -#: aleksis/apps/alsijil/data_checks.py:22 +#: aleksis/apps/alsijil/data_checks.py:26 msgid "Set current groups" msgstr "Aktuelle Gruppen setzen" -#: aleksis/apps/alsijil/data_checks.py:33 +#: aleksis/apps/alsijil/data_checks.py:37 msgid "Reset personal note to defaults" msgstr "Persönliche Notiz zurücksetzen" -#: aleksis/apps/alsijil/data_checks.py:45 +#: aleksis/apps/alsijil/data_checks.py:49 msgid "Ensure that there are no personal notes in cancelled lessons" msgstr "Sicherstellen, dass es keine persönlichen Notizen in ausgefallenen Stunden gibt" -#: aleksis/apps/alsijil/data_checks.py:46 +#: aleksis/apps/alsijil/data_checks.py:50 msgid "The personal note is related to a cancelled lesson." msgstr "Die persönliche Notiz ist einer ausgefallenen Stunde zugeordnet." -#: aleksis/apps/alsijil/data_checks.py:73 +#: aleksis/apps/alsijil/data_checks.py:77 msgid "Ensure that 'groups_of_person' is set for every personal note" msgstr "Sicherstellen, dass \"groups_of_person\" für alle persönlichen Notizen gesetzt ist" -#: aleksis/apps/alsijil/data_checks.py:74 +#: aleksis/apps/alsijil/data_checks.py:78 msgid "The personal note has no group in 'groups_of_person'." msgstr "Die persönliche Notiz hat keine Gruppe in \"groups_of_person\"." -#: aleksis/apps/alsijil/data_checks.py:99 +#: aleksis/apps/alsijil/data_checks.py:103 msgid "Ensure that there are no filled out lesson documentations on holidays" msgstr "Sicherstellen, dass es keine ausgefüllten Stundendokumentationen in den Ferien gibt" -#: aleksis/apps/alsijil/data_checks.py:100 +#: aleksis/apps/alsijil/data_checks.py:104 msgid "The lesson documentation is on holidays." msgstr "Die Stundendokumentation ist in den Ferien." -#: aleksis/apps/alsijil/data_checks.py:133 +#: aleksis/apps/alsijil/data_checks.py:137 msgid "Ensure that there are no filled out personal notes on holidays" msgstr "Sicherstellen, dass es keine ausgefüllten persönlichen Notizen in den Ferien gibt" -#: aleksis/apps/alsijil/data_checks.py:134 +#: aleksis/apps/alsijil/data_checks.py:138 msgid "The personal note is on holidays." msgstr "Die persönliche Notiz ist in den Ferien." -#: aleksis/apps/alsijil/data_checks.py:162 +#: aleksis/apps/alsijil/data_checks.py:166 msgid "Ensure that there are no excused personal notes without an absence" msgstr "Sicherstellen, dass es keine entschuldigten persönlichen Notizen ohne eine Absenz gibt" -#: aleksis/apps/alsijil/data_checks.py:163 +#: aleksis/apps/alsijil/data_checks.py:167 msgid "The personal note is marked as excused, but not as absent." msgstr "Die persönliche Notiz ist als entschuldigt, aber nicht als abwesend markiert." @@ -111,10 +110,10 @@ msgstr "Nach" msgid "Before" msgstr "Bevor" -#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349 -#: aleksis/apps/alsijil/tables.py:116 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227 +#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371 +#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220 msgid "Subject" @@ -134,12 +133,10 @@ msgstr "Hausaufgabe zur nächsten Stunde" #: aleksis/apps/alsijil/forms.py:53 msgid "Carry over data to all other lessons with the same subject in this week" -msgstr "" -"Daten zu allen weiteren Stunden mit dem gleichen Fach in dieser Woche " -"übernehmen" +msgstr "Daten zu allen weiteren Stunden mit dem gleichen Fach in dieser Woche übernehmen" -#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256 -#: aleksis/apps/alsijil/forms.py:348 +#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278 +#: aleksis/apps/alsijil/forms.py:370 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219 msgid "Group" msgstr "Gruppe" @@ -154,80 +151,80 @@ msgstr "Lehrkraft" msgid "You can't select a group and a teacher both." msgstr "Es kann nur entweder eine Gruppe oder eine Lehrkraft ausgewählt werden." -#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350 -#: aleksis/apps/alsijil/models.py:491 +#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291 +#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27 +msgid "Person" +msgstr "Person" + +#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372 +#: aleksis/apps/alsijil/models.py:730 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64 msgid "Start date" msgstr "Startdatum" -#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351 -#: aleksis/apps/alsijil/models.py:495 +#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373 +#: aleksis/apps/alsijil/models.py:734 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65 msgid "End date" msgstr "Enddatum" -#: aleksis/apps/alsijil/forms.py:194 +#: aleksis/apps/alsijil/forms.py:196 msgid "Start period" msgstr "Startstunde" -#: aleksis/apps/alsijil/forms.py:195 +#: aleksis/apps/alsijil/forms.py:197 msgid "End period" msgstr "Endstunde" -#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117 -#: aleksis/apps/alsijil/tables.py:138 +#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623 +#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352 msgid "Absent" msgstr "Abwesend" -#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146 +#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297 msgid "Excused" msgstr "Entschuldigt" -#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71 -#: aleksis/apps/alsijil/models.py:253 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73 +#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79 +#: aleksis/apps/alsijil/models.py:255 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72 msgid "Excuse type" msgstr "Entschuldigungsart" -#: aleksis/apps/alsijil/forms.py:204 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94 +#: aleksis/apps/alsijil/forms.py:206 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354 msgid "Remarks" msgstr "Bemerkungen" -#: aleksis/apps/alsijil/forms.py:269 -#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 -msgid "Person" -msgstr "Person" - -#: aleksis/apps/alsijil/forms.py:346 +#: aleksis/apps/alsijil/forms.py:368 msgid "School term" msgstr "Schuljahr" -#: aleksis/apps/alsijil/forms.py:347 +#: aleksis/apps/alsijil/forms.py:369 msgid "Has lesson documentation" msgstr "Hat eine Stunden-Dokumentation" -#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50 +#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455 @@ -235,69 +232,6 @@ msgstr "Hat eine Stunden-Dokumentation" msgid "Event" msgstr "Veranstaltung" -#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 -msgid "Class register" -msgstr "Klassenbuch" - -#: aleksis/apps/alsijil/menus.py:16 -msgid "Current lesson" -msgstr "Aktuelle Unterrichtsstunde" - -#: aleksis/apps/alsijil/menus.py:27 -msgid "Current week" -msgstr "Aktuelle Woche" - -#: aleksis/apps/alsijil/menus.py:38 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 -msgid "My groups" -msgstr "Meine Gruppen" - -#: aleksis/apps/alsijil/menus.py:49 -msgid "My overview" -msgstr "Meine Ãœbersicht" - -#: aleksis/apps/alsijil/menus.py:60 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 -msgid "My students" -msgstr "Meine Schülerinnen und Schüler" - -#: aleksis/apps/alsijil/menus.py:71 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 -msgid "Assign group role" -msgstr "Gruppenrolle zuweisen" - -#: aleksis/apps/alsijil/menus.py:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 -msgid "All lessons" -msgstr "Alle Stunden" - -#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 -msgid "Excuse types" -msgstr "Entschuldigungsarten" - -#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258 -#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 -msgid "Extra marks" -msgstr "Zusätzliche Markierungen" - -#: aleksis/apps/alsijil/menus.py:115 -msgid "Manage group roles" -msgstr "Gruppenrollen verwalten" - #: aleksis/apps/alsijil/model_extensions.py:191 msgid "Can view week overview of group class register" msgstr "Kann Wochenübersicht des Gruppenklassenbuches sehen" @@ -338,152 +272,266 @@ msgstr "Kann eine Gruppenrolle für diese Gruppe zuweisen" msgid "Can register an absence for a person" msgstr "Kann eine Absenz für eine Person registrieren" -#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430 +#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432 msgid "Short name" msgstr "Kurzname" -#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431 -#: aleksis/apps/alsijil/models.py:455 +#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433 +#: aleksis/apps/alsijil/models.py:694 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 msgid "Name" msgstr "Name" -#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41 +#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41 msgid "Count as absent" msgstr "Als abwesend zählen" -#: aleksis/apps/alsijil/models.py:57 +#: aleksis/apps/alsijil/models.py:65 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report." -msgstr "" -"Wenn ausgewählt wird diese Entschuldigungsart als eine verpasste Stunde " -"gezählt. Wenn nicht ausgewählt wird es nicht im Abwesenheitsbericht " -"auftauchen." +msgstr "Wenn ausgewählt wird diese Entschuldigungsart als eine verpasste Stunde gezählt. Wenn nicht ausgewählt wird es nicht im Abwesenheitsbericht auftauchen." -#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332 +#: aleksis/apps/alsijil/models.py:80 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 +msgid "Excuse types" +msgstr "Entschuldigungsarten" + +#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334 msgid "Year" msgstr "Jahr" -#: aleksis/apps/alsijil/models.py:292 +#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450 +#: aleksis/apps/alsijil/tables.py:120 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 +msgid "Extra marks" +msgstr "Zusätzliche Markierungen" + +#: aleksis/apps/alsijil/models.py:294 msgid "Personal note" msgstr "Persönliche Notiz" -#: aleksis/apps/alsijil/models.py:293 +#: aleksis/apps/alsijil/models.py:295 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21 msgid "Personal notes" msgstr "Persönliche Notizen" -#: aleksis/apps/alsijil/models.py:344 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26 +#: aleksis/apps/alsijil/models.py:346 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421 msgid "Lesson topic" msgstr "Stundenthema" -#: aleksis/apps/alsijil/models.py:345 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34 +#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422 msgid "Homework" msgstr "Hausaufgaben" -#: aleksis/apps/alsijil/models.py:346 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42 +#: aleksis/apps/alsijil/models.py:348 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41 msgid "Group note" msgstr "Gruppennotiz" -#: aleksis/apps/alsijil/models.py:396 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17 +#: aleksis/apps/alsijil/models.py:398 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16 msgid "Lesson documentation" msgstr "Stunden-Dokumentation" -#: aleksis/apps/alsijil/models.py:397 +#: aleksis/apps/alsijil/models.py:399 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77 msgid "Lesson documentations" msgstr "Stunden-Dokumentationen" -#: aleksis/apps/alsijil/models.py:442 +#: aleksis/apps/alsijil/models.py:435 +msgid "Foreground colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:436 +msgid "Background colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:438 +msgid "Show in coursebook" +msgstr "" + +#: aleksis/apps/alsijil/models.py:449 msgid "Extra mark" msgstr "Zusätzliche Markierung" -#: aleksis/apps/alsijil/models.py:456 +#: aleksis/apps/alsijil/models.py:467 +msgid "Course" +msgstr "" + +#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331 +msgid "Teachers" +msgstr "Lehrkräfte" + +#: aleksis/apps/alsijil/models.py:482 +#, fuzzy +#| msgid "Lesson topic" +msgid "Lesson Topic" +msgstr "Stundenthema" + +#: aleksis/apps/alsijil/models.py:484 +#, fuzzy +#| msgid "Group note" +msgid "Group Note" +msgstr "Gruppennotiz" + +#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619 +#: aleksis/apps/alsijil/models.py:665 +#, fuzzy +#| msgid "Lesson documentation" +msgid "Documentation" +msgstr "Stunden-Dokumentation" + +#: aleksis/apps/alsijil/models.py:513 +#, fuzzy +#| msgid "Lesson documentations" +msgid "Documentations" +msgstr "Stunden-Dokumentationen" + +#: aleksis/apps/alsijil/models.py:612 +#, fuzzy +#| msgid "Group roles" +msgid "Groups of Person" +msgstr "Gruppenrollen" + +#: aleksis/apps/alsijil/models.py:625 +#, fuzzy +#| msgid "Absences" +msgid "Absence Reason" +msgstr "Fehlstunden" + +#: aleksis/apps/alsijil/models.py:634 +#, fuzzy +#| msgid "Absences" +msgid "Base Absence" +msgstr "Fehlstunden" + +#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642 +msgid "Participation Status" +msgstr "" + +#: aleksis/apps/alsijil/models.py:670 +#, fuzzy +#| msgid "Notes" +msgid "Note" +msgstr "Notizen" + +#: aleksis/apps/alsijil/models.py:672 +#, fuzzy +#| msgid "Extra mark" +msgid "Extra Mark" +msgstr "Zusätzliche Markierung" + +#: aleksis/apps/alsijil/models.py:679 +#, fuzzy +#| msgid "Personal note" +msgid "Personal Note" +msgstr "Persönliche Notiz" + +#: aleksis/apps/alsijil/models.py:680 +#, fuzzy +#| msgid "Personal notes" +msgid "Personal Notes" +msgstr "Persönliche Notizen" + +#: aleksis/apps/alsijil/models.py:695 msgid "Icon" msgstr "Symbol" -#: aleksis/apps/alsijil/models.py:457 +#: aleksis/apps/alsijil/models.py:696 msgid "Colour" msgstr "Farbe" -#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478 +#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62 msgid "Group role" msgstr "Gruppenrolle" -#: aleksis/apps/alsijil/models.py:464 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34 +#: aleksis/apps/alsijil/models.py:703 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9 msgid "Group roles" msgstr "Gruppenrollen" -#: aleksis/apps/alsijil/models.py:468 +#: aleksis/apps/alsijil/models.py:704 msgid "Can assign group role" msgstr "Kann Gruppenrolle zuweisen" -#: aleksis/apps/alsijil/models.py:484 +#: aleksis/apps/alsijil/models.py:723 msgid "Assigned person" msgstr "Zugewiesene Person" -#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326 +#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321 msgid "Groups" msgstr "Gruppen" -#: aleksis/apps/alsijil/models.py:496 +#: aleksis/apps/alsijil/models.py:735 msgid "Can be left empty if end date is not clear yet" msgstr "Kann frei gelassen werden, wenn das Enddatum noch nicht feststeht" -#: aleksis/apps/alsijil/models.py:511 +#: aleksis/apps/alsijil/models.py:750 msgid "Group role assignment" msgstr "Zuweisung von Gruppenrollen" -#: aleksis/apps/alsijil/models.py:512 +#: aleksis/apps/alsijil/models.py:751 msgid "Group role assignments" msgstr "Zuweisungen von Gruppenrollen" -#: aleksis/apps/alsijil/models.py:519 +#: aleksis/apps/alsijil/models.py:758 msgid "Can view lesson overview" msgstr "Kann die Stundenübersicht sehen" -#: aleksis/apps/alsijil/models.py:520 +#: aleksis/apps/alsijil/models.py:759 msgid "Can view week overview" msgstr "Kann die Wochenübersicht sehen" -#: aleksis/apps/alsijil/models.py:521 +#: aleksis/apps/alsijil/models.py:760 msgid "Can view full register" msgstr "Kann komplettes Klassenbuch sehen" -#: aleksis/apps/alsijil/models.py:522 +#: aleksis/apps/alsijil/models.py:761 msgid "Can register absence" msgstr "Kann eine Absenz registrieren" -#: aleksis/apps/alsijil/models.py:523 +#: aleksis/apps/alsijil/models.py:762 msgid "Can list all personal note filters" msgstr "Kann alle Filter für persönliche Notizen anzeigen" +#: aleksis/apps/alsijil/preferences.py:9 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 +msgid "Class register" +msgstr "Klassenbuch" + #: aleksis/apps/alsijil/preferences.py:17 msgid "Block adding personal notes for cancelled lessons" msgstr "Blockiere das Hinzufügen von persönlichen Notizen für ausgefallene Stunden" @@ -498,9 +546,7 @@ msgstr "Erlaube Primärgruppeninhabern Absenzen in der Zukunft für Mitglieder i #: aleksis/apps/alsijil/preferences.py:44 msgid "Grant the owner of a parent group the same privileges as the owners of the respective child groups" -msgstr "" -"Gebe dem Besitzer einer Elterngruppe die gleichen Rechte wie den Besitzern " -"der entsprechenden Kindgruppen" +msgstr "Gebe dem Besitzer einer Elterngruppe die gleichen Rechte wie den Besitzern der entsprechenden Kindgruppen" #: aleksis/apps/alsijil/preferences.py:54 msgid "Allow original teachers to edit their lessons although they are substituted" @@ -516,15 +562,11 @@ msgstr "Dies wird die Daten nur übernehmen, wenn die Daten in den Folgestunden #: aleksis/apps/alsijil/preferences.py:75 msgid "Allow carrying over data from any lesson period to all other lesson periods with the same lesson and in the same week" -msgstr "" -"Erlaube das Ãœbernehmen von Daten von einer Stunde zu allen weiteren Stunden " -"mit dem gleichen Unterricht in der gleichen Woche" +msgstr "Erlaube das Ãœbernehmen von Daten von einer Stunde zu allen weiteren Stunden mit dem gleichen Unterricht in der gleichen Woche" #: aleksis/apps/alsijil/preferences.py:79 msgid "This will carry over data only if the data in the aforementioned periods are empty." -msgstr "" -"Dies wird die Daten nur übernehmen, wenn die Daten in den eben genannten " -"Stunden leer sind." +msgstr "Dies wird die Daten nur übernehmen, wenn die Daten in den eben genannten Stunden leer sind." #: aleksis/apps/alsijil/preferences.py:88 msgid "Carry over personal notes to all following lesson periods on the same day." @@ -570,6 +612,22 @@ msgstr "Jede Seite muss mindestens einen Eintrag anzeigen." msgid "Filter lessons by existence of their lesson documentation on default" msgstr "Stunden standardmäßig anhand der Existenz ihrer Stundendokumentation filtern" +#: aleksis/apps/alsijil/preferences.py:170 +msgid "Allow editing of all future documentations" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:173 +msgid "Allow editing of all documentations up to and including those on the current day" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:178 +msgid "Allow editing of all documentations up to and including those on the current date and time" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:183 +msgid "Set time range for which documentations may be edited" +msgstr "" + #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47 #: aleksis/apps/alsijil/tables.py:72 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13 @@ -582,24 +640,17 @@ msgid "Date" msgstr "Datum" #: aleksis/apps/alsijil/tables.py:99 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122 msgid "Period" msgstr "Stunde" -#: aleksis/apps/alsijil/tables.py:111 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336 -msgid "Teachers" -msgstr "Lehrkräfte" - #: aleksis/apps/alsijil/tables.py:118 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323 msgid "Tardiness" msgstr "Verspätung" @@ -609,15 +660,52 @@ msgid "Excuse" msgstr "Entschuldigen" #: aleksis/apps/alsijil/tables.py:156 -#, python-brace-format -msgid "{value}' late" +#, fuzzy, python-brace-format +#| msgid "{value}' late" +msgid "{value}' tardiness" msgstr "{value}' verspätet" +#: aleksis/apps/alsijil/tasks.py:26 +msgid "Load data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:49 +#, fuzzy +#| msgid "Start date" +msgid "Sort data ..." +msgstr "Startdatum" + +#: aleksis/apps/alsijil/tasks.py:64 +msgid "Load lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:104 +msgid "Sort lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:133 +#, fuzzy +#| msgid "Statistics" +msgid "Load statistics ..." +msgstr "Statistiken" + +#: aleksis/apps/alsijil/tasks.py:173 +msgid "Generate template ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:179 +msgid "Generate PDF ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:185 +msgid "PDF generation failed" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140 msgid "Register absence" msgstr "Abwesenheit eintragen" @@ -671,26 +759,36 @@ msgstr "Status auf \"nicht abwesend\" zurücksetzen" msgid "Cancel" msgstr "Abbrechen" +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 +msgid "All lessons" +msgstr "Alle Stunden" + +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 +msgid "My groups" +msgstr "Meine Gruppen" + #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21 msgid "Students" msgstr "Schülerinnen und Schüler" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59 msgid "Students list" msgstr "Liste der Schülerinnen und Schüler" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19 msgid "Week view" msgstr "Wochenansicht" @@ -705,8 +803,8 @@ msgstr "Rollen" #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66 msgid "Generate printout" msgstr "Ausdruck generieren" @@ -723,39 +821,25 @@ msgstr "Schülerinnen und Schüler" msgid "Lesson" msgstr "Unterrichtsstunde" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83 msgid "Persons" msgstr "Personen" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45 msgid "Seating plan" msgstr "Sitzplan" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32 msgid "Previous" msgstr "Vorherige" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63 msgid "More" msgstr "Mehr" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93 -msgid "My previous lesson" -msgstr "Meine vorherige Stunde" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104 -msgid "My next lesson" -msgstr "Meine nächste Stunde" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105 -msgid "Next" -msgstr "Nächste" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114 msgid "" "\n" " This lesson overlaps with holidays and can't be edited.\n" @@ -814,52 +898,57 @@ msgstr "Filtern" msgid "Filter results" msgstr "Ergebnisse filtern" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120 msgid "Statistics on absences, tardiness and remarks" msgstr "Statistiken zu Fehlzeiten, Verspätungen und Bemerkungen" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291 msgid "Absences" msgstr "Fehlstunden" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302 msgid "thereof" msgstr "davon" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141 msgid "Without Excuse Type" msgstr "Ohne Entschuldigungsart" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313 msgid "Unexcused" msgstr "Unentschuldigt" +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 +msgid "My students" +msgstr "Meine Schülerinnen und Schüler" + #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12 #, python-format msgid "Students list: %(group)s" msgstr "Liste der Schülerinnen und Schüler: %(group)s" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25 msgid "Select" msgstr "Auswählen" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31 msgid "Toggle filters" msgstr "Filter umschalten" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38 #, python-format msgid "" "CW %(week)s:\n" @@ -868,32 +957,32 @@ msgstr "" "KW %(week)s: \n" "%(instance)s" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289 msgid "Unfold" msgstr "Ausklappen" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355 msgid "Visit lesson overview" msgstr "Stundenübersicht besuchen" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393 msgid "unexcused" msgstr "unentschuldigt" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396 msgid "Summed up tardiness" msgstr "Summierte Verspätung" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126 msgid "Count of tardiness" msgstr "Anzahl der Verspätungen" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431 msgid "No lessons available" msgstr "Keine Stunden verfügbar" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434 msgid "" "\n" " There are no lessons for the selected group or teacher in this week.\n" @@ -944,6 +1033,11 @@ msgstr "Zusätzliche Markierung bearbeiten" msgid "Assign group role for %(group)s" msgstr "Gruppenrolle für %(group)s zuweisen" +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 +msgid "Assign group role" +msgstr "Gruppenrolle zuweisen" + #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34 msgid "Assign" msgstr "Zuweisen" @@ -1017,16 +1111,16 @@ msgstr "Bitte prüfen Sie, ob die folgenden Klassenbucheinträge komplett und ri #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139 msgid "(e)" msgstr "(e)" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143 msgid "(u)" msgstr "(u)" @@ -1050,8 +1144,8 @@ msgid "Unexcused absences" msgstr "Unentschuldigte Fehlzeiten" #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138 msgid "Sum (e)" msgstr "Summe (e)" @@ -1068,14 +1162,28 @@ msgstr "Normal entschuldigte Fehlzeiten" msgid "Excuse types (not counted as absent)" msgstr "Entschuldigungsarten (nicht als abwesend gezählt)" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +msgid "My previous lesson" +msgstr "Meine vorherige Stunde" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42 +msgid "My next lesson" +msgstr "Meine nächste Stunde" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43 +msgid "Next" +msgstr "Nächste" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7 #, python-format msgid "%(period)s. period" msgstr "%(period)s. Stunde" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80 #, python-format msgid "" "\n" @@ -1086,13 +1194,13 @@ msgstr "" " %(period_from)s.–%(period_to)s. Stunde\n" " " -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139 msgid "Save" msgstr "Speichern" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20 #, python-format msgid "" "\n" @@ -1103,7 +1211,7 @@ msgstr "" " Vorherige %(subject)s Stunde\n" " " -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31 #, python-format msgid "" "\n" @@ -1114,11 +1222,11 @@ msgstr "" " Nächste %(subject)s Stunde\n" " " -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11 msgid "Change history" msgstr "Veränderungen" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58 msgid "Tardiness (in m)" msgstr "Verspätung (in m)" @@ -1164,10 +1272,8 @@ msgid "" " " msgstr "" "\n" -" Dieser Sitzplan wurde von der Elterngruppe von %(child_group)s " -"übernommen.\n" -"Wenn Sie wollen, können Sie ihn für Ihre Gruppe übernehmen und dann anpassen." -"\n" +" Dieser Sitzplan wurde von der Elterngruppe von %(child_group)s übernommen.\n" +"Wenn Sie wollen, können Sie ihn für Ihre Gruppe übernehmen und dann anpassen.\n" " " #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/seating_plan.html:30 @@ -1190,8 +1296,7 @@ msgid "" " " msgstr "" "\n" -" Einen neuen Sitzplan für %(group)s (%(subject)s) in %(room)" -"s erstellen\n" +" Einen neuen Sitzplan für %(group)s (%(subject)s) in %(room)s erstellen\n" " " #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/seating_plan.html:78 @@ -1202,8 +1307,7 @@ msgid "" " " msgstr "" "\n" -" Einen neuen Sitzplan für %(group)s in %(room)s " -"erstellen\n" +" Einen neuen Sitzplan für %(group)s in %(room)s erstellen\n" " " #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:6 @@ -1250,27 +1354,27 @@ msgid "No students available." msgstr "Keine Schülerinnen und Schüler verfügbar." #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 msgid "Primary group" msgstr "Primärgruppe" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 msgid "Uncounted Absences" msgstr "Ungezählte Fehlzeiten" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 msgid "Sum" msgstr "Summe" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92 msgid "Regular excused" msgstr "Normal entschuldigt" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132 msgid "Show more details" msgstr "Mehr Details anzeigen" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133 msgid "Details" msgstr "Details" @@ -1455,84 +1559,122 @@ msgstr "KW" msgid "Notes" msgstr "Notizen" -#: aleksis/apps/alsijil/views.py:118 +#: aleksis/apps/alsijil/views.py:114 msgid "You either selected an invalid lesson or there is currently no lesson in progress." msgstr "" "Sie haben eine ungültige Stunde ausgewählt oder es\n" " läuft momentan keine Stunde." -#: aleksis/apps/alsijil/views.py:151 +#: aleksis/apps/alsijil/views.py:147 msgid "You are not allowed to create a lesson documentation for a lesson in the future." msgstr "Ihnen ist es nicht erlaubt, eine Eintragung für eine Unterrichtsstunde in der Zukunft vorzunehmen." -#: aleksis/apps/alsijil/views.py:268 +#: aleksis/apps/alsijil/views.py:264 msgid "The lesson documentation has been saved." msgstr "Die Stunden-Dokumentation wurde gespeichert." -#: aleksis/apps/alsijil/views.py:302 +#: aleksis/apps/alsijil/views.py:298 msgid "The personal notes have been saved." msgstr "Die persönlichen Notizen wurden gespeichert." -#: aleksis/apps/alsijil/views.py:1119 +#: aleksis/apps/alsijil/views.py:658 +#, fuzzy +#| msgid "Generate printout" +msgid "Generate full register printout for {}" +msgstr "Ausdruck generieren" + +#: aleksis/apps/alsijil/views.py:659 +#, fuzzy +#| msgid "Generate printout" +msgid "Generate full register printout …" +msgstr "Ausdruck generieren" + +#: aleksis/apps/alsijil/views.py:660 +#, fuzzy +#| msgid "The personal note has been deleted." +msgid "The printout has been generated successfully." +msgstr "Die persönliche Notiz wurde gelöscht." + +#: aleksis/apps/alsijil/views.py:661 +msgid "There was a problem while generating the printout." +msgstr "" + +#: aleksis/apps/alsijil/views.py:664 +msgid "Download PDF" +msgstr "" + +#: aleksis/apps/alsijil/views.py:1030 msgid "The absence has been saved." msgstr "Die Abwesenheit wurde gespeichert." -#: aleksis/apps/alsijil/views.py:1140 +#: aleksis/apps/alsijil/views.py:1051 msgid "The personal note has been deleted." msgstr "Die persönliche Notiz wurde gelöscht." -#: aleksis/apps/alsijil/views.py:1162 +#: aleksis/apps/alsijil/views.py:1074 msgid "The extra mark has been created." msgstr "Die zusätzliche Markierung wurde erstellt." -#: aleksis/apps/alsijil/views.py:1174 +#: aleksis/apps/alsijil/views.py:1086 msgid "The extra mark has been saved." msgstr "Die zusätzliche Markierung wurde gespeichert." -#: aleksis/apps/alsijil/views.py:1185 +#: aleksis/apps/alsijil/views.py:1097 msgid "The extra mark has been deleted." msgstr "Die zusätzliche Markierung wurde gelöscht." -#: aleksis/apps/alsijil/views.py:1206 +#: aleksis/apps/alsijil/views.py:1119 msgid "The excuse type has been created." msgstr "Die Entschuldigungsart wurde erstellt." -#: aleksis/apps/alsijil/views.py:1218 +#: aleksis/apps/alsijil/views.py:1131 msgid "The excuse type has been saved." msgstr "Die Entschuldigunsart wurde gespeichert." -#: aleksis/apps/alsijil/views.py:1229 +#: aleksis/apps/alsijil/views.py:1142 msgid "The excuse type has been deleted." msgstr "Die Entschuldigungsart wurde gelöscht." -#: aleksis/apps/alsijil/views.py:1250 +#: aleksis/apps/alsijil/views.py:1164 msgid "The group role has been created." msgstr "Die Gruppenrolle wurde erstellt." -#: aleksis/apps/alsijil/views.py:1262 +#: aleksis/apps/alsijil/views.py:1176 msgid "The group role has been saved." msgstr "Die Gruppenrolle wurde gespeichert." -#: aleksis/apps/alsijil/views.py:1273 +#: aleksis/apps/alsijil/views.py:1187 msgid "The group role has been deleted." msgstr "Die Gruppenrolle wurde gelöscht." -#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338 +#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253 msgid "The group role has been assigned." msgstr "Die Gruppenrolle wurde zugewiesen." -#: aleksis/apps/alsijil/views.py:1357 +#: aleksis/apps/alsijil/views.py:1272 msgid "The group role assignment has been saved." msgstr "Die Gruppenrollenzuweisung wurde gespeichert." -#: aleksis/apps/alsijil/views.py:1378 +#: aleksis/apps/alsijil/views.py:1293 msgid "The group role assignment has been stopped." msgstr "Die Gruppenrollenzuweisung wurde beendet." -#: aleksis/apps/alsijil/views.py:1391 +#: aleksis/apps/alsijil/views.py:1306 msgid "The group role assignment has been deleted." msgstr "Die Gruppenrollenzuweisung wurde gelöscht." +#~ msgid "Current lesson" +#~ msgstr "Aktuelle Unterrichtsstunde" + +#~ msgid "Current week" +#~ msgstr "Aktuelle Woche" + +#~ msgid "My overview" +#~ msgstr "Meine Ãœbersicht" + +#~ msgid "Manage group roles" +#~ msgstr "Gruppenrollen verwalten" + #~ msgid "Excused absences" #~ msgstr "Entschuldigte Fehlzeiten" diff --git a/aleksis/apps/alsijil/locale/fr/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/fr/LC_MESSAGES/django.po index e1a4b25dc5ebd5a6090ead1f0a1eee38d3e07ab3..e283f3797931d09214dbc06954730515b45eda92 100644 --- a/aleksis/apps/alsijil/locale/fr/LC_MESSAGES/django.po +++ b/aleksis/apps/alsijil/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-25 15:28+0200\n" +"POT-Creation-Date: 2024-04-23 21:13+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-alsijil/fr/>\n" @@ -52,63 +52,63 @@ msgstr "" msgid "Ask teacher to check data" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:12 +#: aleksis/apps/alsijil/data_checks.py:16 msgid "Delete object" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:22 +#: aleksis/apps/alsijil/data_checks.py:26 msgid "Set current groups" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:33 +#: aleksis/apps/alsijil/data_checks.py:37 #, fuzzy #| msgid "Relevant personal notes" msgid "Reset personal note to defaults" msgstr "Notes personnelles importantes" -#: aleksis/apps/alsijil/data_checks.py:45 +#: aleksis/apps/alsijil/data_checks.py:49 msgid "Ensure that there are no personal notes in cancelled lessons" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:46 +#: aleksis/apps/alsijil/data_checks.py:50 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The personal note is related to a cancelled lesson." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/data_checks.py:73 +#: aleksis/apps/alsijil/data_checks.py:77 msgid "Ensure that 'groups_of_person' is set for every personal note" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:74 +#: aleksis/apps/alsijil/data_checks.py:78 msgid "The personal note has no group in 'groups_of_person'." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:99 +#: aleksis/apps/alsijil/data_checks.py:103 msgid "Ensure that there are no filled out lesson documentations on holidays" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:100 +#: aleksis/apps/alsijil/data_checks.py:104 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The lesson documentation is on holidays." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/data_checks.py:133 +#: aleksis/apps/alsijil/data_checks.py:137 msgid "Ensure that there are no filled out personal notes on holidays" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:134 +#: aleksis/apps/alsijil/data_checks.py:138 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The personal note is on holidays." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/data_checks.py:162 +#: aleksis/apps/alsijil/data_checks.py:166 msgid "Ensure that there are no excused personal notes without an absence" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:163 +#: aleksis/apps/alsijil/data_checks.py:167 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The personal note is marked as excused, but not as absent." @@ -122,10 +122,10 @@ msgstr "" msgid "Before" msgstr "" -#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349 -#: aleksis/apps/alsijil/tables.py:116 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227 +#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371 +#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220 msgid "Subject" @@ -151,8 +151,8 @@ msgstr "" msgid "Carry over data to all other lessons with the same subject in this week" msgstr "" -#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256 -#: aleksis/apps/alsijil/forms.py:348 +#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278 +#: aleksis/apps/alsijil/forms.py:370 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219 msgid "Group" msgstr "groupe" @@ -167,88 +167,88 @@ msgstr "prof" msgid "You can't select a group and a teacher both." msgstr "" -#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350 -#: aleksis/apps/alsijil/models.py:491 +#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291 +#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27 +msgid "Person" +msgstr "Personne" + +#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372 +#: aleksis/apps/alsijil/models.py:730 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64 msgid "Start date" msgstr "Date de début" -#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351 -#: aleksis/apps/alsijil/models.py:495 +#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373 +#: aleksis/apps/alsijil/models.py:734 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65 msgid "End date" msgstr "Date de fin" -#: aleksis/apps/alsijil/forms.py:194 +#: aleksis/apps/alsijil/forms.py:196 #, fuzzy #| msgid "From period" msgid "Start period" msgstr "De la période" -#: aleksis/apps/alsijil/forms.py:195 +#: aleksis/apps/alsijil/forms.py:197 #, fuzzy #| msgid "From period" msgid "End period" msgstr "De la période" -#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117 -#: aleksis/apps/alsijil/tables.py:138 +#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623 +#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352 msgid "Absent" msgstr "Absent(e)" -#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146 +#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297 msgid "Excused" msgstr "Excusé" -#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71 -#: aleksis/apps/alsijil/models.py:253 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73 +#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79 +#: aleksis/apps/alsijil/models.py:255 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72 #, fuzzy #| msgid "Excused" msgid "Excuse type" msgstr "Excusé" -#: aleksis/apps/alsijil/forms.py:204 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94 +#: aleksis/apps/alsijil/forms.py:206 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354 msgid "Remarks" msgstr "Remarque" -#: aleksis/apps/alsijil/forms.py:269 -#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 -msgid "Person" -msgstr "Personne" - -#: aleksis/apps/alsijil/forms.py:346 +#: aleksis/apps/alsijil/forms.py:368 msgid "School term" msgstr "" -#: aleksis/apps/alsijil/forms.py:347 +#: aleksis/apps/alsijil/forms.py:369 #, fuzzy #| msgid "Lesson documentation" msgid "Has lesson documentation" msgstr "Documentation de cours" -#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50 +#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455 @@ -256,77 +256,6 @@ msgstr "Documentation de cours" msgid "Event" msgstr "" -#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 -msgid "Class register" -msgstr "Registre de la classe" - -#: aleksis/apps/alsijil/menus.py:16 -msgid "Current lesson" -msgstr "Lecon actuelle" - -#: aleksis/apps/alsijil/menus.py:27 -msgid "Current week" -msgstr "Semaine actuelle" - -#: aleksis/apps/alsijil/menus.py:38 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 -#, fuzzy -#| msgid "Group" -msgid "My groups" -msgstr "Groupe" - -#: aleksis/apps/alsijil/menus.py:49 -#, fuzzy -#| msgid "Personal overview" -msgid "My overview" -msgstr "Vue d'ensemble personnelle" - -#: aleksis/apps/alsijil/menus.py:60 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 -msgid "My students" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:71 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 -#, fuzzy -#| msgid "Persons in group" -msgid "Assign group role" -msgstr "Personnes en groupe" - -#: aleksis/apps/alsijil/menus.py:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 -msgid "All lessons" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 -#, fuzzy -#| msgid "Excused" -msgid "Excuse types" -msgstr "Excusé" - -#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258 -#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 -msgid "Extra marks" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:115 -msgid "Manage group roles" -msgstr "" - #: aleksis/apps/alsijil/model_extensions.py:191 msgid "Can view week overview of group class register" msgstr "" @@ -377,107 +306,219 @@ msgstr "" msgid "Can register an absence for a person" msgstr "Registre de la classe" -#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430 +#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432 #, fuzzy #| msgid "First name" msgid "Short name" msgstr "Prénom" -#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431 -#: aleksis/apps/alsijil/models.py:455 +#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433 +#: aleksis/apps/alsijil/models.py:694 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 msgid "Name" msgstr "" -#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41 +#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41 msgid "Count as absent" msgstr "" -#: aleksis/apps/alsijil/models.py:57 +#: aleksis/apps/alsijil/models.py:65 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report." msgstr "" -#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332 +#: aleksis/apps/alsijil/models.py:80 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 +#, fuzzy +#| msgid "Excused" +msgid "Excuse types" +msgstr "Excusé" + +#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334 msgid "Year" msgstr "" -#: aleksis/apps/alsijil/models.py:292 +#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450 +#: aleksis/apps/alsijil/tables.py:120 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 +msgid "Extra marks" +msgstr "" + +#: aleksis/apps/alsijil/models.py:294 #, fuzzy #| msgid "Personal notes" msgid "Personal note" msgstr "Notes personnelles" -#: aleksis/apps/alsijil/models.py:293 +#: aleksis/apps/alsijil/models.py:295 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21 msgid "Personal notes" msgstr "Notes personnelles" -#: aleksis/apps/alsijil/models.py:344 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26 +#: aleksis/apps/alsijil/models.py:346 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421 msgid "Lesson topic" msgstr "Sujet de cours" -#: aleksis/apps/alsijil/models.py:345 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34 +#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422 msgid "Homework" msgstr "Devoirs" -#: aleksis/apps/alsijil/models.py:346 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42 +#: aleksis/apps/alsijil/models.py:348 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41 #, fuzzy #| msgid "Group" msgid "Group note" msgstr "Groupe" -#: aleksis/apps/alsijil/models.py:396 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17 +#: aleksis/apps/alsijil/models.py:398 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16 msgid "Lesson documentation" msgstr "Documentation de cours" -#: aleksis/apps/alsijil/models.py:397 +#: aleksis/apps/alsijil/models.py:399 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77 #, fuzzy #| msgid "Lesson documentation" msgid "Lesson documentations" msgstr "Documentation de cours" -#: aleksis/apps/alsijil/models.py:442 +#: aleksis/apps/alsijil/models.py:435 +msgid "Foreground colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:436 +msgid "Background colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:438 +msgid "Show in coursebook" +msgstr "" + +#: aleksis/apps/alsijil/models.py:449 msgid "Extra mark" msgstr "" -#: aleksis/apps/alsijil/models.py:456 +#: aleksis/apps/alsijil/models.py:467 +msgid "Course" +msgstr "" + +#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331 +msgid "Teachers" +msgstr "Profs" + +#: aleksis/apps/alsijil/models.py:482 +#, fuzzy +#| msgid "Lesson topic" +msgid "Lesson Topic" +msgstr "Sujet de cours" + +#: aleksis/apps/alsijil/models.py:484 +#, fuzzy +#| msgid "Group" +msgid "Group Note" +msgstr "Groupe" + +#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619 +#: aleksis/apps/alsijil/models.py:665 +#, fuzzy +#| msgid "Lesson documentation" +msgid "Documentation" +msgstr "Documentation de cours" + +#: aleksis/apps/alsijil/models.py:513 +#, fuzzy +#| msgid "Lesson documentation" +msgid "Documentations" +msgstr "Documentation de cours" + +#: aleksis/apps/alsijil/models.py:612 +#, fuzzy +#| msgid "Group" +msgid "Groups of Person" +msgstr "Groupe" + +#: aleksis/apps/alsijil/models.py:625 +#, fuzzy +#| msgid "Absences" +msgid "Absence Reason" +msgstr "Absences" + +#: aleksis/apps/alsijil/models.py:634 +#, fuzzy +#| msgid "Absences" +msgid "Base Absence" +msgstr "Absences" + +#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642 +msgid "Participation Status" +msgstr "" + +#: aleksis/apps/alsijil/models.py:670 +#, fuzzy +#| msgid "Notes" +msgid "Note" +msgstr "Notes" + +#: aleksis/apps/alsijil/models.py:672 +msgid "Extra Mark" +msgstr "" + +#: aleksis/apps/alsijil/models.py:679 +#, fuzzy +#| msgid "Personal notes" +msgid "Personal Note" +msgstr "Notes personnelles" + +#: aleksis/apps/alsijil/models.py:680 +#, fuzzy +#| msgid "Personal notes" +msgid "Personal Notes" +msgstr "Notes personnelles" + +#: aleksis/apps/alsijil/models.py:695 msgid "Icon" msgstr "" -#: aleksis/apps/alsijil/models.py:457 +#: aleksis/apps/alsijil/models.py:696 msgid "Colour" msgstr "" -#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478 +#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62 #, fuzzy #| msgid "Group" msgid "Group role" msgstr "Groupe" -#: aleksis/apps/alsijil/models.py:464 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34 +#: aleksis/apps/alsijil/models.py:703 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9 #, fuzzy @@ -485,67 +526,72 @@ msgstr "Groupe" msgid "Group roles" msgstr "Groupe" -#: aleksis/apps/alsijil/models.py:468 +#: aleksis/apps/alsijil/models.py:704 #, fuzzy #| msgid "Persons in group" msgid "Can assign group role" msgstr "Personnes en groupe" -#: aleksis/apps/alsijil/models.py:484 +#: aleksis/apps/alsijil/models.py:723 #, fuzzy #| msgid "Absences" msgid "Assigned person" msgstr "Absences" -#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326 +#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321 #, fuzzy #| msgid "Group" msgid "Groups" msgstr "Groupe" -#: aleksis/apps/alsijil/models.py:496 +#: aleksis/apps/alsijil/models.py:735 msgid "Can be left empty if end date is not clear yet" msgstr "" -#: aleksis/apps/alsijil/models.py:511 +#: aleksis/apps/alsijil/models.py:750 msgid "Group role assignment" msgstr "" -#: aleksis/apps/alsijil/models.py:512 +#: aleksis/apps/alsijil/models.py:751 msgid "Group role assignments" msgstr "" -#: aleksis/apps/alsijil/models.py:519 +#: aleksis/apps/alsijil/models.py:758 #, fuzzy #| msgid "Personal overview" msgid "Can view lesson overview" msgstr "Vue d'ensemble personnelle" -#: aleksis/apps/alsijil/models.py:520 +#: aleksis/apps/alsijil/models.py:759 msgid "Can view week overview" msgstr "" -#: aleksis/apps/alsijil/models.py:521 +#: aleksis/apps/alsijil/models.py:760 #, fuzzy #| msgid "Class register" msgid "Can view full register" msgstr "Registre de la classe" -#: aleksis/apps/alsijil/models.py:522 +#: aleksis/apps/alsijil/models.py:761 #, fuzzy #| msgid "Register absence" msgid "Can register absence" msgstr "Registre de Absence" -#: aleksis/apps/alsijil/models.py:523 +#: aleksis/apps/alsijil/models.py:762 #, fuzzy #| msgid "List of all personal note filters" msgid "Can list all personal note filters" msgstr "Liste de filtres de notes personnelles" +#: aleksis/apps/alsijil/preferences.py:9 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 +msgid "Class register" +msgstr "Registre de la classe" + #: aleksis/apps/alsijil/preferences.py:17 msgid "Block adding personal notes for cancelled lessons" msgstr "" @@ -628,6 +674,22 @@ msgstr "" msgid "Filter lessons by existence of their lesson documentation on default" msgstr "" +#: aleksis/apps/alsijil/preferences.py:170 +msgid "Allow editing of all future documentations" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:173 +msgid "Allow editing of all documentations up to and including those on the current day" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:178 +msgid "Allow editing of all documentations up to and including those on the current date and time" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:183 +msgid "Set time range for which documentations may be edited" +msgstr "" + #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47 #: aleksis/apps/alsijil/tables.py:72 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13 @@ -640,24 +702,17 @@ msgid "Date" msgstr "Date" #: aleksis/apps/alsijil/tables.py:99 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122 msgid "Period" msgstr "Période" -#: aleksis/apps/alsijil/tables.py:111 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336 -msgid "Teachers" -msgstr "Profs" - #: aleksis/apps/alsijil/tables.py:118 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323 msgid "Tardiness" msgstr "Retard" @@ -669,15 +724,50 @@ msgid "Excuse" msgstr "Excusé" #: aleksis/apps/alsijil/tables.py:156 -#, python-brace-format -msgid "{value}' late" +#, fuzzy, python-brace-format +#| msgid "Summed up tardiness" +msgid "{value}' tardiness" +msgstr "Résumé des retards" + +#: aleksis/apps/alsijil/tasks.py:26 +msgid "Load data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:49 +#, fuzzy +#| msgid "Start date" +msgid "Sort data ..." +msgstr "Date de début" + +#: aleksis/apps/alsijil/tasks.py:64 +msgid "Load lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:104 +msgid "Sort lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:133 +msgid "Load statistics ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:173 +msgid "Generate template ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:179 +msgid "Generate PDF ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:185 +msgid "PDF generation failed" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140 msgid "Register absence" msgstr "Registre de Absence" @@ -731,26 +821,38 @@ msgstr "" msgid "Cancel" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 +msgid "All lessons" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 +#, fuzzy +#| msgid "Group" +msgid "My groups" +msgstr "Groupe" + #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21 msgid "Students" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59 msgid "Students list" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19 msgid "Week view" msgstr "Vue de semaine" @@ -765,8 +867,8 @@ msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66 msgid "Generate printout" msgstr "" @@ -783,47 +885,29 @@ msgstr "" msgid "Lesson" msgstr "Cours" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83 #, fuzzy #| msgid "Person" msgid "Persons" msgstr "Personne" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45 msgid "Seating plan" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32 #, fuzzy #| msgid "Current lesson" msgid "Previous" msgstr "Lecon actuelle" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63 msgid "More" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93 -#, fuzzy -#| msgid "Current lesson" -msgid "My previous lesson" -msgstr "Lecon actuelle" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104 -#, fuzzy -#| msgid "Current lesson" -msgid "My next lesson" -msgstr "Lecon actuelle" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105 -msgid "Next" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114 #, fuzzy #| msgid "" #| "\n" @@ -892,92 +976,97 @@ msgstr "" msgid "Filter results" msgstr "Notes personnelles importantes" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120 msgid "Statistics on absences, tardiness and remarks" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291 msgid "Absences" msgstr "Absences" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302 msgid "thereof" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141 #, fuzzy #| msgid "Excused" msgid "Without Excuse Type" msgstr "Excusé" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313 msgid "Unexcused" msgstr "injustifié(e)" +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 +msgid "My students" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12 #, python-format msgid "Students list: %(group)s" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25 msgid "Select" msgstr "Sélectionner" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31 #, fuzzy #| msgid "Personal note filters" msgid "Toggle filters" msgstr "Filtres de notes personnelles" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38 #, python-format msgid "" "CW %(week)s:\n" " %(instance)s" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289 msgid "Unfold" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355 #, fuzzy #| msgid "Personal overview" msgid "Visit lesson overview" msgstr "Vue d'ensemble personnelle" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393 msgid "unexcused" msgstr "Injustifié(e)" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396 msgid "Summed up tardiness" msgstr "Résumé des retards" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126 #, fuzzy #| msgid "Summed up tardiness" msgid "Count of tardiness" msgstr "Résumé des retards" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431 msgid "No lessons available" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434 #, fuzzy #| msgid "" #| "\n" @@ -1029,6 +1118,13 @@ msgstr "" msgid "Assign group role for %(group)s" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 +#, fuzzy +#| msgid "Persons in group" +msgid "Assign group role" +msgstr "Personnes en groupe" + #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34 msgid "Assign" msgstr "" @@ -1102,16 +1198,16 @@ msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139 msgid "(e)" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143 msgid "(u)" msgstr "" @@ -1137,8 +1233,8 @@ msgid "Unexcused absences" msgstr "injustifié(e)" #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138 msgid "Sum (e)" msgstr "" @@ -1159,15 +1255,33 @@ msgstr "injustifié(e)" msgid "Excuse types (not counted as absent)" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +#, fuzzy +#| msgid "Current lesson" +msgid "My previous lesson" +msgstr "Lecon actuelle" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42 +#, fuzzy +#| msgid "Current lesson" +msgid "My next lesson" +msgstr "Lecon actuelle" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43 +msgid "Next" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7 #, fuzzy, python-format #| msgid "From period" msgid "%(period)s. period" msgstr "De la période" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80 #, python-format msgid "" "\n" @@ -1175,13 +1289,13 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139 msgid "Save" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20 #, python-format msgid "" "\n" @@ -1189,7 +1303,7 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31 #, python-format msgid "" "\n" @@ -1197,11 +1311,11 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11 msgid "Change history" msgstr "Changement d' histoire" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58 #, fuzzy #| msgid "Tardiness" msgid "Tardiness (in m)" @@ -1327,33 +1441,33 @@ msgid "No students available." msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 #, fuzzy #| msgid "Group" msgid "Primary group" msgstr "Groupe" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 #, fuzzy #| msgid "Unexcused" msgid "Uncounted Absences" msgstr "injustifié(e)" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 msgid "Sum" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92 #, fuzzy #| msgid "unexcused" msgid "Regular excused" msgstr "Injustifié(e)" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132 msgid "Show more details" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133 msgid "Details" msgstr "" @@ -1532,104 +1646,137 @@ msgstr "Vue de semaine" msgid "Notes" msgstr "Notes" -#: aleksis/apps/alsijil/views.py:118 +#: aleksis/apps/alsijil/views.py:114 msgid "You either selected an invalid lesson or there is currently no lesson in progress." msgstr "" -#: aleksis/apps/alsijil/views.py:151 +#: aleksis/apps/alsijil/views.py:147 msgid "You are not allowed to create a lesson documentation for a lesson in the future." msgstr "" -#: aleksis/apps/alsijil/views.py:268 +#: aleksis/apps/alsijil/views.py:264 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The lesson documentation has been saved." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/views.py:302 +#: aleksis/apps/alsijil/views.py:298 msgid "The personal notes have been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1119 +#: aleksis/apps/alsijil/views.py:658 +msgid "Generate full register printout for {}" +msgstr "" + +#: aleksis/apps/alsijil/views.py:659 +msgid "Generate full register printout …" +msgstr "" + +#: aleksis/apps/alsijil/views.py:660 +#, fuzzy +#| msgid "Lesson documentation for calendar week" +msgid "The printout has been generated successfully." +msgstr "Documentation de cours pour la semaine calendrier" + +#: aleksis/apps/alsijil/views.py:661 +msgid "There was a problem while generating the printout." +msgstr "" + +#: aleksis/apps/alsijil/views.py:664 +msgid "Download PDF" +msgstr "" + +#: aleksis/apps/alsijil/views.py:1030 msgid "The absence has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1140 +#: aleksis/apps/alsijil/views.py:1051 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The personal note has been deleted." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/views.py:1162 +#: aleksis/apps/alsijil/views.py:1074 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The extra mark has been created." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/views.py:1174 +#: aleksis/apps/alsijil/views.py:1086 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The extra mark has been saved." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/views.py:1185 +#: aleksis/apps/alsijil/views.py:1097 msgid "The extra mark has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1206 +#: aleksis/apps/alsijil/views.py:1119 msgid "The excuse type has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1218 +#: aleksis/apps/alsijil/views.py:1131 msgid "The excuse type has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1229 +#: aleksis/apps/alsijil/views.py:1142 msgid "The excuse type has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1250 +#: aleksis/apps/alsijil/views.py:1164 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The group role has been created." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/views.py:1262 +#: aleksis/apps/alsijil/views.py:1176 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The group role has been saved." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/views.py:1273 +#: aleksis/apps/alsijil/views.py:1187 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The group role has been deleted." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338 +#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The group role has been assigned." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/views.py:1357 +#: aleksis/apps/alsijil/views.py:1272 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The group role assignment has been saved." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/views.py:1378 +#: aleksis/apps/alsijil/views.py:1293 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The group role assignment has been stopped." msgstr "Documentation de cours pour la semaine calendrier" -#: aleksis/apps/alsijil/views.py:1391 +#: aleksis/apps/alsijil/views.py:1306 #, fuzzy #| msgid "Lesson documentation for calendar week" msgid "The group role assignment has been deleted." msgstr "Documentation de cours pour la semaine calendrier" +#~ msgid "Current lesson" +#~ msgstr "Lecon actuelle" + +#~ msgid "Current week" +#~ msgstr "Semaine actuelle" + +#, fuzzy +#~| msgid "Personal overview" +#~ msgid "My overview" +#~ msgstr "Vue d'ensemble personnelle" + #, fuzzy #~| msgid "Unexcused" #~ msgid "Excused absences" diff --git a/aleksis/apps/alsijil/locale/la/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/la/LC_MESSAGES/django.po index 482b187e4b662d5dae6984428bf834aeb086c7eb..a3ca7ecd62424293afd0f457fe4b67c95cbeb5af 100644 --- a/aleksis/apps/alsijil/locale/la/LC_MESSAGES/django.po +++ b/aleksis/apps/alsijil/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-25 15:28+0200\n" +"POT-Creation-Date: 2024-04-23 21:13+0200\n" "PO-Revision-Date: 2020-07-26 14:08+0000\n" "Last-Translator: Julian <leuckerj@gmail.com>\n" "Language-Team: Latin <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/la/>\n" @@ -50,55 +50,55 @@ msgstr "" msgid "Ask teacher to check data" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:12 +#: aleksis/apps/alsijil/data_checks.py:16 msgid "Delete object" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:22 +#: aleksis/apps/alsijil/data_checks.py:26 msgid "Set current groups" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:33 +#: aleksis/apps/alsijil/data_checks.py:37 msgid "Reset personal note to defaults" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:45 +#: aleksis/apps/alsijil/data_checks.py:49 msgid "Ensure that there are no personal notes in cancelled lessons" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:46 +#: aleksis/apps/alsijil/data_checks.py:50 msgid "The personal note is related to a cancelled lesson." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:73 +#: aleksis/apps/alsijil/data_checks.py:77 msgid "Ensure that 'groups_of_person' is set for every personal note" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:74 +#: aleksis/apps/alsijil/data_checks.py:78 msgid "The personal note has no group in 'groups_of_person'." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:99 +#: aleksis/apps/alsijil/data_checks.py:103 msgid "Ensure that there are no filled out lesson documentations on holidays" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:100 +#: aleksis/apps/alsijil/data_checks.py:104 msgid "The lesson documentation is on holidays." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:133 +#: aleksis/apps/alsijil/data_checks.py:137 msgid "Ensure that there are no filled out personal notes on holidays" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:134 +#: aleksis/apps/alsijil/data_checks.py:138 msgid "The personal note is on holidays." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:162 +#: aleksis/apps/alsijil/data_checks.py:166 msgid "Ensure that there are no excused personal notes without an absence" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:163 +#: aleksis/apps/alsijil/data_checks.py:167 msgid "The personal note is marked as excused, but not as absent." msgstr "" @@ -110,10 +110,10 @@ msgstr "" msgid "Before" msgstr "" -#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349 -#: aleksis/apps/alsijil/tables.py:116 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227 +#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371 +#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220 msgid "Subject" @@ -135,8 +135,8 @@ msgstr "" msgid "Carry over data to all other lessons with the same subject in this week" msgstr "" -#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256 -#: aleksis/apps/alsijil/forms.py:348 +#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278 +#: aleksis/apps/alsijil/forms.py:370 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219 msgid "Group" msgstr "Grex" @@ -151,80 +151,80 @@ msgstr "" msgid "You can't select a group and a teacher both." msgstr "" -#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350 -#: aleksis/apps/alsijil/models.py:491 +#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291 +#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27 +msgid "Person" +msgstr "Persona" + +#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372 +#: aleksis/apps/alsijil/models.py:730 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64 msgid "Start date" msgstr "" -#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351 -#: aleksis/apps/alsijil/models.py:495 +#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373 +#: aleksis/apps/alsijil/models.py:734 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65 msgid "End date" msgstr "" -#: aleksis/apps/alsijil/forms.py:194 +#: aleksis/apps/alsijil/forms.py:196 msgid "Start period" msgstr "" -#: aleksis/apps/alsijil/forms.py:195 +#: aleksis/apps/alsijil/forms.py:197 msgid "End period" msgstr "" -#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117 -#: aleksis/apps/alsijil/tables.py:138 +#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623 +#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352 msgid "Absent" msgstr "" -#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146 +#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297 msgid "Excused" msgstr "" -#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71 -#: aleksis/apps/alsijil/models.py:253 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73 +#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79 +#: aleksis/apps/alsijil/models.py:255 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72 msgid "Excuse type" msgstr "" -#: aleksis/apps/alsijil/forms.py:204 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94 +#: aleksis/apps/alsijil/forms.py:206 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354 msgid "Remarks" msgstr "" -#: aleksis/apps/alsijil/forms.py:269 -#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 -msgid "Person" -msgstr "Persona" - -#: aleksis/apps/alsijil/forms.py:346 +#: aleksis/apps/alsijil/forms.py:368 msgid "School term" msgstr "" -#: aleksis/apps/alsijil/forms.py:347 +#: aleksis/apps/alsijil/forms.py:369 msgid "Has lesson documentation" msgstr "" -#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50 +#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455 @@ -232,71 +232,6 @@ msgstr "" msgid "Event" msgstr "" -#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 -msgid "Class register" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:16 -msgid "Current lesson" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:27 -msgid "Current week" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:38 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 -#, fuzzy -#| msgid "Group" -msgid "My groups" -msgstr "Grex" - -#: aleksis/apps/alsijil/menus.py:49 -msgid "My overview" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:60 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 -msgid "My students" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:71 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 -msgid "Assign group role" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 -msgid "All lessons" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 -msgid "Excuse types" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258 -#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 -msgid "Extra marks" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:115 -msgid "Manage group roles" -msgstr "" - #: aleksis/apps/alsijil/model_extensions.py:191 msgid "Can view week overview of group class register" msgstr "" @@ -337,105 +272,203 @@ msgstr "" msgid "Can register an absence for a person" msgstr "" -#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430 +#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432 #, fuzzy #| msgid "First name" msgid "Short name" msgstr "Primus nomen" -#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431 -#: aleksis/apps/alsijil/models.py:455 +#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433 +#: aleksis/apps/alsijil/models.py:694 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 msgid "Name" msgstr "" -#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41 +#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41 msgid "Count as absent" msgstr "" -#: aleksis/apps/alsijil/models.py:57 +#: aleksis/apps/alsijil/models.py:65 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report." msgstr "" -#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332 +#: aleksis/apps/alsijil/models.py:80 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 +msgid "Excuse types" +msgstr "" + +#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334 msgid "Year" msgstr "" -#: aleksis/apps/alsijil/models.py:292 +#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450 +#: aleksis/apps/alsijil/tables.py:120 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 +msgid "Extra marks" +msgstr "" + +#: aleksis/apps/alsijil/models.py:294 #, fuzzy #| msgid "Person" msgid "Personal note" msgstr "Persona" -#: aleksis/apps/alsijil/models.py:293 +#: aleksis/apps/alsijil/models.py:295 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21 msgid "Personal notes" msgstr "" -#: aleksis/apps/alsijil/models.py:344 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26 +#: aleksis/apps/alsijil/models.py:346 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421 msgid "Lesson topic" msgstr "" -#: aleksis/apps/alsijil/models.py:345 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34 +#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422 msgid "Homework" msgstr "" -#: aleksis/apps/alsijil/models.py:346 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42 +#: aleksis/apps/alsijil/models.py:348 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41 #, fuzzy #| msgid "Group" msgid "Group note" msgstr "Grex" -#: aleksis/apps/alsijil/models.py:396 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17 +#: aleksis/apps/alsijil/models.py:398 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16 msgid "Lesson documentation" msgstr "" -#: aleksis/apps/alsijil/models.py:397 +#: aleksis/apps/alsijil/models.py:399 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77 msgid "Lesson documentations" msgstr "" -#: aleksis/apps/alsijil/models.py:442 +#: aleksis/apps/alsijil/models.py:435 +msgid "Foreground colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:436 +msgid "Background colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:438 +msgid "Show in coursebook" +msgstr "" + +#: aleksis/apps/alsijil/models.py:449 msgid "Extra mark" msgstr "" -#: aleksis/apps/alsijil/models.py:456 +#: aleksis/apps/alsijil/models.py:467 +msgid "Course" +msgstr "" + +#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331 +msgid "Teachers" +msgstr "" + +#: aleksis/apps/alsijil/models.py:482 +msgid "Lesson Topic" +msgstr "" + +#: aleksis/apps/alsijil/models.py:484 +#, fuzzy +#| msgid "Group" +msgid "Group Note" +msgstr "Grex" + +#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619 +#: aleksis/apps/alsijil/models.py:665 +msgid "Documentation" +msgstr "" + +#: aleksis/apps/alsijil/models.py:513 +msgid "Documentations" +msgstr "" + +#: aleksis/apps/alsijil/models.py:612 +#, fuzzy +#| msgid "Group" +msgid "Groups of Person" +msgstr "Grex" + +#: aleksis/apps/alsijil/models.py:625 +msgid "Absence Reason" +msgstr "" + +#: aleksis/apps/alsijil/models.py:634 +msgid "Base Absence" +msgstr "" + +#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642 +msgid "Participation Status" +msgstr "" + +#: aleksis/apps/alsijil/models.py:670 +msgid "Note" +msgstr "" + +#: aleksis/apps/alsijil/models.py:672 +msgid "Extra Mark" +msgstr "" + +#: aleksis/apps/alsijil/models.py:679 +#, fuzzy +#| msgid "Person" +msgid "Personal Note" +msgstr "Persona" + +#: aleksis/apps/alsijil/models.py:680 +#, fuzzy +#| msgid "Person" +msgid "Personal Notes" +msgstr "Persona" + +#: aleksis/apps/alsijil/models.py:695 msgid "Icon" msgstr "" -#: aleksis/apps/alsijil/models.py:457 +#: aleksis/apps/alsijil/models.py:696 msgid "Colour" msgstr "" -#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478 +#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62 #, fuzzy #| msgid "Group" msgid "Group role" msgstr "Grex" -#: aleksis/apps/alsijil/models.py:464 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34 +#: aleksis/apps/alsijil/models.py:703 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9 #, fuzzy @@ -443,55 +476,60 @@ msgstr "Grex" msgid "Group roles" msgstr "Grex" -#: aleksis/apps/alsijil/models.py:468 +#: aleksis/apps/alsijil/models.py:704 msgid "Can assign group role" msgstr "" -#: aleksis/apps/alsijil/models.py:484 +#: aleksis/apps/alsijil/models.py:723 msgid "Assigned person" msgstr "" -#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326 +#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321 #, fuzzy #| msgid "Group" msgid "Groups" msgstr "Grex" -#: aleksis/apps/alsijil/models.py:496 +#: aleksis/apps/alsijil/models.py:735 msgid "Can be left empty if end date is not clear yet" msgstr "" -#: aleksis/apps/alsijil/models.py:511 +#: aleksis/apps/alsijil/models.py:750 msgid "Group role assignment" msgstr "" -#: aleksis/apps/alsijil/models.py:512 +#: aleksis/apps/alsijil/models.py:751 msgid "Group role assignments" msgstr "" -#: aleksis/apps/alsijil/models.py:519 +#: aleksis/apps/alsijil/models.py:758 msgid "Can view lesson overview" msgstr "" -#: aleksis/apps/alsijil/models.py:520 +#: aleksis/apps/alsijil/models.py:759 msgid "Can view week overview" msgstr "" -#: aleksis/apps/alsijil/models.py:521 +#: aleksis/apps/alsijil/models.py:760 msgid "Can view full register" msgstr "" -#: aleksis/apps/alsijil/models.py:522 +#: aleksis/apps/alsijil/models.py:761 msgid "Can register absence" msgstr "" -#: aleksis/apps/alsijil/models.py:523 +#: aleksis/apps/alsijil/models.py:762 msgid "Can list all personal note filters" msgstr "" +#: aleksis/apps/alsijil/preferences.py:9 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 +msgid "Class register" +msgstr "" + #: aleksis/apps/alsijil/preferences.py:17 msgid "Block adding personal notes for cancelled lessons" msgstr "" @@ -572,6 +610,22 @@ msgstr "" msgid "Filter lessons by existence of their lesson documentation on default" msgstr "" +#: aleksis/apps/alsijil/preferences.py:170 +msgid "Allow editing of all future documentations" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:173 +msgid "Allow editing of all documentations up to and including those on the current day" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:178 +msgid "Allow editing of all documentations up to and including those on the current date and time" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:183 +msgid "Set time range for which documentations may be edited" +msgstr "" + #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47 #: aleksis/apps/alsijil/tables.py:72 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13 @@ -584,24 +638,17 @@ msgid "Date" msgstr "dies" #: aleksis/apps/alsijil/tables.py:99 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122 msgid "Period" msgstr "" -#: aleksis/apps/alsijil/tables.py:111 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336 -msgid "Teachers" -msgstr "" - #: aleksis/apps/alsijil/tables.py:118 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323 msgid "Tardiness" msgstr "" @@ -612,14 +659,46 @@ msgstr "" #: aleksis/apps/alsijil/tables.py:156 #, python-brace-format -msgid "{value}' late" +msgid "{value}' tardiness" +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:26 +msgid "Load data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:49 +msgid "Sort data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:64 +msgid "Load lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:104 +msgid "Sort lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:133 +msgid "Load statistics ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:173 +msgid "Generate template ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:179 +msgid "Generate PDF ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:185 +msgid "PDF generation failed" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140 msgid "Register absence" msgstr "" @@ -663,26 +742,38 @@ msgstr "" msgid "Cancel" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 +msgid "All lessons" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 +#, fuzzy +#| msgid "Group" +msgid "My groups" +msgstr "Grex" + #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21 msgid "Students" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59 msgid "Students list" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19 msgid "Week view" msgstr "" @@ -697,8 +788,8 @@ msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66 msgid "Generate printout" msgstr "" @@ -715,41 +806,27 @@ msgstr "" msgid "Lesson" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83 #, fuzzy #| msgid "Person" msgid "Persons" msgstr "Persona" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45 msgid "Seating plan" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32 msgid "Previous" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63 msgid "More" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93 -msgid "My previous lesson" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104 -msgid "My next lesson" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105 -msgid "Next" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114 msgid "" "\n" " This lesson overlaps with holidays and can't be edited.\n" @@ -806,84 +883,89 @@ msgstr "" msgid "Filter results" msgstr "Persona" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120 msgid "Statistics on absences, tardiness and remarks" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291 msgid "Absences" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302 msgid "thereof" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141 msgid "Without Excuse Type" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313 msgid "Unexcused" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 +msgid "My students" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12 #, python-format msgid "Students list: %(group)s" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25 msgid "Select" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31 msgid "Toggle filters" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38 #, python-format msgid "" "CW %(week)s:\n" " %(instance)s" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289 msgid "Unfold" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355 msgid "Visit lesson overview" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393 msgid "unexcused" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396 msgid "Summed up tardiness" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126 msgid "Count of tardiness" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431 msgid "No lessons available" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434 msgid "" "\n" " There are no lessons for the selected group or teacher in this week.\n" @@ -927,6 +1009,11 @@ msgstr "" msgid "Assign group role for %(group)s" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 +msgid "Assign group role" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34 msgid "Assign" msgstr "" @@ -998,16 +1085,16 @@ msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139 msgid "(e)" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143 msgid "(u)" msgstr "" @@ -1031,8 +1118,8 @@ msgid "Unexcused absences" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138 msgid "Sum (e)" msgstr "" @@ -1049,14 +1136,28 @@ msgstr "" msgid "Excuse types (not counted as absent)" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +msgid "My previous lesson" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42 +msgid "My next lesson" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43 +msgid "Next" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7 #, python-format msgid "%(period)s. period" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80 #, python-format msgid "" "\n" @@ -1064,13 +1165,13 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139 msgid "Save" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20 #, python-format msgid "" "\n" @@ -1078,7 +1179,7 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31 #, python-format msgid "" "\n" @@ -1086,11 +1187,11 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11 msgid "Change history" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58 msgid "Tardiness (in m)" msgstr "" @@ -1206,29 +1307,29 @@ msgid "No students available." msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 #, fuzzy #| msgid "Group" msgid "Primary group" msgstr "Grex" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 msgid "Uncounted Absences" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 msgid "Sum" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92 msgid "Regular excused" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132 msgid "Show more details" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133 msgid "Details" msgstr "" @@ -1399,79 +1500,99 @@ msgstr "" msgid "Notes" msgstr "" -#: aleksis/apps/alsijil/views.py:118 +#: aleksis/apps/alsijil/views.py:114 msgid "You either selected an invalid lesson or there is currently no lesson in progress." msgstr "" -#: aleksis/apps/alsijil/views.py:151 +#: aleksis/apps/alsijil/views.py:147 msgid "You are not allowed to create a lesson documentation for a lesson in the future." msgstr "" -#: aleksis/apps/alsijil/views.py:268 +#: aleksis/apps/alsijil/views.py:264 msgid "The lesson documentation has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:302 +#: aleksis/apps/alsijil/views.py:298 msgid "The personal notes have been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1119 +#: aleksis/apps/alsijil/views.py:658 +msgid "Generate full register printout for {}" +msgstr "" + +#: aleksis/apps/alsijil/views.py:659 +msgid "Generate full register printout …" +msgstr "" + +#: aleksis/apps/alsijil/views.py:660 +msgid "The printout has been generated successfully." +msgstr "" + +#: aleksis/apps/alsijil/views.py:661 +msgid "There was a problem while generating the printout." +msgstr "" + +#: aleksis/apps/alsijil/views.py:664 +msgid "Download PDF" +msgstr "" + +#: aleksis/apps/alsijil/views.py:1030 msgid "The absence has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1140 +#: aleksis/apps/alsijil/views.py:1051 msgid "The personal note has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1162 +#: aleksis/apps/alsijil/views.py:1074 msgid "The extra mark has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1174 +#: aleksis/apps/alsijil/views.py:1086 msgid "The extra mark has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1185 +#: aleksis/apps/alsijil/views.py:1097 msgid "The extra mark has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1206 +#: aleksis/apps/alsijil/views.py:1119 msgid "The excuse type has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1218 +#: aleksis/apps/alsijil/views.py:1131 msgid "The excuse type has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1229 +#: aleksis/apps/alsijil/views.py:1142 msgid "The excuse type has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1250 +#: aleksis/apps/alsijil/views.py:1164 msgid "The group role has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1262 +#: aleksis/apps/alsijil/views.py:1176 msgid "The group role has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1273 +#: aleksis/apps/alsijil/views.py:1187 msgid "The group role has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338 +#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253 msgid "The group role has been assigned." msgstr "" -#: aleksis/apps/alsijil/views.py:1357 +#: aleksis/apps/alsijil/views.py:1272 msgid "The group role assignment has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1378 +#: aleksis/apps/alsijil/views.py:1293 msgid "The group role assignment has been stopped." msgstr "" -#: aleksis/apps/alsijil/views.py:1391 +#: aleksis/apps/alsijil/views.py:1306 msgid "The group role assignment has been deleted." msgstr "" diff --git a/aleksis/apps/alsijil/locale/nb_NO/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/nb_NO/LC_MESSAGES/django.po index 90e59955ce06421fc74620937eb7c06cce05da2b..4a23675366e43a10b5190e5dfd31b46a442dd86f 100644 --- a/aleksis/apps/alsijil/locale/nb_NO/LC_MESSAGES/django.po +++ b/aleksis/apps/alsijil/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-25 15:28+0200\n" +"POT-Creation-Date: 2024-04-23 21:13+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" @@ -49,55 +49,55 @@ msgstr "" msgid "Ask teacher to check data" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:12 +#: aleksis/apps/alsijil/data_checks.py:16 msgid "Delete object" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:22 +#: aleksis/apps/alsijil/data_checks.py:26 msgid "Set current groups" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:33 +#: aleksis/apps/alsijil/data_checks.py:37 msgid "Reset personal note to defaults" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:45 +#: aleksis/apps/alsijil/data_checks.py:49 msgid "Ensure that there are no personal notes in cancelled lessons" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:46 +#: aleksis/apps/alsijil/data_checks.py:50 msgid "The personal note is related to a cancelled lesson." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:73 +#: aleksis/apps/alsijil/data_checks.py:77 msgid "Ensure that 'groups_of_person' is set for every personal note" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:74 +#: aleksis/apps/alsijil/data_checks.py:78 msgid "The personal note has no group in 'groups_of_person'." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:99 +#: aleksis/apps/alsijil/data_checks.py:103 msgid "Ensure that there are no filled out lesson documentations on holidays" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:100 +#: aleksis/apps/alsijil/data_checks.py:104 msgid "The lesson documentation is on holidays." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:133 +#: aleksis/apps/alsijil/data_checks.py:137 msgid "Ensure that there are no filled out personal notes on holidays" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:134 +#: aleksis/apps/alsijil/data_checks.py:138 msgid "The personal note is on holidays." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:162 +#: aleksis/apps/alsijil/data_checks.py:166 msgid "Ensure that there are no excused personal notes without an absence" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:163 +#: aleksis/apps/alsijil/data_checks.py:167 msgid "The personal note is marked as excused, but not as absent." msgstr "" @@ -109,10 +109,10 @@ msgstr "" msgid "Before" msgstr "" -#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349 -#: aleksis/apps/alsijil/tables.py:116 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227 +#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371 +#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220 msgid "Subject" @@ -134,8 +134,8 @@ msgstr "" msgid "Carry over data to all other lessons with the same subject in this week" msgstr "" -#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256 -#: aleksis/apps/alsijil/forms.py:348 +#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278 +#: aleksis/apps/alsijil/forms.py:370 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219 msgid "Group" msgstr "" @@ -150,80 +150,80 @@ msgstr "" msgid "You can't select a group and a teacher both." msgstr "" -#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350 -#: aleksis/apps/alsijil/models.py:491 +#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291 +#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27 +msgid "Person" +msgstr "" + +#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372 +#: aleksis/apps/alsijil/models.py:730 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64 msgid "Start date" msgstr "" -#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351 -#: aleksis/apps/alsijil/models.py:495 +#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373 +#: aleksis/apps/alsijil/models.py:734 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65 msgid "End date" msgstr "" -#: aleksis/apps/alsijil/forms.py:194 +#: aleksis/apps/alsijil/forms.py:196 msgid "Start period" msgstr "" -#: aleksis/apps/alsijil/forms.py:195 +#: aleksis/apps/alsijil/forms.py:197 msgid "End period" msgstr "" -#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117 -#: aleksis/apps/alsijil/tables.py:138 +#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623 +#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352 msgid "Absent" msgstr "" -#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146 +#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297 msgid "Excused" msgstr "" -#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71 -#: aleksis/apps/alsijil/models.py:253 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73 +#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79 +#: aleksis/apps/alsijil/models.py:255 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72 msgid "Excuse type" msgstr "" -#: aleksis/apps/alsijil/forms.py:204 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94 +#: aleksis/apps/alsijil/forms.py:206 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354 msgid "Remarks" msgstr "" -#: aleksis/apps/alsijil/forms.py:269 -#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 -msgid "Person" -msgstr "" - -#: aleksis/apps/alsijil/forms.py:346 +#: aleksis/apps/alsijil/forms.py:368 msgid "School term" msgstr "" -#: aleksis/apps/alsijil/forms.py:347 +#: aleksis/apps/alsijil/forms.py:369 msgid "Has lesson documentation" msgstr "" -#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50 +#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455 @@ -231,69 +231,6 @@ msgstr "" msgid "Event" msgstr "" -#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 -msgid "Class register" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:16 -msgid "Current lesson" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:27 -msgid "Current week" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:38 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 -msgid "My groups" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:49 -msgid "My overview" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:60 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 -msgid "My students" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:71 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 -msgid "Assign group role" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 -msgid "All lessons" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 -msgid "Excuse types" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258 -#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 -msgid "Extra marks" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:115 -msgid "Manage group roles" -msgstr "" - #: aleksis/apps/alsijil/model_extensions.py:191 msgid "Can view week overview of group class register" msgstr "" @@ -334,149 +271,244 @@ msgstr "" msgid "Can register an absence for a person" msgstr "" -#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430 +#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432 msgid "Short name" msgstr "" -#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431 -#: aleksis/apps/alsijil/models.py:455 +#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433 +#: aleksis/apps/alsijil/models.py:694 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 msgid "Name" msgstr "" -#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41 +#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41 msgid "Count as absent" msgstr "" -#: aleksis/apps/alsijil/models.py:57 +#: aleksis/apps/alsijil/models.py:65 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report." msgstr "" -#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332 +#: aleksis/apps/alsijil/models.py:80 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 +msgid "Excuse types" +msgstr "" + +#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334 msgid "Year" msgstr "" -#: aleksis/apps/alsijil/models.py:292 +#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450 +#: aleksis/apps/alsijil/tables.py:120 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 +msgid "Extra marks" +msgstr "" + +#: aleksis/apps/alsijil/models.py:294 msgid "Personal note" msgstr "" -#: aleksis/apps/alsijil/models.py:293 +#: aleksis/apps/alsijil/models.py:295 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21 msgid "Personal notes" msgstr "" -#: aleksis/apps/alsijil/models.py:344 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26 +#: aleksis/apps/alsijil/models.py:346 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421 msgid "Lesson topic" msgstr "" -#: aleksis/apps/alsijil/models.py:345 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34 +#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422 msgid "Homework" msgstr "" -#: aleksis/apps/alsijil/models.py:346 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42 +#: aleksis/apps/alsijil/models.py:348 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41 msgid "Group note" msgstr "" -#: aleksis/apps/alsijil/models.py:396 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17 +#: aleksis/apps/alsijil/models.py:398 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16 msgid "Lesson documentation" msgstr "" -#: aleksis/apps/alsijil/models.py:397 +#: aleksis/apps/alsijil/models.py:399 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77 msgid "Lesson documentations" msgstr "" -#: aleksis/apps/alsijil/models.py:442 +#: aleksis/apps/alsijil/models.py:435 +msgid "Foreground colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:436 +msgid "Background colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:438 +msgid "Show in coursebook" +msgstr "" + +#: aleksis/apps/alsijil/models.py:449 msgid "Extra mark" msgstr "" -#: aleksis/apps/alsijil/models.py:456 +#: aleksis/apps/alsijil/models.py:467 +msgid "Course" +msgstr "" + +#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331 +msgid "Teachers" +msgstr "" + +#: aleksis/apps/alsijil/models.py:482 +msgid "Lesson Topic" +msgstr "" + +#: aleksis/apps/alsijil/models.py:484 +msgid "Group Note" +msgstr "" + +#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619 +#: aleksis/apps/alsijil/models.py:665 +msgid "Documentation" +msgstr "" + +#: aleksis/apps/alsijil/models.py:513 +msgid "Documentations" +msgstr "" + +#: aleksis/apps/alsijil/models.py:612 +msgid "Groups of Person" +msgstr "" + +#: aleksis/apps/alsijil/models.py:625 +msgid "Absence Reason" +msgstr "" + +#: aleksis/apps/alsijil/models.py:634 +msgid "Base Absence" +msgstr "" + +#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642 +msgid "Participation Status" +msgstr "" + +#: aleksis/apps/alsijil/models.py:670 +msgid "Note" +msgstr "" + +#: aleksis/apps/alsijil/models.py:672 +msgid "Extra Mark" +msgstr "" + +#: aleksis/apps/alsijil/models.py:679 +msgid "Personal Note" +msgstr "" + +#: aleksis/apps/alsijil/models.py:680 +msgid "Personal Notes" +msgstr "" + +#: aleksis/apps/alsijil/models.py:695 msgid "Icon" msgstr "" -#: aleksis/apps/alsijil/models.py:457 +#: aleksis/apps/alsijil/models.py:696 msgid "Colour" msgstr "" -#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478 +#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62 msgid "Group role" msgstr "" -#: aleksis/apps/alsijil/models.py:464 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34 +#: aleksis/apps/alsijil/models.py:703 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9 msgid "Group roles" msgstr "" -#: aleksis/apps/alsijil/models.py:468 +#: aleksis/apps/alsijil/models.py:704 msgid "Can assign group role" msgstr "" -#: aleksis/apps/alsijil/models.py:484 +#: aleksis/apps/alsijil/models.py:723 msgid "Assigned person" msgstr "" -#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326 +#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321 msgid "Groups" msgstr "" -#: aleksis/apps/alsijil/models.py:496 +#: aleksis/apps/alsijil/models.py:735 msgid "Can be left empty if end date is not clear yet" msgstr "" -#: aleksis/apps/alsijil/models.py:511 +#: aleksis/apps/alsijil/models.py:750 msgid "Group role assignment" msgstr "" -#: aleksis/apps/alsijil/models.py:512 +#: aleksis/apps/alsijil/models.py:751 msgid "Group role assignments" msgstr "" -#: aleksis/apps/alsijil/models.py:519 +#: aleksis/apps/alsijil/models.py:758 msgid "Can view lesson overview" msgstr "" -#: aleksis/apps/alsijil/models.py:520 +#: aleksis/apps/alsijil/models.py:759 msgid "Can view week overview" msgstr "" -#: aleksis/apps/alsijil/models.py:521 +#: aleksis/apps/alsijil/models.py:760 msgid "Can view full register" msgstr "" -#: aleksis/apps/alsijil/models.py:522 +#: aleksis/apps/alsijil/models.py:761 msgid "Can register absence" msgstr "" -#: aleksis/apps/alsijil/models.py:523 +#: aleksis/apps/alsijil/models.py:762 msgid "Can list all personal note filters" msgstr "" +#: aleksis/apps/alsijil/preferences.py:9 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 +msgid "Class register" +msgstr "" + #: aleksis/apps/alsijil/preferences.py:17 msgid "Block adding personal notes for cancelled lessons" msgstr "" @@ -557,6 +589,22 @@ msgstr "" msgid "Filter lessons by existence of their lesson documentation on default" msgstr "" +#: aleksis/apps/alsijil/preferences.py:170 +msgid "Allow editing of all future documentations" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:173 +msgid "Allow editing of all documentations up to and including those on the current day" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:178 +msgid "Allow editing of all documentations up to and including those on the current date and time" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:183 +msgid "Set time range for which documentations may be edited" +msgstr "" + #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47 #: aleksis/apps/alsijil/tables.py:72 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13 @@ -569,24 +617,17 @@ msgid "Date" msgstr "" #: aleksis/apps/alsijil/tables.py:99 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122 msgid "Period" msgstr "" -#: aleksis/apps/alsijil/tables.py:111 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336 -msgid "Teachers" -msgstr "" - #: aleksis/apps/alsijil/tables.py:118 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323 msgid "Tardiness" msgstr "" @@ -597,14 +638,46 @@ msgstr "" #: aleksis/apps/alsijil/tables.py:156 #, python-brace-format -msgid "{value}' late" +msgid "{value}' tardiness" +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:26 +msgid "Load data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:49 +msgid "Sort data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:64 +msgid "Load lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:104 +msgid "Sort lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:133 +msgid "Load statistics ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:173 +msgid "Generate template ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:179 +msgid "Generate PDF ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:185 +msgid "PDF generation failed" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140 msgid "Register absence" msgstr "" @@ -648,26 +721,36 @@ msgstr "" msgid "Cancel" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 +msgid "All lessons" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 +msgid "My groups" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21 msgid "Students" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59 msgid "Students list" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19 msgid "Week view" msgstr "" @@ -682,8 +765,8 @@ msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66 msgid "Generate printout" msgstr "" @@ -700,39 +783,25 @@ msgstr "" msgid "Lesson" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83 msgid "Persons" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45 msgid "Seating plan" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32 msgid "Previous" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63 msgid "More" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93 -msgid "My previous lesson" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104 -msgid "My next lesson" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105 -msgid "Next" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114 msgid "" "\n" " This lesson overlaps with holidays and can't be edited.\n" @@ -785,84 +854,89 @@ msgstr "" msgid "Filter results" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120 msgid "Statistics on absences, tardiness and remarks" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291 msgid "Absences" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302 msgid "thereof" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141 msgid "Without Excuse Type" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313 msgid "Unexcused" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 +msgid "My students" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12 #, python-format msgid "Students list: %(group)s" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25 msgid "Select" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31 msgid "Toggle filters" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38 #, python-format msgid "" "CW %(week)s:\n" " %(instance)s" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289 msgid "Unfold" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355 msgid "Visit lesson overview" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393 msgid "unexcused" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396 msgid "Summed up tardiness" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126 msgid "Count of tardiness" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431 msgid "No lessons available" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434 msgid "" "\n" " There are no lessons for the selected group or teacher in this week.\n" @@ -906,6 +980,11 @@ msgstr "" msgid "Assign group role for %(group)s" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 +msgid "Assign group role" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34 msgid "Assign" msgstr "" @@ -975,16 +1054,16 @@ msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139 msgid "(e)" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143 msgid "(u)" msgstr "" @@ -1008,8 +1087,8 @@ msgid "Unexcused absences" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138 msgid "Sum (e)" msgstr "" @@ -1026,14 +1105,28 @@ msgstr "" msgid "Excuse types (not counted as absent)" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +msgid "My previous lesson" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42 +msgid "My next lesson" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43 +msgid "Next" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7 #, python-format msgid "%(period)s. period" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80 #, python-format msgid "" "\n" @@ -1041,13 +1134,13 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139 msgid "Save" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20 #, python-format msgid "" "\n" @@ -1055,7 +1148,7 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31 #, python-format msgid "" "\n" @@ -1063,11 +1156,11 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11 msgid "Change history" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58 msgid "Tardiness (in m)" msgstr "" @@ -1183,27 +1276,27 @@ msgid "No students available." msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 msgid "Primary group" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 msgid "Uncounted Absences" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 msgid "Sum" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92 msgid "Regular excused" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132 msgid "Show more details" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133 msgid "Details" msgstr "" @@ -1374,78 +1467,98 @@ msgstr "" msgid "Notes" msgstr "" -#: aleksis/apps/alsijil/views.py:118 +#: aleksis/apps/alsijil/views.py:114 msgid "You either selected an invalid lesson or there is currently no lesson in progress." msgstr "" -#: aleksis/apps/alsijil/views.py:151 +#: aleksis/apps/alsijil/views.py:147 msgid "You are not allowed to create a lesson documentation for a lesson in the future." msgstr "" -#: aleksis/apps/alsijil/views.py:268 +#: aleksis/apps/alsijil/views.py:264 msgid "The lesson documentation has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:302 +#: aleksis/apps/alsijil/views.py:298 msgid "The personal notes have been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1119 +#: aleksis/apps/alsijil/views.py:658 +msgid "Generate full register printout for {}" +msgstr "" + +#: aleksis/apps/alsijil/views.py:659 +msgid "Generate full register printout …" +msgstr "" + +#: aleksis/apps/alsijil/views.py:660 +msgid "The printout has been generated successfully." +msgstr "" + +#: aleksis/apps/alsijil/views.py:661 +msgid "There was a problem while generating the printout." +msgstr "" + +#: aleksis/apps/alsijil/views.py:664 +msgid "Download PDF" +msgstr "" + +#: aleksis/apps/alsijil/views.py:1030 msgid "The absence has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1140 +#: aleksis/apps/alsijil/views.py:1051 msgid "The personal note has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1162 +#: aleksis/apps/alsijil/views.py:1074 msgid "The extra mark has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1174 +#: aleksis/apps/alsijil/views.py:1086 msgid "The extra mark has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1185 +#: aleksis/apps/alsijil/views.py:1097 msgid "The extra mark has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1206 +#: aleksis/apps/alsijil/views.py:1119 msgid "The excuse type has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1218 +#: aleksis/apps/alsijil/views.py:1131 msgid "The excuse type has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1229 +#: aleksis/apps/alsijil/views.py:1142 msgid "The excuse type has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1250 +#: aleksis/apps/alsijil/views.py:1164 msgid "The group role has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1262 +#: aleksis/apps/alsijil/views.py:1176 msgid "The group role has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1273 +#: aleksis/apps/alsijil/views.py:1187 msgid "The group role has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338 +#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253 msgid "The group role has been assigned." msgstr "" -#: aleksis/apps/alsijil/views.py:1357 +#: aleksis/apps/alsijil/views.py:1272 msgid "The group role assignment has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1378 +#: aleksis/apps/alsijil/views.py:1293 msgid "The group role assignment has been stopped." msgstr "" -#: aleksis/apps/alsijil/views.py:1391 +#: aleksis/apps/alsijil/views.py:1306 msgid "The group role assignment has been deleted." msgstr "" diff --git a/aleksis/apps/alsijil/locale/ru/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/ru/LC_MESSAGES/django.po index f7d4d6e925786bb72d7a37b62d5629aec7f4989c..e1467925c5f0b0d1b4d9eebf9a8eea986c3785f3 100644 --- a/aleksis/apps/alsijil/locale/ru/LC_MESSAGES/django.po +++ b/aleksis/apps/alsijil/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-25 15:28+0200\n" +"POT-Creation-Date: 2024-04-23 21:13+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-alsijil/ru/>\n" @@ -50,55 +50,55 @@ msgstr "Мы отправили уведомление Ð´Ð»Ñ {count_teachers} msgid "Ask teacher to check data" msgstr "ПопроÑить ÑƒÑ‡Ð¸Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€Ð¸Ñ‚ÑŒ данные" -#: aleksis/apps/alsijil/data_checks.py:12 +#: aleksis/apps/alsijil/data_checks.py:16 msgid "Delete object" msgstr "Удалить объект" -#: aleksis/apps/alsijil/data_checks.py:22 +#: aleksis/apps/alsijil/data_checks.py:26 msgid "Set current groups" msgstr "УÑтановить текущие группы" -#: aleksis/apps/alsijil/data_checks.py:33 +#: aleksis/apps/alsijil/data_checks.py:37 msgid "Reset personal note to defaults" msgstr "СброÑить личные заметки на типовые" -#: aleksis/apps/alsijil/data_checks.py:45 +#: aleksis/apps/alsijil/data_checks.py:49 msgid "Ensure that there are no personal notes in cancelled lessons" msgstr "УбедитеÑÑŒ, чтобы в отмененных уроках не было личных заметок" -#: aleksis/apps/alsijil/data_checks.py:46 +#: aleksis/apps/alsijil/data_checks.py:50 msgid "The personal note is related to a cancelled lesson." msgstr "У отмененного урока еÑÑ‚ÑŒ ÑвÑзанные личные заметки." -#: aleksis/apps/alsijil/data_checks.py:73 +#: aleksis/apps/alsijil/data_checks.py:77 msgid "Ensure that 'groups_of_person' is set for every personal note" msgstr "УбедитеÑÑŒ, что Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ личной заметки уÑтановлены \"группы_лиц\"" -#: aleksis/apps/alsijil/data_checks.py:74 +#: aleksis/apps/alsijil/data_checks.py:78 msgid "The personal note has no group in 'groups_of_person'." msgstr "Ðта Ð»Ð¸Ñ‡Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ° без группы в \"группах_лиц\"." -#: aleksis/apps/alsijil/data_checks.py:99 +#: aleksis/apps/alsijil/data_checks.py:103 msgid "Ensure that there are no filled out lesson documentations on holidays" msgstr "УбедитеÑÑŒ, что на выходные нет заполненного учебного материала" -#: aleksis/apps/alsijil/data_checks.py:100 +#: aleksis/apps/alsijil/data_checks.py:104 msgid "The lesson documentation is on holidays." msgstr "Ðа выходные еÑÑ‚ÑŒ учебный материал." -#: aleksis/apps/alsijil/data_checks.py:133 +#: aleksis/apps/alsijil/data_checks.py:137 msgid "Ensure that there are no filled out personal notes on holidays" msgstr "УбедитеÑÑŒ, что на выходные нет заполненных личных заметок" -#: aleksis/apps/alsijil/data_checks.py:134 +#: aleksis/apps/alsijil/data_checks.py:138 msgid "The personal note is on holidays." msgstr "Ðа выходные еÑÑ‚ÑŒ личные заметки." -#: aleksis/apps/alsijil/data_checks.py:162 +#: aleksis/apps/alsijil/data_checks.py:166 msgid "Ensure that there are no excused personal notes without an absence" msgstr "УбедитеÑÑŒ, что нет личных заметок Ñ Ð¿Ð¾ÑÑнениÑми без отÑутÑтвиÑ" -#: aleksis/apps/alsijil/data_checks.py:163 +#: aleksis/apps/alsijil/data_checks.py:167 msgid "The personal note is marked as excused, but not as absent." msgstr "Ðта Ð»Ð¸Ñ‡Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ° отмечена как поÑÑнительнаÑ, но нет отÑутÑтвиÑ." @@ -110,10 +110,10 @@ msgstr "ПоÑле" msgid "Before" msgstr "До" -#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349 -#: aleksis/apps/alsijil/tables.py:116 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227 +#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371 +#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220 msgid "Subject" @@ -135,8 +135,8 @@ msgstr "ДомашнÑÑ Ñ€Ð°Ð±Ð¾Ñ‚Ð° на Ñледующий урок" msgid "Carry over data to all other lessons with the same subject in this week" msgstr "ПеренеÑти данные на вÑе другие уроки Ñ Ñ‚ÐµÐ¼ же предметом на Ñтой неделе" -#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256 -#: aleksis/apps/alsijil/forms.py:348 +#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278 +#: aleksis/apps/alsijil/forms.py:370 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219 msgid "Group" msgstr "Группа" @@ -151,80 +151,80 @@ msgstr "Преподаватель" msgid "You can't select a group and a teacher both." msgstr "Ð’Ñ‹ не можете одновременно выбрать группу и преподавателÑ." -#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350 -#: aleksis/apps/alsijil/models.py:491 +#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291 +#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27 +msgid "Person" +msgstr "Физлицо" + +#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372 +#: aleksis/apps/alsijil/models.py:730 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64 msgid "Start date" msgstr "Дата начала" -#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351 -#: aleksis/apps/alsijil/models.py:495 +#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373 +#: aleksis/apps/alsijil/models.py:734 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65 msgid "End date" msgstr "Дата окончаниÑ" -#: aleksis/apps/alsijil/forms.py:194 +#: aleksis/apps/alsijil/forms.py:196 msgid "Start period" msgstr "Ðачало уроков" -#: aleksis/apps/alsijil/forms.py:195 +#: aleksis/apps/alsijil/forms.py:197 msgid "End period" msgstr "Окончание уроков" -#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117 -#: aleksis/apps/alsijil/tables.py:138 +#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623 +#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352 msgid "Absent" msgstr "ОтÑутÑтвует" -#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146 +#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297 msgid "Excused" msgstr "Уважительно" -#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71 -#: aleksis/apps/alsijil/models.py:253 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73 +#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79 +#: aleksis/apps/alsijil/models.py:255 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72 msgid "Excuse type" msgstr "Тип объÑÑнительной запиÑки" -#: aleksis/apps/alsijil/forms.py:204 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94 +#: aleksis/apps/alsijil/forms.py:206 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354 msgid "Remarks" msgstr "ЗамечаниÑ" -#: aleksis/apps/alsijil/forms.py:269 -#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 -msgid "Person" -msgstr "Физлицо" - -#: aleksis/apps/alsijil/forms.py:346 +#: aleksis/apps/alsijil/forms.py:368 msgid "School term" msgstr "Учебный год" -#: aleksis/apps/alsijil/forms.py:347 +#: aleksis/apps/alsijil/forms.py:369 msgid "Has lesson documentation" msgstr "Имеет в наличии учебный материал" -#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50 +#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455 @@ -232,69 +232,6 @@ msgstr "Имеет в наличии учебный материал" msgid "Event" msgstr "Событие" -#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 -msgid "Class register" -msgstr "КлаÑÑный журнал" - -#: aleksis/apps/alsijil/menus.py:16 -msgid "Current lesson" -msgstr "Текущий урок" - -#: aleksis/apps/alsijil/menus.py:27 -msgid "Current week" -msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð½ÐµÐ´ÐµÐ»Ñ" - -#: aleksis/apps/alsijil/menus.py:38 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 -msgid "My groups" -msgstr "Мои группы" - -#: aleksis/apps/alsijil/menus.py:49 -msgid "My overview" -msgstr "Мой обзор" - -#: aleksis/apps/alsijil/menus.py:60 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 -msgid "My students" -msgstr "Мои Ñтуденты" - -#: aleksis/apps/alsijil/menus.py:71 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 -msgid "Assign group role" -msgstr "Ðазначить роль группы" - -#: aleksis/apps/alsijil/menus.py:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 -msgid "All lessons" -msgstr "Ð’Ñе уроки" - -#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 -msgid "Excuse types" -msgstr "Типы объÑÑнительных" - -#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258 -#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 -msgid "Extra marks" -msgstr "Дополнительные отметки" - -#: aleksis/apps/alsijil/menus.py:115 -msgid "Manage group roles" -msgstr "Управление ролÑми групп" - #: aleksis/apps/alsijil/model_extensions.py:191 msgid "Can view week overview of group class register" msgstr "Может проÑматривать клаÑÑный журнал группы за неделю" @@ -335,149 +272,266 @@ msgstr "Может назначать роль группы Ð´Ð»Ñ Ñтой гр msgid "Can register an absence for a person" msgstr "Может региÑтрировать отÑутÑтвиÑ" -#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430 +#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432 msgid "Short name" msgstr "Короткое имÑ" -#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431 -#: aleksis/apps/alsijil/models.py:455 +#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433 +#: aleksis/apps/alsijil/models.py:694 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 msgid "Name" msgstr "Полное имÑ" -#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41 +#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41 msgid "Count as absent" msgstr "КоличеÑтво отÑутÑтвующих" -#: aleksis/apps/alsijil/models.py:57 +#: aleksis/apps/alsijil/models.py:65 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report." msgstr "ЕÑли отмечено, Ñтот тип объÑÑнительной будет заÑчитан как пропущенный урок. ЕÑли не отмечено, то без запиÑи в отчет о пропуÑках." -#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332 +#: aleksis/apps/alsijil/models.py:80 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 +msgid "Excuse types" +msgstr "Типы объÑÑнительных" + +#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334 msgid "Year" msgstr "Год" -#: aleksis/apps/alsijil/models.py:292 +#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450 +#: aleksis/apps/alsijil/tables.py:120 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 +msgid "Extra marks" +msgstr "Дополнительные отметки" + +#: aleksis/apps/alsijil/models.py:294 msgid "Personal note" msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ°" -#: aleksis/apps/alsijil/models.py:293 +#: aleksis/apps/alsijil/models.py:295 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21 msgid "Personal notes" msgstr "Личные заметки" -#: aleksis/apps/alsijil/models.py:344 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26 +#: aleksis/apps/alsijil/models.py:346 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421 msgid "Lesson topic" msgstr "Тема урока" -#: aleksis/apps/alsijil/models.py:345 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34 +#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422 msgid "Homework" msgstr "ДомашнÑÑ Ñ€Ð°Ð±Ð¾Ñ‚Ð°" -#: aleksis/apps/alsijil/models.py:346 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42 +#: aleksis/apps/alsijil/models.py:348 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41 msgid "Group note" msgstr "Ð“Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ°" -#: aleksis/apps/alsijil/models.py:396 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17 +#: aleksis/apps/alsijil/models.py:398 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16 msgid "Lesson documentation" msgstr "Учебный материал" -#: aleksis/apps/alsijil/models.py:397 +#: aleksis/apps/alsijil/models.py:399 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77 msgid "Lesson documentations" msgstr "Учебные материалы" -#: aleksis/apps/alsijil/models.py:442 +#: aleksis/apps/alsijil/models.py:435 +msgid "Foreground colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:436 +msgid "Background colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:438 +msgid "Show in coursebook" +msgstr "" + +#: aleksis/apps/alsijil/models.py:449 msgid "Extra mark" msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ°" -#: aleksis/apps/alsijil/models.py:456 +#: aleksis/apps/alsijil/models.py:467 +msgid "Course" +msgstr "" + +#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331 +msgid "Teachers" +msgstr "Преподаватели" + +#: aleksis/apps/alsijil/models.py:482 +#, fuzzy +#| msgid "Lesson topic" +msgid "Lesson Topic" +msgstr "Тема урока" + +#: aleksis/apps/alsijil/models.py:484 +#, fuzzy +#| msgid "Group note" +msgid "Group Note" +msgstr "Ð“Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ°" + +#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619 +#: aleksis/apps/alsijil/models.py:665 +#, fuzzy +#| msgid "Lesson documentation" +msgid "Documentation" +msgstr "Учебный материал" + +#: aleksis/apps/alsijil/models.py:513 +#, fuzzy +#| msgid "Lesson documentations" +msgid "Documentations" +msgstr "Учебные материалы" + +#: aleksis/apps/alsijil/models.py:612 +#, fuzzy +#| msgid "Group roles" +msgid "Groups of Person" +msgstr "Роли групп" + +#: aleksis/apps/alsijil/models.py:625 +#, fuzzy +#| msgid "Absences" +msgid "Absence Reason" +msgstr "ПропуÑки" + +#: aleksis/apps/alsijil/models.py:634 +#, fuzzy +#| msgid "Absences" +msgid "Base Absence" +msgstr "ПропуÑки" + +#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642 +msgid "Participation Status" +msgstr "" + +#: aleksis/apps/alsijil/models.py:670 +#, fuzzy +#| msgid "Notes" +msgid "Note" +msgstr "Заметки" + +#: aleksis/apps/alsijil/models.py:672 +#, fuzzy +#| msgid "Extra mark" +msgid "Extra Mark" +msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ°" + +#: aleksis/apps/alsijil/models.py:679 +#, fuzzy +#| msgid "Personal note" +msgid "Personal Note" +msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ°" + +#: aleksis/apps/alsijil/models.py:680 +#, fuzzy +#| msgid "Personal notes" +msgid "Personal Notes" +msgstr "Личные заметки" + +#: aleksis/apps/alsijil/models.py:695 msgid "Icon" msgstr "Иконка" -#: aleksis/apps/alsijil/models.py:457 +#: aleksis/apps/alsijil/models.py:696 msgid "Colour" msgstr "Цвет" -#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478 +#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62 msgid "Group role" msgstr "Роль группы" -#: aleksis/apps/alsijil/models.py:464 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34 +#: aleksis/apps/alsijil/models.py:703 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9 msgid "Group roles" msgstr "Роли групп" -#: aleksis/apps/alsijil/models.py:468 +#: aleksis/apps/alsijil/models.py:704 msgid "Can assign group role" msgstr "Может назначать роль группы" -#: aleksis/apps/alsijil/models.py:484 +#: aleksis/apps/alsijil/models.py:723 msgid "Assigned person" msgstr "Ðазначенное физлицо" -#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326 +#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321 msgid "Groups" msgstr "Группы" -#: aleksis/apps/alsijil/models.py:496 +#: aleksis/apps/alsijil/models.py:735 msgid "Can be left empty if end date is not clear yet" msgstr "ЕÑли нет точной конечной даты, можно оÑтавить незаполненным" -#: aleksis/apps/alsijil/models.py:511 +#: aleksis/apps/alsijil/models.py:750 msgid "Group role assignment" msgstr "Ðазначение роли группы" -#: aleksis/apps/alsijil/models.py:512 +#: aleksis/apps/alsijil/models.py:751 msgid "Group role assignments" msgstr "Ðазначение ролей групп" -#: aleksis/apps/alsijil/models.py:519 +#: aleksis/apps/alsijil/models.py:758 msgid "Can view lesson overview" msgstr "Может проÑматривать обзор урока" -#: aleksis/apps/alsijil/models.py:520 +#: aleksis/apps/alsijil/models.py:759 msgid "Can view week overview" msgstr "Может проÑматривать недельный обзор" -#: aleksis/apps/alsijil/models.py:521 +#: aleksis/apps/alsijil/models.py:760 msgid "Can view full register" msgstr "Может проÑматривать веÑÑŒ журнал" -#: aleksis/apps/alsijil/models.py:522 +#: aleksis/apps/alsijil/models.py:761 msgid "Can register absence" msgstr "Может региÑтрировать отÑутÑтвие" -#: aleksis/apps/alsijil/models.py:523 +#: aleksis/apps/alsijil/models.py:762 msgid "Can list all personal note filters" msgstr "Может проÑматривать вÑе фильтры личных заметок" +#: aleksis/apps/alsijil/preferences.py:9 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 +msgid "Class register" +msgstr "КлаÑÑный журнал" + #: aleksis/apps/alsijil/preferences.py:17 msgid "Block adding personal notes for cancelled lessons" msgstr "Блокировать добавление личных заметок к отмененным урокам" @@ -492,9 +546,7 @@ msgstr "Разрешить владельцам оÑновных групп ре #: aleksis/apps/alsijil/preferences.py:44 msgid "Grant the owner of a parent group the same privileges as the owners of the respective child groups" -msgstr "" -"Ðаделить владельца родительÑкой группы такими же правами, как у владельца " -"ÑоответÑтвующих дочерних групп" +msgstr "Ðаделить владельца родительÑкой группы такими же правами, как у владельца ÑоответÑтвующих дочерних групп" #: aleksis/apps/alsijil/preferences.py:54 msgid "Allow original teachers to edit their lessons although they are substituted" @@ -510,15 +562,11 @@ msgstr "Ðто перенеÑÑ‘Ñ‚ данные только в Ñлучае от #: aleksis/apps/alsijil/preferences.py:75 msgid "Allow carrying over data from any lesson period to all other lesson periods with the same lesson and in the same week" -msgstr "" -"Разрешить Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñ Ð»ÑŽÐ±Ð¾Ð³Ð¾ урока на вÑе такие же " -"уроки Ñ Ñ‚Ð°ÐºÐ¸Ð¼ же номером в раÑпиÑании на той же неделе" +msgstr "Разрешить Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñ Ð»ÑŽÐ±Ð¾Ð³Ð¾ урока на вÑе такие же уроки Ñ Ñ‚Ð°ÐºÐ¸Ð¼ же номером в раÑпиÑании на той же неделе" #: aleksis/apps/alsijil/preferences.py:79 msgid "This will carry over data only if the data in the aforementioned periods are empty." -msgstr "" -"Ðто перенеÑÑ‘Ñ‚ данные только еÑли в упомÑнутых выше уроках данные не " -"заполнены." +msgstr "Ðто перенеÑÑ‘Ñ‚ данные только еÑли в упомÑнутых выше уроках данные не заполнены." #: aleksis/apps/alsijil/preferences.py:88 msgid "Carry over personal notes to all following lesson periods on the same day." @@ -564,6 +612,22 @@ msgstr "ÐšÐ°Ð¶Ð´Ð°Ñ Ñтраница должна Ñодержать Ñ…Ð¾Ñ‚Ñ msgid "Filter lessons by existence of their lesson documentation on default" msgstr "По-умолчанию фильтровать уроки по наличию в них учебного материала" +#: aleksis/apps/alsijil/preferences.py:170 +msgid "Allow editing of all future documentations" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:173 +msgid "Allow editing of all documentations up to and including those on the current day" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:178 +msgid "Allow editing of all documentations up to and including those on the current date and time" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:183 +msgid "Set time range for which documentations may be edited" +msgstr "" + #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47 #: aleksis/apps/alsijil/tables.py:72 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13 @@ -576,24 +640,17 @@ msgid "Date" msgstr "Дата" #: aleksis/apps/alsijil/tables.py:99 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122 msgid "Period" msgstr "Урок" -#: aleksis/apps/alsijil/tables.py:111 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336 -msgid "Teachers" -msgstr "Преподаватели" - #: aleksis/apps/alsijil/tables.py:118 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323 msgid "Tardiness" msgstr "Опоздание" @@ -603,15 +660,52 @@ msgid "Excuse" msgstr "ОбъÑÑнительнаÑ" #: aleksis/apps/alsijil/tables.py:156 -#, python-brace-format -msgid "{value}' late" +#, fuzzy, python-brace-format +#| msgid "{value}' late" +msgid "{value}' tardiness" msgstr "{value}' задержка" +#: aleksis/apps/alsijil/tasks.py:26 +msgid "Load data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:49 +#, fuzzy +#| msgid "Start date" +msgid "Sort data ..." +msgstr "Дата начала" + +#: aleksis/apps/alsijil/tasks.py:64 +msgid "Load lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:104 +msgid "Sort lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:133 +#, fuzzy +#| msgid "Statistics" +msgid "Load statistics ..." +msgstr "СтатиÑтика" + +#: aleksis/apps/alsijil/tasks.py:173 +msgid "Generate template ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:179 +msgid "Generate PDF ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:185 +msgid "PDF generation failed" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140 msgid "Register absence" msgstr "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ÑутÑтвиÑ" @@ -665,26 +759,36 @@ msgstr "СброÑить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° 'не отÑутÑтвует'" msgid "Cancel" msgstr "Отменить" +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 +msgid "All lessons" +msgstr "Ð’Ñе уроки" + +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 +msgid "My groups" +msgstr "Мои группы" + #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21 msgid "Students" msgstr "Студенты" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59 msgid "Students list" msgstr "СпиÑок Ñтудентов" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19 msgid "Week view" msgstr "Ðедельный обзор" @@ -699,8 +803,8 @@ msgstr "Роли" #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66 msgid "Generate printout" msgstr "Подготовить к печати" @@ -717,39 +821,25 @@ msgstr "Ñтуденты" msgid "Lesson" msgstr "Урок" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83 msgid "Persons" msgstr "Люди" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45 msgid "Seating plan" msgstr "План раÑÑадки" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32 msgid "Previous" msgstr "Предыдущий" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63 msgid "More" msgstr "Ещё" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93 -msgid "My previous lesson" -msgstr "Мой предыдущий урок" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104 -msgid "My next lesson" -msgstr "Мой Ñледующий урок" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105 -msgid "Next" -msgstr "Следующий" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114 msgid "" "\n" " This lesson overlaps with holidays and can't be edited.\n" @@ -808,52 +898,57 @@ msgstr "Фильтры" msgid "Filter results" msgstr "Результат фильтров" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120 msgid "Statistics on absences, tardiness and remarks" msgstr "СтатиÑтика пропуÑков, опозданий и замечаний" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291 msgid "Absences" msgstr "ПропуÑки" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302 msgid "thereof" msgstr "итак" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141 msgid "Without Excuse Type" msgstr "Без типа объÑÑнительной" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313 msgid "Unexcused" msgstr "Без поÑÑнений" +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 +msgid "My students" +msgstr "Мои Ñтуденты" + #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12 #, python-format msgid "Students list: %(group)s" msgstr "СпиÑок Ñтудентов: %(group)s" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25 msgid "Select" msgstr "Отметить" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31 msgid "Toggle filters" msgstr "Переключить фильтры" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38 #, python-format msgid "" "CW %(week)s:\n" @@ -862,32 +957,32 @@ msgstr "" "ÐД %(week)s:\n" " %(instance)s" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289 msgid "Unfold" msgstr "Развернуть" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355 msgid "Visit lesson overview" msgstr "Обзор поÑещений урока" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393 msgid "unexcused" msgstr "без поÑÑнений" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396 msgid "Summed up tardiness" msgstr "Суммированные опозданиÑ" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126 msgid "Count of tardiness" msgstr "КоличеÑтво опозданий" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431 msgid "No lessons available" msgstr "Ðет доÑтупных уроков" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434 msgid "" "\n" " There are no lessons for the selected group or teacher in this week.\n" @@ -938,6 +1033,11 @@ msgstr "Редактировать дополнительную отметку" msgid "Assign group role for %(group)s" msgstr "Ðазначить роль группы Ð´Ð»Ñ %(group)s" +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 +msgid "Assign group role" +msgstr "Ðазначить роль группы" + #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34 msgid "Assign" msgstr "Ðазначить" @@ -1011,16 +1111,16 @@ msgstr "Проверьте, пожалуйÑта, Ñти запиÑи в кла #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139 msgid "(e)" msgstr "(о)" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143 msgid "(u)" msgstr "(н)" @@ -1044,8 +1144,8 @@ msgid "Unexcused absences" msgstr "ОтÑутÑтвие без поÑÑнений" #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138 msgid "Sum (e)" msgstr "Сумма (п)" @@ -1062,14 +1162,28 @@ msgstr "РегулÑрные обоÑнованные пропуÑки" msgid "Excuse types (not counted as absent)" msgstr "Типы объÑÑнительных (не учитываютÑÑ ÐºÐ°Ðº пропуÑки)" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +msgid "My previous lesson" +msgstr "Мой предыдущий урок" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42 +msgid "My next lesson" +msgstr "Мой Ñледующий урок" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43 +msgid "Next" +msgstr "Следующий" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7 #, python-format msgid "%(period)s. period" msgstr "%(period)s. урок" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80 #, python-format msgid "" "\n" @@ -1080,13 +1194,13 @@ msgstr "" " %(period_from)s.–%(period_to)s. уроки\n" " " -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139 msgid "Save" msgstr "Сохранить" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20 #, python-format msgid "" "\n" @@ -1097,7 +1211,7 @@ msgstr "" " Предыдущий урок %(subject)s\n" " " -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31 #, python-format msgid "" "\n" @@ -1108,11 +1222,11 @@ msgstr "" " Следующий урок %(subject)s\n" " " -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11 msgid "Change history" msgstr "Изменить иÑторию" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58 msgid "Tardiness (in m)" msgstr "ÐžÐ¿Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ (мин)" @@ -1182,8 +1296,7 @@ msgid "" " " msgstr "" "\n" -" Создать новый план раÑÑадки %(group)s (%(subject)s) в " -"%(room)s\n" +" Создать новый план раÑÑадки %(group)s (%(subject)s) в %(room)s\n" " " #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/seating_plan.html:78 @@ -1241,27 +1354,27 @@ msgid "No students available." msgstr "Ðет доÑтупных Ñтудентов." #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 msgid "Primary group" msgstr "ОÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð°" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 msgid "Uncounted Absences" msgstr "Ðеучтённые пропуÑки" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 msgid "Sum" msgstr "Сумма" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92 msgid "Regular excused" msgstr "РегулÑрные обоÑнованиÑ" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132 msgid "Show more details" msgstr "Показать более детально" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133 msgid "Details" msgstr "Детали" @@ -1446,78 +1559,116 @@ msgstr "ÐеделÑ" msgid "Notes" msgstr "Заметки" -#: aleksis/apps/alsijil/views.py:118 +#: aleksis/apps/alsijil/views.py:114 msgid "You either selected an invalid lesson or there is currently no lesson in progress." msgstr "Ð’Ñ‹ или выбрали неправильный урок, или ÑÐµÐ¹Ñ‡Ð°Ñ ÑƒÑ€Ð¾ÐºÐ° нет." -#: aleksis/apps/alsijil/views.py:151 +#: aleksis/apps/alsijil/views.py:147 msgid "You are not allowed to create a lesson documentation for a lesson in the future." msgstr "Вам Ð½ÐµÐ»ÑŒÐ·Ñ Ñоздавать учебные материалы Ð´Ð»Ñ ÑƒÑ€Ð¾ÐºÐ¾Ð² в будущем." -#: aleksis/apps/alsijil/views.py:268 +#: aleksis/apps/alsijil/views.py:264 msgid "The lesson documentation has been saved." msgstr "Учебный материал Ñохранён." -#: aleksis/apps/alsijil/views.py:302 +#: aleksis/apps/alsijil/views.py:298 msgid "The personal notes have been saved." msgstr "Личные заметки Ñохранены." -#: aleksis/apps/alsijil/views.py:1119 +#: aleksis/apps/alsijil/views.py:658 +#, fuzzy +#| msgid "Generate printout" +msgid "Generate full register printout for {}" +msgstr "Подготовить к печати" + +#: aleksis/apps/alsijil/views.py:659 +#, fuzzy +#| msgid "Generate printout" +msgid "Generate full register printout …" +msgstr "Подготовить к печати" + +#: aleksis/apps/alsijil/views.py:660 +#, fuzzy +#| msgid "The personal note has been deleted." +msgid "The printout has been generated successfully." +msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ° удалена." + +#: aleksis/apps/alsijil/views.py:661 +msgid "There was a problem while generating the printout." +msgstr "" + +#: aleksis/apps/alsijil/views.py:664 +msgid "Download PDF" +msgstr "" + +#: aleksis/apps/alsijil/views.py:1030 msgid "The absence has been saved." msgstr "ОтÑутÑтвие Ñохранено." -#: aleksis/apps/alsijil/views.py:1140 +#: aleksis/apps/alsijil/views.py:1051 msgid "The personal note has been deleted." msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ° удалена." -#: aleksis/apps/alsijil/views.py:1162 +#: aleksis/apps/alsijil/views.py:1074 msgid "The extra mark has been created." msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ° Ñоздана." -#: aleksis/apps/alsijil/views.py:1174 +#: aleksis/apps/alsijil/views.py:1086 msgid "The extra mark has been saved." msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ° Ñохранена." -#: aleksis/apps/alsijil/views.py:1185 +#: aleksis/apps/alsijil/views.py:1097 msgid "The extra mark has been deleted." msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ° удалена." -#: aleksis/apps/alsijil/views.py:1206 +#: aleksis/apps/alsijil/views.py:1119 msgid "The excuse type has been created." msgstr "Тип объÑÑнительной Ñоздан." -#: aleksis/apps/alsijil/views.py:1218 +#: aleksis/apps/alsijil/views.py:1131 msgid "The excuse type has been saved." msgstr "Тип объÑÑнительной Ñохранён." -#: aleksis/apps/alsijil/views.py:1229 +#: aleksis/apps/alsijil/views.py:1142 msgid "The excuse type has been deleted." msgstr "Тип объÑÑнительной удалён." -#: aleksis/apps/alsijil/views.py:1250 +#: aleksis/apps/alsijil/views.py:1164 msgid "The group role has been created." msgstr "Роль группы Ñоздана." -#: aleksis/apps/alsijil/views.py:1262 +#: aleksis/apps/alsijil/views.py:1176 msgid "The group role has been saved." msgstr "Роль группы Ñохранена." -#: aleksis/apps/alsijil/views.py:1273 +#: aleksis/apps/alsijil/views.py:1187 msgid "The group role has been deleted." msgstr "Роль группы удалена." -#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338 +#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253 msgid "The group role has been assigned." msgstr "Роль группы назначена." -#: aleksis/apps/alsijil/views.py:1357 +#: aleksis/apps/alsijil/views.py:1272 msgid "The group role assignment has been saved." msgstr "Ðазначение роли группы Ñохранено." -#: aleksis/apps/alsijil/views.py:1378 +#: aleksis/apps/alsijil/views.py:1293 msgid "The group role assignment has been stopped." msgstr "Ðазначение роли группы оÑтановлено." -#: aleksis/apps/alsijil/views.py:1391 +#: aleksis/apps/alsijil/views.py:1306 msgid "The group role assignment has been deleted." msgstr "Ðазначение роли группы удалено." + +#~ msgid "Current lesson" +#~ msgstr "Текущий урок" + +#~ msgid "Current week" +#~ msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð½ÐµÐ´ÐµÐ»Ñ" + +#~ msgid "My overview" +#~ msgstr "Мой обзор" + +#~ msgid "Manage group roles" +#~ msgstr "Управление ролÑми групп" diff --git a/aleksis/apps/alsijil/locale/tr_TR/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/tr_TR/LC_MESSAGES/django.po index 90e59955ce06421fc74620937eb7c06cce05da2b..4a23675366e43a10b5190e5dfd31b46a442dd86f 100644 --- a/aleksis/apps/alsijil/locale/tr_TR/LC_MESSAGES/django.po +++ b/aleksis/apps/alsijil/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-25 15:28+0200\n" +"POT-Creation-Date: 2024-04-23 21:13+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" @@ -49,55 +49,55 @@ msgstr "" msgid "Ask teacher to check data" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:12 +#: aleksis/apps/alsijil/data_checks.py:16 msgid "Delete object" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:22 +#: aleksis/apps/alsijil/data_checks.py:26 msgid "Set current groups" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:33 +#: aleksis/apps/alsijil/data_checks.py:37 msgid "Reset personal note to defaults" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:45 +#: aleksis/apps/alsijil/data_checks.py:49 msgid "Ensure that there are no personal notes in cancelled lessons" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:46 +#: aleksis/apps/alsijil/data_checks.py:50 msgid "The personal note is related to a cancelled lesson." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:73 +#: aleksis/apps/alsijil/data_checks.py:77 msgid "Ensure that 'groups_of_person' is set for every personal note" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:74 +#: aleksis/apps/alsijil/data_checks.py:78 msgid "The personal note has no group in 'groups_of_person'." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:99 +#: aleksis/apps/alsijil/data_checks.py:103 msgid "Ensure that there are no filled out lesson documentations on holidays" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:100 +#: aleksis/apps/alsijil/data_checks.py:104 msgid "The lesson documentation is on holidays." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:133 +#: aleksis/apps/alsijil/data_checks.py:137 msgid "Ensure that there are no filled out personal notes on holidays" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:134 +#: aleksis/apps/alsijil/data_checks.py:138 msgid "The personal note is on holidays." msgstr "" -#: aleksis/apps/alsijil/data_checks.py:162 +#: aleksis/apps/alsijil/data_checks.py:166 msgid "Ensure that there are no excused personal notes without an absence" msgstr "" -#: aleksis/apps/alsijil/data_checks.py:163 +#: aleksis/apps/alsijil/data_checks.py:167 msgid "The personal note is marked as excused, but not as absent." msgstr "" @@ -109,10 +109,10 @@ msgstr "" msgid "Before" msgstr "" -#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349 -#: aleksis/apps/alsijil/tables.py:116 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227 +#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371 +#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220 msgid "Subject" @@ -134,8 +134,8 @@ msgstr "" msgid "Carry over data to all other lessons with the same subject in this week" msgstr "" -#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256 -#: aleksis/apps/alsijil/forms.py:348 +#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278 +#: aleksis/apps/alsijil/forms.py:370 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219 msgid "Group" msgstr "" @@ -150,80 +150,80 @@ msgstr "" msgid "You can't select a group and a teacher both." msgstr "" -#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350 -#: aleksis/apps/alsijil/models.py:491 +#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291 +#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27 +msgid "Person" +msgstr "" + +#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372 +#: aleksis/apps/alsijil/models.py:730 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64 msgid "Start date" msgstr "" -#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351 -#: aleksis/apps/alsijil/models.py:495 +#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373 +#: aleksis/apps/alsijil/models.py:734 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65 msgid "End date" msgstr "" -#: aleksis/apps/alsijil/forms.py:194 +#: aleksis/apps/alsijil/forms.py:196 msgid "Start period" msgstr "" -#: aleksis/apps/alsijil/forms.py:195 +#: aleksis/apps/alsijil/forms.py:197 msgid "End period" msgstr "" -#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117 -#: aleksis/apps/alsijil/tables.py:138 +#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623 +#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352 msgid "Absent" msgstr "" -#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146 +#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297 msgid "Excused" msgstr "" -#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71 -#: aleksis/apps/alsijil/models.py:253 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73 +#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79 +#: aleksis/apps/alsijil/models.py:255 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72 msgid "Excuse type" msgstr "" -#: aleksis/apps/alsijil/forms.py:204 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94 +#: aleksis/apps/alsijil/forms.py:206 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354 msgid "Remarks" msgstr "" -#: aleksis/apps/alsijil/forms.py:269 -#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 -msgid "Person" -msgstr "" - -#: aleksis/apps/alsijil/forms.py:346 +#: aleksis/apps/alsijil/forms.py:368 msgid "School term" msgstr "" -#: aleksis/apps/alsijil/forms.py:347 +#: aleksis/apps/alsijil/forms.py:369 msgid "Has lesson documentation" msgstr "" -#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50 +#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455 @@ -231,69 +231,6 @@ msgstr "" msgid "Event" msgstr "" -#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 -msgid "Class register" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:16 -msgid "Current lesson" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:27 -msgid "Current week" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:38 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 -msgid "My groups" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:49 -msgid "My overview" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:60 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 -msgid "My students" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:71 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 -msgid "Assign group role" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 -msgid "All lessons" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 -msgid "Excuse types" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258 -#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 -msgid "Extra marks" -msgstr "" - -#: aleksis/apps/alsijil/menus.py:115 -msgid "Manage group roles" -msgstr "" - #: aleksis/apps/alsijil/model_extensions.py:191 msgid "Can view week overview of group class register" msgstr "" @@ -334,149 +271,244 @@ msgstr "" msgid "Can register an absence for a person" msgstr "" -#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430 +#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432 msgid "Short name" msgstr "" -#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431 -#: aleksis/apps/alsijil/models.py:455 +#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433 +#: aleksis/apps/alsijil/models.py:694 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 msgid "Name" msgstr "" -#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41 +#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41 msgid "Count as absent" msgstr "" -#: aleksis/apps/alsijil/models.py:57 +#: aleksis/apps/alsijil/models.py:65 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report." msgstr "" -#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332 +#: aleksis/apps/alsijil/models.py:80 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 +msgid "Excuse types" +msgstr "" + +#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334 msgid "Year" msgstr "" -#: aleksis/apps/alsijil/models.py:292 +#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450 +#: aleksis/apps/alsijil/tables.py:120 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 +msgid "Extra marks" +msgstr "" + +#: aleksis/apps/alsijil/models.py:294 msgid "Personal note" msgstr "" -#: aleksis/apps/alsijil/models.py:293 +#: aleksis/apps/alsijil/models.py:295 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21 msgid "Personal notes" msgstr "" -#: aleksis/apps/alsijil/models.py:344 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26 +#: aleksis/apps/alsijil/models.py:346 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421 msgid "Lesson topic" msgstr "" -#: aleksis/apps/alsijil/models.py:345 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34 +#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422 msgid "Homework" msgstr "" -#: aleksis/apps/alsijil/models.py:346 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42 +#: aleksis/apps/alsijil/models.py:348 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41 msgid "Group note" msgstr "" -#: aleksis/apps/alsijil/models.py:396 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17 +#: aleksis/apps/alsijil/models.py:398 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16 msgid "Lesson documentation" msgstr "" -#: aleksis/apps/alsijil/models.py:397 +#: aleksis/apps/alsijil/models.py:399 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77 msgid "Lesson documentations" msgstr "" -#: aleksis/apps/alsijil/models.py:442 +#: aleksis/apps/alsijil/models.py:435 +msgid "Foreground colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:436 +msgid "Background colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:438 +msgid "Show in coursebook" +msgstr "" + +#: aleksis/apps/alsijil/models.py:449 msgid "Extra mark" msgstr "" -#: aleksis/apps/alsijil/models.py:456 +#: aleksis/apps/alsijil/models.py:467 +msgid "Course" +msgstr "" + +#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331 +msgid "Teachers" +msgstr "" + +#: aleksis/apps/alsijil/models.py:482 +msgid "Lesson Topic" +msgstr "" + +#: aleksis/apps/alsijil/models.py:484 +msgid "Group Note" +msgstr "" + +#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619 +#: aleksis/apps/alsijil/models.py:665 +msgid "Documentation" +msgstr "" + +#: aleksis/apps/alsijil/models.py:513 +msgid "Documentations" +msgstr "" + +#: aleksis/apps/alsijil/models.py:612 +msgid "Groups of Person" +msgstr "" + +#: aleksis/apps/alsijil/models.py:625 +msgid "Absence Reason" +msgstr "" + +#: aleksis/apps/alsijil/models.py:634 +msgid "Base Absence" +msgstr "" + +#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642 +msgid "Participation Status" +msgstr "" + +#: aleksis/apps/alsijil/models.py:670 +msgid "Note" +msgstr "" + +#: aleksis/apps/alsijil/models.py:672 +msgid "Extra Mark" +msgstr "" + +#: aleksis/apps/alsijil/models.py:679 +msgid "Personal Note" +msgstr "" + +#: aleksis/apps/alsijil/models.py:680 +msgid "Personal Notes" +msgstr "" + +#: aleksis/apps/alsijil/models.py:695 msgid "Icon" msgstr "" -#: aleksis/apps/alsijil/models.py:457 +#: aleksis/apps/alsijil/models.py:696 msgid "Colour" msgstr "" -#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478 +#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62 msgid "Group role" msgstr "" -#: aleksis/apps/alsijil/models.py:464 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34 +#: aleksis/apps/alsijil/models.py:703 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9 msgid "Group roles" msgstr "" -#: aleksis/apps/alsijil/models.py:468 +#: aleksis/apps/alsijil/models.py:704 msgid "Can assign group role" msgstr "" -#: aleksis/apps/alsijil/models.py:484 +#: aleksis/apps/alsijil/models.py:723 msgid "Assigned person" msgstr "" -#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326 +#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321 msgid "Groups" msgstr "" -#: aleksis/apps/alsijil/models.py:496 +#: aleksis/apps/alsijil/models.py:735 msgid "Can be left empty if end date is not clear yet" msgstr "" -#: aleksis/apps/alsijil/models.py:511 +#: aleksis/apps/alsijil/models.py:750 msgid "Group role assignment" msgstr "" -#: aleksis/apps/alsijil/models.py:512 +#: aleksis/apps/alsijil/models.py:751 msgid "Group role assignments" msgstr "" -#: aleksis/apps/alsijil/models.py:519 +#: aleksis/apps/alsijil/models.py:758 msgid "Can view lesson overview" msgstr "" -#: aleksis/apps/alsijil/models.py:520 +#: aleksis/apps/alsijil/models.py:759 msgid "Can view week overview" msgstr "" -#: aleksis/apps/alsijil/models.py:521 +#: aleksis/apps/alsijil/models.py:760 msgid "Can view full register" msgstr "" -#: aleksis/apps/alsijil/models.py:522 +#: aleksis/apps/alsijil/models.py:761 msgid "Can register absence" msgstr "" -#: aleksis/apps/alsijil/models.py:523 +#: aleksis/apps/alsijil/models.py:762 msgid "Can list all personal note filters" msgstr "" +#: aleksis/apps/alsijil/preferences.py:9 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 +msgid "Class register" +msgstr "" + #: aleksis/apps/alsijil/preferences.py:17 msgid "Block adding personal notes for cancelled lessons" msgstr "" @@ -557,6 +589,22 @@ msgstr "" msgid "Filter lessons by existence of their lesson documentation on default" msgstr "" +#: aleksis/apps/alsijil/preferences.py:170 +msgid "Allow editing of all future documentations" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:173 +msgid "Allow editing of all documentations up to and including those on the current day" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:178 +msgid "Allow editing of all documentations up to and including those on the current date and time" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:183 +msgid "Set time range for which documentations may be edited" +msgstr "" + #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47 #: aleksis/apps/alsijil/tables.py:72 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13 @@ -569,24 +617,17 @@ msgid "Date" msgstr "" #: aleksis/apps/alsijil/tables.py:99 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122 msgid "Period" msgstr "" -#: aleksis/apps/alsijil/tables.py:111 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336 -msgid "Teachers" -msgstr "" - #: aleksis/apps/alsijil/tables.py:118 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323 msgid "Tardiness" msgstr "" @@ -597,14 +638,46 @@ msgstr "" #: aleksis/apps/alsijil/tables.py:156 #, python-brace-format -msgid "{value}' late" +msgid "{value}' tardiness" +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:26 +msgid "Load data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:49 +msgid "Sort data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:64 +msgid "Load lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:104 +msgid "Sort lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:133 +msgid "Load statistics ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:173 +msgid "Generate template ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:179 +msgid "Generate PDF ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:185 +msgid "PDF generation failed" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140 msgid "Register absence" msgstr "" @@ -648,26 +721,36 @@ msgstr "" msgid "Cancel" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 +msgid "All lessons" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 +msgid "My groups" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21 msgid "Students" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59 msgid "Students list" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19 msgid "Week view" msgstr "" @@ -682,8 +765,8 @@ msgstr "" #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66 msgid "Generate printout" msgstr "" @@ -700,39 +783,25 @@ msgstr "" msgid "Lesson" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83 msgid "Persons" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45 msgid "Seating plan" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32 msgid "Previous" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63 msgid "More" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93 -msgid "My previous lesson" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104 -msgid "My next lesson" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105 -msgid "Next" -msgstr "" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114 msgid "" "\n" " This lesson overlaps with holidays and can't be edited.\n" @@ -785,84 +854,89 @@ msgstr "" msgid "Filter results" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120 msgid "Statistics on absences, tardiness and remarks" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291 msgid "Absences" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302 msgid "thereof" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141 msgid "Without Excuse Type" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313 msgid "Unexcused" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 +msgid "My students" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12 #, python-format msgid "Students list: %(group)s" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25 msgid "Select" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31 msgid "Toggle filters" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38 #, python-format msgid "" "CW %(week)s:\n" " %(instance)s" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289 msgid "Unfold" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355 msgid "Visit lesson overview" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393 msgid "unexcused" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396 msgid "Summed up tardiness" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126 msgid "Count of tardiness" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431 msgid "No lessons available" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434 msgid "" "\n" " There are no lessons for the selected group or teacher in this week.\n" @@ -906,6 +980,11 @@ msgstr "" msgid "Assign group role for %(group)s" msgstr "" +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 +msgid "Assign group role" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34 msgid "Assign" msgstr "" @@ -975,16 +1054,16 @@ msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139 msgid "(e)" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143 msgid "(u)" msgstr "" @@ -1008,8 +1087,8 @@ msgid "Unexcused absences" msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138 msgid "Sum (e)" msgstr "" @@ -1026,14 +1105,28 @@ msgstr "" msgid "Excuse types (not counted as absent)" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +msgid "My previous lesson" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42 +msgid "My next lesson" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43 +msgid "Next" +msgstr "" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7 #, python-format msgid "%(period)s. period" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80 #, python-format msgid "" "\n" @@ -1041,13 +1134,13 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139 msgid "Save" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20 #, python-format msgid "" "\n" @@ -1055,7 +1148,7 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31 #, python-format msgid "" "\n" @@ -1063,11 +1156,11 @@ msgid "" " " msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11 msgid "Change history" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58 msgid "Tardiness (in m)" msgstr "" @@ -1183,27 +1276,27 @@ msgid "No students available." msgstr "" #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 msgid "Primary group" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 msgid "Uncounted Absences" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 msgid "Sum" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92 msgid "Regular excused" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132 msgid "Show more details" msgstr "" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133 msgid "Details" msgstr "" @@ -1374,78 +1467,98 @@ msgstr "" msgid "Notes" msgstr "" -#: aleksis/apps/alsijil/views.py:118 +#: aleksis/apps/alsijil/views.py:114 msgid "You either selected an invalid lesson or there is currently no lesson in progress." msgstr "" -#: aleksis/apps/alsijil/views.py:151 +#: aleksis/apps/alsijil/views.py:147 msgid "You are not allowed to create a lesson documentation for a lesson in the future." msgstr "" -#: aleksis/apps/alsijil/views.py:268 +#: aleksis/apps/alsijil/views.py:264 msgid "The lesson documentation has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:302 +#: aleksis/apps/alsijil/views.py:298 msgid "The personal notes have been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1119 +#: aleksis/apps/alsijil/views.py:658 +msgid "Generate full register printout for {}" +msgstr "" + +#: aleksis/apps/alsijil/views.py:659 +msgid "Generate full register printout …" +msgstr "" + +#: aleksis/apps/alsijil/views.py:660 +msgid "The printout has been generated successfully." +msgstr "" + +#: aleksis/apps/alsijil/views.py:661 +msgid "There was a problem while generating the printout." +msgstr "" + +#: aleksis/apps/alsijil/views.py:664 +msgid "Download PDF" +msgstr "" + +#: aleksis/apps/alsijil/views.py:1030 msgid "The absence has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1140 +#: aleksis/apps/alsijil/views.py:1051 msgid "The personal note has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1162 +#: aleksis/apps/alsijil/views.py:1074 msgid "The extra mark has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1174 +#: aleksis/apps/alsijil/views.py:1086 msgid "The extra mark has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1185 +#: aleksis/apps/alsijil/views.py:1097 msgid "The extra mark has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1206 +#: aleksis/apps/alsijil/views.py:1119 msgid "The excuse type has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1218 +#: aleksis/apps/alsijil/views.py:1131 msgid "The excuse type has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1229 +#: aleksis/apps/alsijil/views.py:1142 msgid "The excuse type has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1250 +#: aleksis/apps/alsijil/views.py:1164 msgid "The group role has been created." msgstr "" -#: aleksis/apps/alsijil/views.py:1262 +#: aleksis/apps/alsijil/views.py:1176 msgid "The group role has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1273 +#: aleksis/apps/alsijil/views.py:1187 msgid "The group role has been deleted." msgstr "" -#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338 +#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253 msgid "The group role has been assigned." msgstr "" -#: aleksis/apps/alsijil/views.py:1357 +#: aleksis/apps/alsijil/views.py:1272 msgid "The group role assignment has been saved." msgstr "" -#: aleksis/apps/alsijil/views.py:1378 +#: aleksis/apps/alsijil/views.py:1293 msgid "The group role assignment has been stopped." msgstr "" -#: aleksis/apps/alsijil/views.py:1391 +#: aleksis/apps/alsijil/views.py:1306 msgid "The group role assignment has been deleted." msgstr "" diff --git a/aleksis/apps/alsijil/locale/uk/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/uk/LC_MESSAGES/django.po index 4d42b8750e5d3f189681038046bb0137c9aba0ff..6353e21e708c593793b756827d3f056ba5edb008 100644 --- a/aleksis/apps/alsijil/locale/uk/LC_MESSAGES/django.po +++ b/aleksis/apps/alsijil/locale/uk/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-25 15:28+0200\n" +"POT-Creation-Date: 2024-04-23 21:13+0200\n" "PO-Revision-Date: 2023-01-25 05:58+0000\n" "Last-Translator: Serhii Horichenko <m@sgg.im>\n" "Language-Team: Ukrainian <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/uk/>\n" @@ -43,67 +43,62 @@ msgstr "{} проÑить Ð’Ð°Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ð¸Ñ‚Ð¸ деÑкі запиÑи к #: aleksis/apps/alsijil/actions.py:86 #, python-brace-format -msgid "" -"We have successfully sent notifications to {count_teachers} persons for " -"{count_items} lessons." -msgstr "" -"Ми надіÑлали ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ {count_teachers} оÑіб щодо {count_items} уроків." +msgid "We have successfully sent notifications to {count_teachers} persons for {count_items} lessons." +msgstr "Ми надіÑлали ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ {count_teachers} оÑіб щодо {count_items} уроків." #: aleksis/apps/alsijil/actions.py:92 msgid "Ask teacher to check data" msgstr "ПопроÑити Ð²Ñ‡Ð¸Ñ‚ÐµÐ»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ð¸Ñ‚Ð¸ дані" -#: aleksis/apps/alsijil/data_checks.py:12 +#: aleksis/apps/alsijil/data_checks.py:16 msgid "Delete object" msgstr "Видалити об'єкт" -#: aleksis/apps/alsijil/data_checks.py:22 +#: aleksis/apps/alsijil/data_checks.py:26 msgid "Set current groups" msgstr "Ð’Ñтановити поточні групи" -#: aleksis/apps/alsijil/data_checks.py:33 +#: aleksis/apps/alsijil/data_checks.py:37 msgid "Reset personal note to defaults" msgstr "Скинути перÑональні нотатки на типові" -#: aleksis/apps/alsijil/data_checks.py:45 +#: aleksis/apps/alsijil/data_checks.py:49 msgid "Ensure that there are no personal notes in cancelled lessons" msgstr "ПереконайтеÑÑ, щоб у ÑкаÑованих уроках не було оÑобиÑтих нотаток" -#: aleksis/apps/alsijil/data_checks.py:46 +#: aleksis/apps/alsijil/data_checks.py:50 msgid "The personal note is related to a cancelled lesson." msgstr "У ÑкаÑованого уроку Ñ” пов'Ñзані оÑобиÑÑ‚Ñ– нотатки." -#: aleksis/apps/alsijil/data_checks.py:73 +#: aleksis/apps/alsijil/data_checks.py:77 msgid "Ensure that 'groups_of_person' is set for every personal note" -msgstr "" -"ПереконайтеÑÑ, що Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— оÑобиÑтої нотатки уÑтановлені \"групи_оÑіб\"" +msgstr "ПереконайтеÑÑ, що Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— оÑобиÑтої нотатки уÑтановлені \"групи_оÑіб\"" -#: aleksis/apps/alsijil/data_checks.py:74 +#: aleksis/apps/alsijil/data_checks.py:78 msgid "The personal note has no group in 'groups_of_person'." msgstr "Ð¦Ñ Ð¾ÑобиÑта нотатка не має групи у \"групах_оÑіб\"." -#: aleksis/apps/alsijil/data_checks.py:99 +#: aleksis/apps/alsijil/data_checks.py:103 msgid "Ensure that there are no filled out lesson documentations on holidays" msgstr "ПереконайтеÑÑ, що на вихідні немає заповненого учбового матеріалу" -#: aleksis/apps/alsijil/data_checks.py:100 +#: aleksis/apps/alsijil/data_checks.py:104 msgid "The lesson documentation is on holidays." msgstr "Ðа вихідних Ñ” учбовий матеріал." -#: aleksis/apps/alsijil/data_checks.py:133 +#: aleksis/apps/alsijil/data_checks.py:137 msgid "Ensure that there are no filled out personal notes on holidays" msgstr "ПереконайтеÑÑ, що на вихідні немає заповнених оÑобиÑтих нотаток" -#: aleksis/apps/alsijil/data_checks.py:134 +#: aleksis/apps/alsijil/data_checks.py:138 msgid "The personal note is on holidays." msgstr "Ці оÑобиÑÑ‚Ñ– нотатки Ñ” на вихідних." -#: aleksis/apps/alsijil/data_checks.py:162 +#: aleksis/apps/alsijil/data_checks.py:166 msgid "Ensure that there are no excused personal notes without an absence" -msgstr "" -"ПереконайтеÑÑ, що немає оÑобиÑтих нотаток щодо поÑÑÐ½ÐµÐ½Ð½Ñ Ð±ÐµÐ· відÑутноÑÑ‚Ñ–" +msgstr "ПереконайтеÑÑ, що немає оÑобиÑтих нотаток щодо поÑÑÐ½ÐµÐ½Ð½Ñ Ð±ÐµÐ· відÑутноÑÑ‚Ñ–" -#: aleksis/apps/alsijil/data_checks.py:163 +#: aleksis/apps/alsijil/data_checks.py:167 msgid "The personal note is marked as excused, but not as absent." msgstr "Ð¦Ñ Ð¿ÐµÑ€Ñональна нотатка відмічена Ñк поÑÑненнÑ, але не Ñк пропуÑк." @@ -115,13 +110,12 @@ msgstr "ПіÑлÑ" msgid "Before" msgstr "Перед" -#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349 -#: aleksis/apps/alsijil/tables.py:116 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227 +#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371 +#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220 -#: aleksis/apps/alsijil/forms.py:302 msgid "Subject" msgstr "Предмет" @@ -141,389 +135,403 @@ msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð° на наÑтупний урок" msgid "Carry over data to all other lessons with the same subject in this week" msgstr "ПеренеÑти дані на уÑÑ– інші уроки з таким Ñамим предметом на цьому тижні" -#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256 -#: aleksis/apps/alsijil/forms.py:348 +#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278 +#: aleksis/apps/alsijil/forms.py:370 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219 -#: aleksis/apps/alsijil/forms.py:73 aleksis/apps/alsijil/forms.py:214 -#: aleksis/apps/alsijil/forms.py:301 msgid "Group" msgstr "Група" #: aleksis/apps/alsijil/forms.py:104 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:190 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:221 -#: aleksis/apps/alsijil/forms.py:79 msgid "Teacher" msgstr "Викладач" -#: aleksis/apps/alsijil/forms.py:121 aleksis/apps/alsijil/forms.py:96 +#: aleksis/apps/alsijil/forms.py:121 msgid "You can't select a group and a teacher both." msgstr "Ви не можете обрати одночаÑно групу та викладача." -#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350 -#: aleksis/apps/alsijil/models.py:491 +#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291 +#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27 +msgid "Person" +msgstr "ОÑоба" + +#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372 +#: aleksis/apps/alsijil/models.py:730 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64 -#: aleksis/apps/alsijil/forms.py:150 aleksis/apps/alsijil/forms.py:303 -#: aleksis/apps/alsijil/models.py:480 msgid "Start date" msgstr "Дата початку" -#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351 -#: aleksis/apps/alsijil/models.py:495 +#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373 +#: aleksis/apps/alsijil/models.py:734 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65 -#: aleksis/apps/alsijil/forms.py:151 aleksis/apps/alsijil/forms.py:304 -#: aleksis/apps/alsijil/models.py:484 msgid "End date" msgstr "Дата закінченнÑ" -#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:152 +#: aleksis/apps/alsijil/forms.py:196 msgid "Start period" msgstr "Початок уроків" -#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:153 +#: aleksis/apps/alsijil/forms.py:197 msgid "End period" msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ ÑƒÑ€Ð¾ÐºÑ–Ð²" -#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117 -#: aleksis/apps/alsijil/tables.py:138 +#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623 +#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352 -#: aleksis/apps/alsijil/forms.py:154 msgid "Absent" msgstr "ВідÑутній(-Ñ)" -#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146 +#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297 -#: aleksis/apps/alsijil/forms.py:155 msgid "Excused" msgstr "ПоÑÑнено" -#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71 -#: aleksis/apps/alsijil/models.py:253 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73 -#: aleksis/apps/alsijil/forms.py:157 aleksis/apps/alsijil/models.py:245 +#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79 +#: aleksis/apps/alsijil/models.py:255 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72 msgid "Excuse type" msgstr "Тип поÑÑненнÑ" -#: aleksis/apps/alsijil/forms.py:204 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94 +#: aleksis/apps/alsijil/forms.py:206 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354 -#: aleksis/apps/alsijil/forms.py:162 msgid "Remarks" msgstr "ЗауваженнÑ" -#: aleksis/apps/alsijil/forms.py:269 -#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28 -#: aleksis/apps/alsijil/forms.py:227 -msgid "Person" -msgstr "ОÑоба" - -#: aleksis/apps/alsijil/forms.py:346 aleksis/apps/alsijil/forms.py:299 +#: aleksis/apps/alsijil/forms.py:368 msgid "School term" msgstr "Ðавчальний рік" -#: aleksis/apps/alsijil/forms.py:347 aleksis/apps/alsijil/forms.py:300 +#: aleksis/apps/alsijil/forms.py:369 msgid "Has lesson documentation" msgstr "Має учбовий матеріал" -#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50 +#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455 #: aleksis/apps/alsijil/util/alsijil_helpers.py:330 -#: aleksis/apps/alsijil/util/alsijil_helpers.py:315 msgid "Event" msgstr "ПодіÑ" -#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 -msgid "Class register" -msgstr "КлаÑний журнал" - -#: aleksis/apps/alsijil/menus.py:16 -msgid "Current lesson" -msgstr "Поточний урок" - -#: aleksis/apps/alsijil/menus.py:27 -msgid "Current week" -msgstr "Поточний тиждень" - -#: aleksis/apps/alsijil/menus.py:38 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 -msgid "My groups" -msgstr "Мої групи" - -#: aleksis/apps/alsijil/menus.py:49 -msgid "My overview" -msgstr "Мій оглÑд" - -#: aleksis/apps/alsijil/menus.py:60 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 -msgid "My students" -msgstr "Мої Ñтуденти" - -#: aleksis/apps/alsijil/menus.py:71 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 -#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 -msgid "Assign group role" -msgstr "Призначити роль групи" - -#: aleksis/apps/alsijil/menus.py:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 -#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 -msgid "All lessons" -msgstr "УÑÑ– уроки" - -#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 -msgid "Excuse types" -msgstr "Типи поÑÑнень" - -#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258 -#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 -#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 -#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 -#: aleksis/apps/alsijil/models.py:250 aleksis/apps/alsijil/models.py:432 -msgid "Extra marks" -msgstr "Додаткові відмітки" - -#: aleksis/apps/alsijil/menus.py:115 -msgid "Manage group roles" -msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð»Ñми групи" - #: aleksis/apps/alsijil/model_extensions.py:191 -#: aleksis/apps/alsijil/model_extensions.py:190 msgid "Can view week overview of group class register" msgstr "Може бачити клаÑний журнал групи за тиждень" #: aleksis/apps/alsijil/model_extensions.py:195 -#: aleksis/apps/alsijil/model_extensions.py:194 msgid "Can view lesson overview of group class register" msgstr "Може бачити клаÑний журнал групи за урок" #: aleksis/apps/alsijil/model_extensions.py:197 -#: aleksis/apps/alsijil/model_extensions.py:196 msgid "Can view all personal notes of a group" msgstr "Може бачити уÑÑ– оÑобиÑÑ‚Ñ– нотатки групи" #: aleksis/apps/alsijil/model_extensions.py:198 -#: aleksis/apps/alsijil/model_extensions.py:197 msgid "Can edit all personal notes of a group" msgstr "Може редагувати уÑÑ– оÑобиÑÑ‚Ñ– нотатки групи" #: aleksis/apps/alsijil/model_extensions.py:200 -#: aleksis/apps/alsijil/model_extensions.py:199 msgid "Can view all lesson documentation of a group" msgstr "Може бачити увеÑÑŒ учбовий матеріал групи" #: aleksis/apps/alsijil/model_extensions.py:203 -#: aleksis/apps/alsijil/model_extensions.py:202 msgid "Can edit all lesson documentation of a group" msgstr "Може редагувати увеÑÑŒ учбовий матеріал групи" #: aleksis/apps/alsijil/model_extensions.py:205 -#: aleksis/apps/alsijil/model_extensions.py:204 msgid "Can view full register of a group" msgstr "Може бачити клаÑний журнал групи без обмежень" #: aleksis/apps/alsijil/model_extensions.py:207 -#: aleksis/apps/alsijil/model_extensions.py:206 msgid "Can register an absence for all members of a group" msgstr "Може реєÑтрувати пропуÑки Ð´Ð»Ñ ÑƒÑÑ–Ñ… учаÑників групи" #: aleksis/apps/alsijil/model_extensions.py:209 -#: aleksis/apps/alsijil/model_extensions.py:208 msgid "Can assign a group role for this group" msgstr "Може призначати роль групи Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— групи" #: aleksis/apps/alsijil/model_extensions.py:210 -#: aleksis/apps/alsijil/model_extensions.py:209 msgid "Can register an absence for a person" msgstr "Може реєÑтрувати відÑутніÑÑ‚ÑŒ оÑоби" -#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430 -#: aleksis/apps/alsijil/models.py:419 +#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432 msgid "Short name" msgstr "Коротке ім'Ñ" -#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431 -#: aleksis/apps/alsijil/models.py:455 +#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433 +#: aleksis/apps/alsijil/models.py:694 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23 -#: aleksis/apps/alsijil/models.py:420 aleksis/apps/alsijil/models.py:444 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 msgid "Name" msgstr "Повне ім'Ñ" -#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41 +#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41 msgid "Count as absent" msgstr "КількіÑÑ‚ÑŒ відÑутніх" -#: aleksis/apps/alsijil/models.py:57 -msgid "" -"If checked, this excuse type will be counted as a missed lesson. If not " -"checked,it won't show up in the absence report." -msgstr "" -"Якщо відмічено, цей тип поÑÑÐ½ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ зарахований Ñк пропущений урок. Якщо " -"не відмічено, то без запиÑу у звіт відÑутноÑÑ‚Ñ–." +#: aleksis/apps/alsijil/models.py:65 +msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report." +msgstr "Якщо відмічено, цей тип поÑÑÐ½ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ зарахований Ñк пропущений урок. Якщо не відмічено, то без запиÑу у звіт відÑутноÑÑ‚Ñ–." + +#: aleksis/apps/alsijil/models.py:80 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30 +msgid "Excuse types" +msgstr "Типи поÑÑнень" -#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332 -#: aleksis/apps/alsijil/models.py:225 aleksis/apps/alsijil/models.py:324 +#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334 msgid "Year" msgstr "Рік" -#: aleksis/apps/alsijil/models.py:292 aleksis/apps/alsijil/models.py:284 +#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450 +#: aleksis/apps/alsijil/tables.py:120 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8 +#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331 +msgid "Extra marks" +msgstr "Додаткові відмітки" + +#: aleksis/apps/alsijil/models.py:294 msgid "Personal note" msgstr "ОÑобиÑта нотатка" -#: aleksis/apps/alsijil/models.py:293 +#: aleksis/apps/alsijil/models.py:295 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22 -#: aleksis/apps/alsijil/models.py:285 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21 msgid "Personal notes" msgstr "ОÑобиÑÑ‚Ñ– нотатки" -#: aleksis/apps/alsijil/models.py:344 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26 +#: aleksis/apps/alsijil/models.py:346 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421 -#: aleksis/apps/alsijil/models.py:336 msgid "Lesson topic" msgstr "Тема уроку" -#: aleksis/apps/alsijil/models.py:345 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34 +#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422 -#: aleksis/apps/alsijil/models.py:337 msgid "Homework" msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð°" -#: aleksis/apps/alsijil/models.py:346 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42 -#: aleksis/apps/alsijil/models.py:338 +#: aleksis/apps/alsijil/models.py:348 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41 msgid "Group note" msgstr "Групова нотатка" -#: aleksis/apps/alsijil/models.py:396 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17 -#: aleksis/apps/alsijil/models.py:385 +#: aleksis/apps/alsijil/models.py:398 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16 msgid "Lesson documentation" msgstr "Учбовий матеріал" -#: aleksis/apps/alsijil/models.py:397 +#: aleksis/apps/alsijil/models.py:399 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21 -#: aleksis/apps/alsijil/models.py:386 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77 msgid "Lesson documentations" msgstr "Учбові матеріали" -#: aleksis/apps/alsijil/models.py:442 aleksis/apps/alsijil/models.py:431 +#: aleksis/apps/alsijil/models.py:435 +msgid "Foreground colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:436 +msgid "Background colour" +msgstr "" + +#: aleksis/apps/alsijil/models.py:438 +msgid "Show in coursebook" +msgstr "" + +#: aleksis/apps/alsijil/models.py:449 msgid "Extra mark" msgstr "Додаткова відмітка" -#: aleksis/apps/alsijil/models.py:456 aleksis/apps/alsijil/models.py:445 +#: aleksis/apps/alsijil/models.py:467 +msgid "Course" +msgstr "" + +#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331 +msgid "Teachers" +msgstr "Викладачі" + +#: aleksis/apps/alsijil/models.py:482 +#, fuzzy +#| msgid "Lesson topic" +msgid "Lesson Topic" +msgstr "Тема уроку" + +#: aleksis/apps/alsijil/models.py:484 +#, fuzzy +#| msgid "Group note" +msgid "Group Note" +msgstr "Групова нотатка" + +#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619 +#: aleksis/apps/alsijil/models.py:665 +#, fuzzy +#| msgid "Lesson documentation" +msgid "Documentation" +msgstr "Учбовий матеріал" + +#: aleksis/apps/alsijil/models.py:513 +#, fuzzy +#| msgid "Lesson documentations" +msgid "Documentations" +msgstr "Учбові матеріали" + +#: aleksis/apps/alsijil/models.py:612 +#, fuzzy +#| msgid "Group roles" +msgid "Groups of Person" +msgstr "Ролі груп" + +#: aleksis/apps/alsijil/models.py:625 +#, fuzzy +#| msgid "Absences" +msgid "Absence Reason" +msgstr "ВідÑутноÑÑ‚Ñ–" + +#: aleksis/apps/alsijil/models.py:634 +#, fuzzy +#| msgid "Absences" +msgid "Base Absence" +msgstr "ВідÑутноÑÑ‚Ñ–" + +#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642 +msgid "Participation Status" +msgstr "" + +#: aleksis/apps/alsijil/models.py:670 +#, fuzzy +#| msgid "Notes" +msgid "Note" +msgstr "Ðотатки" + +#: aleksis/apps/alsijil/models.py:672 +#, fuzzy +#| msgid "Extra mark" +msgid "Extra Mark" +msgstr "Додаткова відмітка" + +#: aleksis/apps/alsijil/models.py:679 +#, fuzzy +#| msgid "Personal note" +msgid "Personal Note" +msgstr "ОÑобиÑта нотатка" + +#: aleksis/apps/alsijil/models.py:680 +#, fuzzy +#| msgid "Personal notes" +msgid "Personal Notes" +msgstr "ОÑобиÑÑ‚Ñ– нотатки" + +#: aleksis/apps/alsijil/models.py:695 msgid "Icon" msgstr "Піктограма" -#: aleksis/apps/alsijil/models.py:457 aleksis/apps/alsijil/models.py:446 +#: aleksis/apps/alsijil/models.py:696 msgid "Colour" msgstr "Колір" -#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478 +#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62 -#: aleksis/apps/alsijil/models.py:452 aleksis/apps/alsijil/models.py:467 msgid "Group role" msgstr "Роль групи" -#: aleksis/apps/alsijil/models.py:464 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34 +#: aleksis/apps/alsijil/models.py:703 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9 -#: aleksis/apps/alsijil/models.py:453 msgid "Group roles" msgstr "Ролі груп" -#: aleksis/apps/alsijil/models.py:468 aleksis/apps/alsijil/models.py:457 +#: aleksis/apps/alsijil/models.py:704 msgid "Can assign group role" msgstr "Може призначати роль групи" -#: aleksis/apps/alsijil/models.py:484 aleksis/apps/alsijil/models.py:473 +#: aleksis/apps/alsijil/models.py:723 msgid "Assigned person" msgstr "Призначена оÑоба" -#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326 -#: aleksis/apps/alsijil/models.py:478 +#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321 msgid "Groups" msgstr "Групи" -#: aleksis/apps/alsijil/models.py:496 aleksis/apps/alsijil/models.py:485 +#: aleksis/apps/alsijil/models.py:735 msgid "Can be left empty if end date is not clear yet" msgstr "Якщо немає точної кінцевої дати, можна залишити порожнім" -#: aleksis/apps/alsijil/models.py:511 aleksis/apps/alsijil/models.py:500 +#: aleksis/apps/alsijil/models.py:750 msgid "Group role assignment" msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð»Ñ– групи" -#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:501 +#: aleksis/apps/alsijil/models.py:751 msgid "Group role assignments" msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð»Ñ– групи" -#: aleksis/apps/alsijil/models.py:519 aleksis/apps/alsijil/models.py:508 +#: aleksis/apps/alsijil/models.py:758 msgid "Can view lesson overview" msgstr "Може бачити оглÑд уроку" -#: aleksis/apps/alsijil/models.py:520 aleksis/apps/alsijil/models.py:509 +#: aleksis/apps/alsijil/models.py:759 msgid "Can view week overview" msgstr "Може бачити оглÑд тижнÑ" -#: aleksis/apps/alsijil/models.py:521 aleksis/apps/alsijil/models.py:510 +#: aleksis/apps/alsijil/models.py:760 msgid "Can view full register" msgstr "Може бачити веÑÑŒ журнал" -#: aleksis/apps/alsijil/models.py:522 aleksis/apps/alsijil/models.py:511 +#: aleksis/apps/alsijil/models.py:761 msgid "Can register absence" msgstr "Може реєÑтрувати пропуÑк" -#: aleksis/apps/alsijil/models.py:523 aleksis/apps/alsijil/models.py:512 +#: aleksis/apps/alsijil/models.py:762 msgid "Can list all personal note filters" msgstr "Може бачити уÑÑ– фільтри оÑобиÑтих нотаток" +#: aleksis/apps/alsijil/preferences.py:9 +#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16 +msgid "Class register" +msgstr "КлаÑний журнал" + #: aleksis/apps/alsijil/preferences.py:17 msgid "Block adding personal notes for cancelled lessons" msgstr "Блокувати Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¾ÑобиÑтих нотаток до ÑкаÑованих уроків" @@ -533,127 +541,93 @@ msgid "Allow users to view their own personal notes" msgstr "Дозволити кориÑтувачам переглÑдати влаÑні оÑобиÑÑ‚Ñ– нотатки" #: aleksis/apps/alsijil/preferences.py:34 -msgid "" -"Allow primary group owners to register future absences for students in their " -"groups" -msgstr "" -"Дозволити влаÑникам оÑновних груп реєÑтрувати майбутні пропуÑки Ñтудентів у " -"Ñвоїх групах" +msgid "Allow primary group owners to register future absences for students in their groups" +msgstr "Дозволити влаÑникам оÑновних груп реєÑтрувати майбутні пропуÑки Ñтудентів у Ñвоїх групах" #: aleksis/apps/alsijil/preferences.py:44 -msgid "" -"Grant the owner of a parent group the same privileges as the owners of the " -"respective child groups" -msgstr "" -"Ðадати влаÑнику батьківÑької групи такі Ñамі повноваженнÑ, Ñк Ñ– влаÑникам " -"відповідних підлеглих груп" +msgid "Grant the owner of a parent group the same privileges as the owners of the respective child groups" +msgstr "Ðадати влаÑнику батьківÑької групи такі Ñамі повноваженнÑ, Ñк Ñ– влаÑникам відповідних підлеглих груп" #: aleksis/apps/alsijil/preferences.py:54 -#: aleksis/apps/alsijil/preferences.py:43 -msgid "" -"Allow original teachers to edit their lessons although they are substituted" -msgstr "" -"Дозволити початковим викладачам редагувати Ñвої уроки навіть піÑÐ»Ñ Ñ—Ñ… заміни" +msgid "Allow original teachers to edit their lessons although they are substituted" +msgstr "Дозволити початковим викладачам редагувати Ñвої уроки навіть піÑÐ»Ñ Ñ—Ñ… заміни" #: aleksis/apps/alsijil/preferences.py:63 -#: aleksis/apps/alsijil/preferences.py:52 -msgid "" -"Carry over data from first lesson period to the following lesson periods in " -"lessons over multiple periods" -msgstr "" -"ПереноÑити дані з першого уроку в розкладі на поточні уроки через декілька " -"уроків" +msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods" +msgstr "ПереноÑити дані з першого уроку в розкладі на поточні уроки через декілька уроків" #: aleksis/apps/alsijil/preferences.py:66 -#: aleksis/apps/alsijil/preferences.py:55 -msgid "" -"This will carry over data only if the data in the following periods are " -"empty." +msgid "This will carry over data only if the data in the following periods are empty." msgstr "Це перенеÑе дані лише в тому разі, коли в поточних уроках даних немає." #: aleksis/apps/alsijil/preferences.py:75 -msgid "" -"Allow carrying over data from any lesson period to all other " -"lesson periods with the same lesson and in the same week" -msgstr "" -"Дозволити переноÑити дані з будь-Ñкого уроку на уÑÑ– інші " -"уроки з таким Ñамим номером урока на тому Ñамому тижні" +msgid "Allow carrying over data from any lesson period to all other lesson periods with the same lesson and in the same week" +msgstr "Дозволити переноÑити дані з будь-Ñкого уроку на уÑÑ– інші уроки з таким Ñамим номером урока на тому Ñамому тижні" #: aleksis/apps/alsijil/preferences.py:79 -msgid "" -"This will carry over data only if the data in the aforementioned periods are " -"empty." -msgstr "" -"Це перенеÑе дані лише в тому разі, коли у вищезгаданих уроках даних немає." +msgid "This will carry over data only if the data in the aforementioned periods are empty." +msgstr "Це перенеÑе дані лише в тому разі, коли у вищезгаданих уроках даних немає." #: aleksis/apps/alsijil/preferences.py:88 -#: aleksis/apps/alsijil/preferences.py:63 -msgid "" -"Carry over personal notes to all following lesson periods on the same day." +msgid "Carry over personal notes to all following lesson periods on the same day." msgstr "ПереноÑити оÑобиÑÑ‚Ñ– нотатки до вÑÑ–Ñ… наÑтупних уроків того ж днÑ." #: aleksis/apps/alsijil/preferences.py:97 -#: aleksis/apps/alsijil/preferences.py:72 -msgid "" -"Allow teachers to open lesson periods on the same day and not just at the " -"beginning of the period" -msgstr "" -"Дозволити викладачам відкривати уроки того Ñамого Ð´Ð½Ñ Ñ– не лише на початку " -"уроків" +msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period" +msgstr "Дозволити викладачам відкривати уроки того Ñамого Ð´Ð½Ñ Ñ– не лише на початку уроків" #: aleksis/apps/alsijil/preferences.py:101 -#: aleksis/apps/alsijil/preferences.py:76 -msgid "" -"Lessons in the past are not affected by this setting, you can open them " -"whenever you want." -msgstr "" -"Ці Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ впливають на минулі уроки. Ви можете відкривати Ñ—Ñ… будь-" -"коли." +msgid "Lessons in the past are not affected by this setting, you can open them whenever you want." +msgstr "Ці Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ впливають на минулі уроки. Ви можете відкривати Ñ—Ñ… будь-коли." #: aleksis/apps/alsijil/preferences.py:110 -#: aleksis/apps/alsijil/preferences.py:85 msgid "Allow teachers to add data for lessons in holidays" -msgstr "" -"Дозволити викладачам додавати навчальний матеріал (дані Ð´Ð»Ñ ÑƒÑ€Ð¾ÐºÑ–Ð²) на " -"вихідних" +msgstr "Дозволити викладачам додавати навчальний матеріал (дані Ð´Ð»Ñ ÑƒÑ€Ð¾ÐºÑ–Ð²) на вихідних" #: aleksis/apps/alsijil/preferences.py:119 -#: aleksis/apps/alsijil/preferences.py:94 -msgid "" -"Allow group owners to assign group roles to the parents of the group's " -"members" +msgid "Allow group owners to assign group roles to the parents of the group's members" msgstr "Дозволити влаÑникам груп призначати ролі груп батькам учаÑників груп" #: aleksis/apps/alsijil/preferences.py:128 -#: aleksis/apps/alsijil/preferences.py:103 msgid "Show assigned group roles in week view" msgstr "Показати призначені ролі груп у тижневому оглÑді" #: aleksis/apps/alsijil/preferences.py:129 -#: aleksis/apps/alsijil/preferences.py:104 msgid "Only week view of groups" msgstr "Лише тижневі оглÑди груп" #: aleksis/apps/alsijil/preferences.py:137 -#: aleksis/apps/alsijil/preferences.py:112 msgid "Show assigned group roles in lesson view" msgstr "Показати призначені ролі груп в оглÑді уроку" #: aleksis/apps/alsijil/preferences.py:147 -#: aleksis/apps/alsijil/preferences.py:122 msgid "Items per page in lessons table" msgstr "КількіÑÑ‚ÑŒ запиÑів у розкладі на Ñторінку" #: aleksis/apps/alsijil/preferences.py:151 -#: aleksis/apps/alsijil/preferences.py:126 msgid "Each page must show at least one item." msgstr "Кожна Ñторінка повинна мати принаймні один запиÑ." #: aleksis/apps/alsijil/preferences.py:159 -#: aleksis/apps/alsijil/preferences.py:134 msgid "Filter lessons by existence of their lesson documentation on default" msgstr "Типово фільтувати уроки за наÑвніÑÑ‚ÑŽ у них учбового матеріалу" +#: aleksis/apps/alsijil/preferences.py:170 +msgid "Allow editing of all future documentations" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:173 +msgid "Allow editing of all documentations up to and including those on the current day" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:178 +msgid "Allow editing of all documentations up to and including those on the current date and time" +msgstr "" + +#: aleksis/apps/alsijil/preferences.py:183 +msgid "Set time range for which documentations may be edited" +msgstr "" + #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47 #: aleksis/apps/alsijil/tables.py:72 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13 @@ -666,24 +640,17 @@ msgid "Date" msgstr "Дата" #: aleksis/apps/alsijil/tables.py:99 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122 msgid "Period" msgstr "Урок" -#: aleksis/apps/alsijil/tables.py:111 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336 -msgid "Teachers" -msgstr "Викладачі" - #: aleksis/apps/alsijil/tables.py:118 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323 msgid "Tardiness" msgstr "ЗапізненнÑ" @@ -693,15 +660,52 @@ msgid "Excuse" msgstr "ПоÑÑненнÑ" #: aleksis/apps/alsijil/tables.py:156 -#, python-brace-format -msgid "{value}' late" +#, fuzzy, python-brace-format +#| msgid "{value}' late" +msgid "{value}' tardiness" msgstr "{value}' затримка" +#: aleksis/apps/alsijil/tasks.py:26 +msgid "Load data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:49 +#, fuzzy +#| msgid "Start date" +msgid "Sort data ..." +msgstr "Дата початку" + +#: aleksis/apps/alsijil/tasks.py:64 +msgid "Load lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:104 +msgid "Sort lesson data ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:133 +#, fuzzy +#| msgid "Statistics" +msgid "Load statistics ..." +msgstr "СтатиÑтика" + +#: aleksis/apps/alsijil/tasks.py:173 +msgid "Generate template ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:179 +msgid "Generate PDF ..." +msgstr "" + +#: aleksis/apps/alsijil/tasks.py:185 +msgid "PDF generation failed" +msgstr "" + #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140 msgid "Register absence" msgstr "РеєÑÑ‚Ñ€Ð°Ñ†Ñ–Ñ Ð²Ñ–Ð´ÑутноÑÑ‚Ñ–" @@ -740,13 +744,11 @@ msgstr " %(count)s залежних уроків " #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:40 msgid "" "\n" -" There are no affected lessons. Registering this absence " -"won't have any effect.\n" +" There are no affected lessons. Registering this absence won't have any effect.\n" " " msgstr "" "\n" -" Залежних уроків немає. РеєÑÑ‚Ñ€Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑку ні на що не " -"впливає.\n" +" Залежних уроків немає. РеєÑÑ‚Ñ€Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑку ні на що не впливає.\n" " " #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:57 @@ -757,26 +759,36 @@ msgstr "Скинути ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° 'не відÑутній'" msgid "Cancel" msgstr "СкаÑувати" +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8 +msgid "All lessons" +msgstr "УÑÑ– уроки" + +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8 +msgid "My groups" +msgstr "Мої групи" + #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21 msgid "Students" msgstr "Студенти" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59 msgid "Students list" msgstr "СпиÑок Ñтудентів" #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19 msgid "Week view" msgstr "Тижневий оглÑд" @@ -791,8 +803,8 @@ msgstr "Ролі" #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66 msgid "Generate printout" msgstr "Підготувати Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ" @@ -809,39 +821,25 @@ msgstr "Ñтуденти" msgid "Lesson" msgstr "Урок" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28 -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83 msgid "Persons" msgstr "ОÑоби" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45 msgid "Seating plan" msgstr "План розÑадженнÑ" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32 msgid "Previous" msgstr "Попередній" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63 msgid "More" msgstr "Ще" -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93 -msgid "My previous lesson" -msgstr "Мій попередній урок" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98 -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104 -msgid "My next lesson" -msgstr "Мій наÑтупний урок" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105 -msgid "Next" -msgstr "ÐаÑтупний" - -#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161 +#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114 msgid "" "\n" " This lesson overlaps with holidays and can't be edited.\n" @@ -900,52 +898,57 @@ msgstr "Фільтри" msgid "Filter results" msgstr "Результат фільтрів" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120 msgid "Statistics on absences, tardiness and remarks" msgstr "СтатиÑтика пропуÑків, запізнень та зауважень" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291 msgid "Absences" msgstr "ВідÑутноÑÑ‚Ñ–" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132 -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302 msgid "thereof" msgstr "отже" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141 msgid "Without Excuse Type" msgstr "Без Типу ПоÑÑненнÑ" -#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102 +#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313 msgid "Unexcused" msgstr "Ðеобґрунтоване" +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5 +#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9 +msgid "My students" +msgstr "Мої Ñтуденти" + #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12 #, python-format msgid "Students list: %(group)s" msgstr "СпиÑок Ñтудентів: %(group)s" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25 msgid "Select" msgstr "Обрати" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31 msgid "Toggle filters" msgstr "Перемикнути фільтри" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38 #, python-format msgid "" "CW %(week)s:\n" @@ -954,36 +957,35 @@ msgstr "" "ТЖ %(week)s:\n" " %(instance)s" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289 msgid "Unfold" msgstr "Розгорнути" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355 msgid "Visit lesson overview" msgstr "ПереглÑд Ð²Ñ–Ð´Ð²Ñ–Ð´ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÑ€Ð¾ÐºÑƒ" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393 msgid "unexcused" msgstr "непоÑÑнене" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396 msgid "Summed up tardiness" msgstr "Сумарні запізненнÑ" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126 msgid "Count of tardiness" msgstr "КількіÑÑ‚ÑŒ запізень" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431 msgid "No lessons available" msgstr "Ðемає доÑтупних уроків" -#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439 +#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434 msgid "" "\n" -" There are no lessons for the selected group or teacher in this " -"week.\n" +" There are no lessons for the selected group or teacher in this week.\n" " " msgstr "" "\n" @@ -1005,17 +1007,13 @@ msgstr "Редагувати тип поÑÑненнÑ" #: aleksis/apps/alsijil/templates/alsijil/group_role/warning.html:4 msgid "" "\n" -" This function should only be used to define alternatives to the default " -"excuse which also will be counted extra.\n" -" Don't use this to create a default excuse or if you don't divide between " -"different types of excuse.\n" +" This function should only be used to define alternatives to the default excuse which also will be counted extra.\n" +" Don't use this to create a default excuse or if you don't divide between different types of excuse.\n" " " msgstr "" "\n" -" Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтовуєтьÑÑ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð² до типового " -"поÑÑненнÑ, Ñке додатково буде враховане.\n" -" Ðе кориÑтуйтеÑÑ Ñ†Ð¸Ð¼ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð³Ð¾ поÑÑÐ½ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ Ñкщо не " -"розділÑєте на типи поÑÑнень.\n" +" Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтовуєтьÑÑ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð² до типового поÑÑненнÑ, Ñке додатково буде враховане.\n" +" Ðе кориÑтуйтеÑÑ Ñ†Ð¸Ð¼ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð³Ð¾ поÑÑÐ½ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ Ñкщо не розділÑєте на типи поÑÑнень.\n" " " #: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:6 @@ -1035,6 +1033,11 @@ msgstr "Редагувати додаткову позначку" msgid "Assign group role for %(group)s" msgstr "Призначити роль групи Ð´Ð»Ñ %(group)s" +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11 +#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18 +msgid "Assign group role" +msgstr "Призначити роль групи" + #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34 msgid "Assign" msgstr "Призначити" @@ -1089,14 +1092,12 @@ msgstr "Ðіхто не призначений." #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:41 msgid "" "\n" -" You can get some additional actions for each group role assignment if " -"you click on the name of the\n" +" You can get some additional actions for each group role assignment if you click on the name of the\n" " corresponding person.\n" " " msgstr "" "\n" -" Ви можете отримати деÑкі додаткові дії Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð»Ñ– " -"групи піÑÐ»Ñ ÐºÐ»Ñ–ÐºÑƒ\n" +" Ви можете отримати деÑкі додаткові дії Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð»Ñ– групи піÑÐ»Ñ ÐºÐ»Ñ–ÐºÑƒ\n" " на ім'Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñ— оÑоби.\n" " " @@ -1105,24 +1106,21 @@ msgid "Stop" msgstr "Стоп" #: aleksis/apps/alsijil/templates/alsijil/notifications/check.html:1 -msgid "" -"Please check if the following class register entries are complete and " -"correct:" -msgstr "" -"Перевірте, будь лаÑка, чи ці запиÑи клаÑного журналу повні та правильні:" +msgid "Please check if the following class register entries are complete and correct:" +msgstr "Перевірте, будь лаÑка, чи ці запиÑи клаÑного журналу повні та правильні:" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139 msgid "(e)" msgstr "(п)" #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143 msgid "(u)" msgstr "(н)" @@ -1146,8 +1144,8 @@ msgid "Unexcused absences" msgstr "Ðеобґрунтовані пропуÑки" #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138 msgid "Sum (e)" msgstr "Сума (п)" @@ -1164,14 +1162,28 @@ msgstr "РегулÑрні поÑÑÐ½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑків" msgid "Excuse types (not counted as absent)" msgstr "Типи поÑÑнень (не враховані Ñк пропуÑки)" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +msgid "My previous lesson" +msgstr "Мій попередній урок" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42 +msgid "My next lesson" +msgstr "Мій наÑтупний урок" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43 +msgid "Next" +msgstr "ÐаÑтупний" + +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7 #, python-format msgid "%(period)s. period" msgstr "%(period)s. урок" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80 #, python-format msgid "" "\n" @@ -1182,13 +1194,13 @@ msgstr "" " %(period_from)s.–%(period_to)s. уроки\n" " " -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10 -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139 msgid "Save" msgstr "Зберегти" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20 #, python-format msgid "" "\n" @@ -1199,7 +1211,7 @@ msgstr "" " Попередній урок %(subject)s\n" " " -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31 #, python-format msgid "" "\n" @@ -1210,11 +1222,11 @@ msgstr "" " ÐаÑтупний урок %(subject)s\n" " " -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11 msgid "Change history" msgstr "Змінити Ñ–Ñторію" -#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59 +#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58 msgid "Tardiness (in m)" msgstr "Ð—Ð°Ð¿Ñ–Ð·Ð½ÐµÐ½Ð½Ñ (хв)" @@ -1255,15 +1267,12 @@ msgstr "" #, python-format msgid "" "\n" -" This seating plan is taken from the parent group of " -"%(child_group)s.\n" -" If you want, you can take it over for your group and then " -"customize it.\n" +" This seating plan is taken from the parent group of %(child_group)s.\n" +" If you want, you can take it over for your group and then customize it.\n" " " msgstr "" "\n" -" Цей план розÑÐ°Ð´Ð¶ÐµÐ½Ð½Ñ Ð²Ð·Ñтий із батьківÑької групи " -"%(child_group)s.\n" +" Цей план розÑÐ°Ð´Ð¶ÐµÐ½Ð½Ñ Ð²Ð·Ñтий із батьківÑької групи %(child_group)s.\n" " При необхідноÑÑ‚Ñ–, Ви можете його налаштувати під Ñвою групу.\n" " " @@ -1283,13 +1292,11 @@ msgstr "Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ уроку немає плану розÑадженн #, python-format msgid "" "\n" -" Create a new seating plan for %(group)s (%(subject)s) in " -"%(room)s\n" +" Create a new seating plan for %(group)s (%(subject)s) in %(room)s\n" " " msgstr "" "\n" -" Створити новий план розÑÐ°Ð´Ð¶ÐµÐ½Ð½Ñ %(group)s (%(subject)s) у " -"%(room)s\n" +" Створити новий план розÑÐ°Ð´Ð¶ÐµÐ½Ð½Ñ %(group)s (%(subject)s) у %(room)s\n" " " #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/seating_plan.html:78 @@ -1347,27 +1354,27 @@ msgid "No students available." msgstr "Ðемає доÑтупних Ñтудентів." #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13 -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26 msgid "Primary group" msgstr "ОÑновна група" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16 msgid "Uncounted Absences" msgstr "Ðевраховані пропуÑки" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50 msgid "Sum" msgstr "Сума" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92 msgid "Regular excused" msgstr "РегулÑрні поÑÑненнÑ" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132 msgid "Show more details" msgstr "Показати більш детально" -#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131 +#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133 msgid "Details" msgstr "Деталі" @@ -1541,8 +1548,6 @@ msgstr "Так" #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:386 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:483 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:498 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:484 -#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:499 msgid "e" msgstr "п" @@ -1554,83 +1559,116 @@ msgstr "Тиждень" msgid "Notes" msgstr "Ðотатки" -#: aleksis/apps/alsijil/views.py:118 -msgid "" -"You either selected an invalid lesson or there is currently no lesson in " -"progress." +#: aleksis/apps/alsijil/views.py:114 +msgid "You either selected an invalid lesson or there is currently no lesson in progress." msgstr "Ðбо Ви обрали неправильний урок, або зараз уроку немає." -#: aleksis/apps/alsijil/views.py:151 -msgid "" -"You are not allowed to create a lesson documentation for a lesson in the " -"future." +#: aleksis/apps/alsijil/views.py:147 +msgid "You are not allowed to create a lesson documentation for a lesson in the future." msgstr "Вам не дозволено Ñтворювати учбові матеріали Ð´Ð»Ñ ÑƒÑ€Ð¾ÐºÑƒ у майбутньому." -#: aleksis/apps/alsijil/views.py:268 aleksis/apps/alsijil/views.py:266 +#: aleksis/apps/alsijil/views.py:264 msgid "The lesson documentation has been saved." msgstr "Учбовий матеріал збережений." -#: aleksis/apps/alsijil/views.py:302 aleksis/apps/alsijil/views.py:300 +#: aleksis/apps/alsijil/views.py:298 msgid "The personal notes have been saved." msgstr "ОÑобиÑÑ‚Ñ– нотатки збережені." -#: aleksis/apps/alsijil/views.py:1119 aleksis/apps/alsijil/views.py:1079 +#: aleksis/apps/alsijil/views.py:658 +#, fuzzy +#| msgid "Generate printout" +msgid "Generate full register printout for {}" +msgstr "Підготувати Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ" + +#: aleksis/apps/alsijil/views.py:659 +#, fuzzy +#| msgid "Generate printout" +msgid "Generate full register printout …" +msgstr "Підготувати Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ" + +#: aleksis/apps/alsijil/views.py:660 +#, fuzzy +#| msgid "The personal note has been deleted." +msgid "The printout has been generated successfully." +msgstr "ОÑобиÑта нотатка видалена." + +#: aleksis/apps/alsijil/views.py:661 +msgid "There was a problem while generating the printout." +msgstr "" + +#: aleksis/apps/alsijil/views.py:664 +msgid "Download PDF" +msgstr "" + +#: aleksis/apps/alsijil/views.py:1030 msgid "The absence has been saved." msgstr "ПропуÑк збережений." -#: aleksis/apps/alsijil/views.py:1140 aleksis/apps/alsijil/views.py:1100 +#: aleksis/apps/alsijil/views.py:1051 msgid "The personal note has been deleted." msgstr "ОÑобиÑта нотатка видалена." -#: aleksis/apps/alsijil/views.py:1162 aleksis/apps/alsijil/views.py:1122 +#: aleksis/apps/alsijil/views.py:1074 msgid "The extra mark has been created." msgstr "Додаткова позначка Ñторена." -#: aleksis/apps/alsijil/views.py:1174 aleksis/apps/alsijil/views.py:1134 +#: aleksis/apps/alsijil/views.py:1086 msgid "The extra mark has been saved." msgstr "Додаткова позначка збережена." -#: aleksis/apps/alsijil/views.py:1185 aleksis/apps/alsijil/views.py:1145 +#: aleksis/apps/alsijil/views.py:1097 msgid "The extra mark has been deleted." msgstr "Додаткова позначка видалена." -#: aleksis/apps/alsijil/views.py:1206 aleksis/apps/alsijil/views.py:1166 +#: aleksis/apps/alsijil/views.py:1119 msgid "The excuse type has been created." msgstr "Тип поÑÑÐ½ÐµÐ½Ð½Ñ Ñтворений." -#: aleksis/apps/alsijil/views.py:1218 aleksis/apps/alsijil/views.py:1178 +#: aleksis/apps/alsijil/views.py:1131 msgid "The excuse type has been saved." msgstr "Тип поÑÑÐ½ÐµÐ½Ð½Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹." -#: aleksis/apps/alsijil/views.py:1229 aleksis/apps/alsijil/views.py:1189 +#: aleksis/apps/alsijil/views.py:1142 msgid "The excuse type has been deleted." msgstr "Тип поÑÑÐ½ÐµÐ½Ð½Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¸Ð¹." -#: aleksis/apps/alsijil/views.py:1250 aleksis/apps/alsijil/views.py:1210 +#: aleksis/apps/alsijil/views.py:1164 msgid "The group role has been created." msgstr "Роль групи Ñтворена." -#: aleksis/apps/alsijil/views.py:1262 aleksis/apps/alsijil/views.py:1222 +#: aleksis/apps/alsijil/views.py:1176 msgid "The group role has been saved." msgstr "Роль групи збережена." -#: aleksis/apps/alsijil/views.py:1273 aleksis/apps/alsijil/views.py:1233 +#: aleksis/apps/alsijil/views.py:1187 msgid "The group role has been deleted." msgstr "Роль групи видалена." -#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338 -#: aleksis/apps/alsijil/views.py:1266 aleksis/apps/alsijil/views.py:1298 +#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253 msgid "The group role has been assigned." msgstr "Роль групи призначена." -#: aleksis/apps/alsijil/views.py:1357 aleksis/apps/alsijil/views.py:1317 +#: aleksis/apps/alsijil/views.py:1272 msgid "The group role assignment has been saved." msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð»Ñ– групи збережене." -#: aleksis/apps/alsijil/views.py:1378 aleksis/apps/alsijil/views.py:1338 +#: aleksis/apps/alsijil/views.py:1293 msgid "The group role assignment has been stopped." msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð»Ñ– групи зупинене." -#: aleksis/apps/alsijil/views.py:1391 aleksis/apps/alsijil/views.py:1351 +#: aleksis/apps/alsijil/views.py:1306 msgid "The group role assignment has been deleted." msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð»Ñ– групи видалене." + +#~ msgid "Current lesson" +#~ msgstr "Поточний урок" + +#~ msgid "Current week" +#~ msgstr "Поточний тиждень" + +#~ msgid "My overview" +#~ msgstr "Мій оглÑд" + +#~ msgid "Manage group roles" +#~ msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð»Ñми групи" diff --git a/aleksis/apps/alsijil/migrations/0020_documentation_extramark_colour_bg_and_more.py b/aleksis/apps/alsijil/migrations/0020_documentation_extramark_colour_bg_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..e83ef5e2205280af85df6b5674caf32e10152ee9 --- /dev/null +++ b/aleksis/apps/alsijil/migrations/0020_documentation_extramark_colour_bg_and_more.py @@ -0,0 +1,92 @@ +# Generated by Django 4.2.10 on 2024-04-18 14:48 + +import colorfield.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0061_remove_group_additional_fields'), + ('kolego', '0003_refactor_absence'), + ('cursus', '0003_drop_site'), + ('alsijil', '0019_drop_sites'), + ] + + operations = [ + migrations.CreateModel( + name='Documentation', + fields=[ + ('calendarevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.calendarevent')), + ('topic', models.CharField(blank=True, max_length=255, verbose_name='Lesson Topic')), + ('homework', models.CharField(blank=True, max_length=255, verbose_name='Homework')), + ('group_note', models.CharField(blank=True, max_length=255, verbose_name='Group Note')), + ('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='documentations', to='cursus.course', verbose_name='Course')), + ('subject', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='cursus.subject', verbose_name='Subject')), + ('teachers', models.ManyToManyField(blank=True, null=True, related_name='documentations_as_teacher', to='core.person', verbose_name='Teachers')), + ], + options={ + 'verbose_name': 'Documentation', + 'verbose_name_plural': 'Documentations', + }, + bases=('core.calendarevent',), + ), + migrations.AddField( + model_name='extramark', + name='colour_bg', + field=colorfield.fields.ColorField(blank=True, default='', image_field=None, max_length=25, samples=None, verbose_name='Background colour'), + ), + migrations.AddField( + model_name='extramark', + name='colour_fg', + field=colorfield.fields.ColorField(blank=True, default='', image_field=None, max_length=25, samples=None, verbose_name='Foreground colour'), + ), + migrations.AddField( + model_name='extramark', + name='show_in_coursebook', + field=models.BooleanField(default=True, verbose_name='Show in coursebook'), + ), + migrations.CreateModel( + name='ParticipationStatus', + fields=[ + ('calendarevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.calendarevent')), + ('absent', models.BooleanField(verbose_name='Absent')), + ('absence_reason', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='kolego.absencereason', verbose_name='Absence Reason')), + ('base_absence', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='absences', to='kolego.absence', verbose_name='Base Absence')), + ('groups_of_person', models.ManyToManyField(related_name='+', to='core.group', verbose_name='Groups of Person')), + ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='participations', to='core.person', verbose_name='Person')), + ('related_documentation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='participations', to='alsijil.documentation', verbose_name='Documentation')), + ], + options={ + 'verbose_name': 'Participation Status', + 'verbose_name_plural': 'Participation Status', + 'ordering': ['related_documentation', 'person__last_name', 'person__first_name'], + }, + bases=('core.calendarevent',), + ), + migrations.CreateModel( + name='NewPersonalNote', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('managed_by_app_label', models.CharField(blank=True, editable=False, max_length=255, verbose_name='App label of app responsible for managing this instance')), + ('extended_data', models.JSONField(default=dict, editable=False)), + ('note', models.TextField(blank=True, verbose_name='Note')), + ('documentation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='personal_notes', to='alsijil.documentation', verbose_name='Documentation')), + ('extra_mark', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='alsijil.extramark', verbose_name='Extra Mark')), + ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='new_personal_notes', to='core.person', verbose_name='Person')), + ], + options={ + 'verbose_name': 'Personal Note', + 'verbose_name_plural': 'Personal Notes', + }, + ), + migrations.AddConstraint( + model_name='participationstatus', + constraint=models.UniqueConstraint(fields=('related_documentation', 'person'), name='unique_participation_status_per_documentation'), + ), + migrations.AddConstraint( + model_name='newpersonalnote', + constraint=models.CheckConstraint(check=models.Q(models.Q(('note', ''), _negated=True), ('extra_mark__isnull', False), _connector='OR'), name='unique_absence_per_documentation'), + ), + ] diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index 17a2552567df74f80b4c7aecfcf5465f7dd0bc76..332c428fa7eff2095dc3ec83eb013ee759bab42b 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -1,10 +1,12 @@ -from datetime import date +from datetime import date, datetime from typing import Optional, Union from urllib.parse import urlparse from django.db import models +from django.db.models import QuerySet from django.db.models.constraints import CheckConstraint from django.db.models.query_utils import Q +from django.http import HttpRequest from django.urls import reverse from django.utils.formats import date_format from django.utils.translation import gettext_lazy as _ @@ -31,10 +33,14 @@ from aleksis.apps.alsijil.managers import ( ) from aleksis.apps.chronos.managers import GroupPropertiesMixin from aleksis.apps.chronos.mixins import WeekRelatedMixin -from aleksis.apps.chronos.models import Event, ExtraLesson, LessonPeriod, TimePeriod +from aleksis.apps.chronos.models import Event, ExtraLesson, LessonEvent, LessonPeriod, TimePeriod +from aleksis.apps.chronos.util.format import format_m2m +from aleksis.apps.cursus.models import Course, Subject +from aleksis.apps.kolego.models import Absence as KolegoAbsence +from aleksis.apps.kolego.models import AbsenceReason from aleksis.core.data_checks import field_validation_data_check_factory from aleksis.core.mixins import ExtensibleModel, GlobalPermissionModel -from aleksis.core.models import SchoolTerm +from aleksis.core.models import CalendarEvent, Group, SchoolTerm from aleksis.core.util.core_helpers import get_site_preferences from aleksis.core.util.model_helpers import ICONS @@ -426,6 +432,11 @@ class ExtraMark(ExtensibleModel): short_name = models.CharField(max_length=255, unique=True, verbose_name=_("Short name")) name = models.CharField(max_length=255, unique=True, verbose_name=_("Name")) + colour_fg = ColorField(verbose_name=_("Foreground colour"), blank=True) + colour_bg = ColorField(verbose_name=_("Background colour"), blank=True) + + show_in_coursebook = models.BooleanField(default=True, verbose_name=_("Show in coursebook")) + def __str__(self): return f"{self.name}" @@ -439,6 +450,242 @@ class ExtraMark(ExtensibleModel): verbose_name_plural = _("Extra marks") +class Documentation(CalendarEvent): + """A documentation on teaching content in a freely choosable time frame. + + Non-personal, includes the topic and homework of the lesson. + """ + + # FIXME: DataCheck + + course = models.ForeignKey( + Course, + models.PROTECT, + related_name="documentations", + blank=True, + null=True, + verbose_name=_("Course"), + ) + + subject = models.ForeignKey( + Subject, models.PROTECT, related_name="+", blank=True, null=True, verbose_name=_("Subject") + ) + + teachers = models.ManyToManyField( + "core.Person", + related_name="documentations_as_teacher", + blank=True, + null=True, + verbose_name=_("Teachers"), + ) + + topic = models.CharField(verbose_name=_("Lesson Topic"), max_length=255, blank=True) + homework = models.CharField(verbose_name=_("Homework"), max_length=255, blank=True) + group_note = models.CharField(verbose_name=_("Group Note"), max_length=255, blank=True) + + def get_subject(self) -> str: + if self.subject: + return self.subject + if self.amends: + if self.amends.subject: + return self.amends.subject + if self.amends.course: + return self.amends.course.subject + if self.course: + return self.course.subject + + def get_groups(self) -> QuerySet[Group]: + if self.amends: + return self.amends.actual_groups + if self.course: + return self.course.groups.all() + + def __str__(self) -> str: + start_datetime = CalendarEvent.value_start_datetime(self) + end_datetime = CalendarEvent.value_end_datetime(self) + return ( + f"{format_m2m(self.get_groups())} {self.get_subject()}" + + f" {start_datetime} - {end_datetime}" + ) + + class Meta: + verbose_name = _("Documentation") + verbose_name_plural = _("Documentations") + # should check if object has either course or amends, + # which is not possible via constraint, because amends is not local to Documentation + + @classmethod + def get_for_coursebook( + cls, + own: bool, + date_start: datetime, + date_end: datetime, + request: HttpRequest, + obj_type: Optional[str] = None, + obj_id: Optional[str] = None, + incomplete: Optional[bool] = False, + ) -> list: + """Get all the documentations for an object and a time frame. + + obj_type may be one of TEACHER, GROUP, ROOM, COURSE + """ + + # 1. Find all LessonEvents for all Lessons of this Course in this date range + event_params = { + "own": own, + } + if obj_type is not None and obj_id is not None: + event_params.update( + { + "type": obj_type, + "id": obj_id, + } + ) + + events = LessonEvent.get_single_events( + date_start, + date_end, + request, + event_params, + with_reference_object=True, + ) + + # 2. For each lessonEvent → check if there is a documentation + # if so, add the documentation to a list, if not, create a new one + docs = [] + for event in events: + if incomplete and event["STATUS"] == "CANCELLED": + continue + + event_reference_obj = event["REFERENCE_OBJECT"] + existing_documentations = event_reference_obj.amended_by.filter( + datetime_start=event["DTSTART"].dt, + datetime_end=event["DTEND"].dt, + ) + + if existing_documentations.exists(): + doc = existing_documentations.first() + if incomplete and doc.topic: + continue + docs.append(doc) + else: + if event_reference_obj.amends: + if event_reference_obj.course: + course = event_reference_obj.course + else: + course = event_reference_obj.amends.course + + if event_reference_obj.subject: + subject = event_reference_obj.subject + else: + subject = event_reference_obj.amends.subject + else: + course, subject = event_reference_obj.course, event_reference_obj.subject + + docs.append( + cls( + pk=f"DUMMY;{event_reference_obj.id};{event['DTSTART'].dt.isoformat()};{event['DTEND'].dt.isoformat()}", + amends=event_reference_obj, + course=course, + subject=subject, + datetime_start=event["DTSTART"].dt, + datetime_end=event["DTEND"].dt, + ) + ) + + return docs + + +class ParticipationStatus(CalendarEvent): + """A participation or absence record about a single person. + + Used in the class register to note participation or absence of a student + in a documented unit (e.g. a single lesson event or a custom time frame; see Documentation). + """ + + # FIXME: DataChecks + + person = models.ForeignKey( + "core.Person", models.CASCADE, related_name="participations", verbose_name=_("Person") + ) + groups_of_person = models.ManyToManyField( + "core.Group", related_name="+", verbose_name=_("Groups of Person") + ) + + related_documentation = models.ForeignKey( + Documentation, + models.CASCADE, + related_name="participations", + verbose_name=_("Documentation"), + ) + + # Absence part + absent = models.BooleanField(verbose_name=_("Absent")) + absence_reason = models.ForeignKey( + AbsenceReason, verbose_name=_("Absence Reason"), on_delete=models.PROTECT + ) + + base_absence = models.ForeignKey( + KolegoAbsence, + models.SET_NULL, + blank=True, + null=True, + related_name="absences", + verbose_name=_("Base Absence"), + ) + + def __str__(self) -> str: + return f"{self.related_documentation}, {self.person}" + + class Meta: + verbose_name = _("Participation Status") + verbose_name_plural = _("Participation Status") + ordering = [ + "related_documentation", + "person__last_name", + "person__first_name", + ] + constraints = [ + models.UniqueConstraint( + fields=("related_documentation", "person"), + name="unique_participation_status_per_documentation", + ), + ] + + +class NewPersonalNote(ExtensibleModel): + person = models.ForeignKey( + "core.Person", models.CASCADE, related_name="new_personal_notes", verbose_name=_("Person") + ) + + documentation = models.ForeignKey( + Documentation, + models.CASCADE, + related_name="personal_notes", + verbose_name=_("Documentation"), + blank=True, + null=True, + ) + + note = models.TextField(blank=True, verbose_name=_("Note")) + extra_mark = models.ForeignKey( + ExtraMark, on_delete=models.PROTECT, blank=True, null=True, verbose_name=_("Extra Mark") + ) + + def __str__(self) -> str: + return f"{self.person}, {self.note}, {self.extra_mark}" + + class Meta: + verbose_name = _("Personal Note") + verbose_name_plural = _("Personal Notes") + constraints = [ + models.CheckConstraint( + check=~Q(note="") | Q(extra_mark__isnull=False), + name="unique_absence_per_documentation", + ), + ] + + class GroupRole(ExtensibleModel): data_checks = [field_validation_data_check_factory("alsijil", "GroupRole", "icon")] diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py index 2fd34fa7fc4f802a52ead1d2d0291789be4fb9ce..b00d9277e507e284130340b84cbbca8c07597d1f 100644 --- a/aleksis/apps/alsijil/preferences.py +++ b/aleksis/apps/alsijil/preferences.py @@ -2,7 +2,7 @@ from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ from dynamic_preferences.preferences import Section -from dynamic_preferences.types import BooleanPreference, IntegerPreference +from dynamic_preferences.types import BooleanPreference, ChoicePreference, IntegerPreference from aleksis.core.registries import person_preferences_registry, site_preferences_registry @@ -157,3 +157,27 @@ class DefaultLessonDocumentationFilter(BooleanPreference): name = "default_lesson_documentation_filter" default = True verbose_name = _("Filter lessons by existence of their lesson documentation on default") + + +@site_preferences_registry.register +class AllowEditFutureDocumentations(ChoicePreference): + """Time range for which documentations may be edited.""" + + section = alsijil + name = "allow_edit_future_documentations" + default = "current_day" + choices = ( + ("all", _("Allow editing of all future documentations")), + ( + "current_day", + _("Allow editing of all documentations up to and including those on the current day"), + ), + ( + "current_time", + _( + "Allow editing of all documentations up to and " + "including those on the current date and time" + ), + ), + ) + verbose_name = _("Set time range for which documentations may be edited") diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py index e9011c6c2b33ed58a21b6412f6c7e366b1b5e49e..b7fa4d04a23df031ff479870c17cf5f1a3d53446 100644 --- a/aleksis/apps/alsijil/rules.py +++ b/aleksis/apps/alsijil/rules.py @@ -11,12 +11,21 @@ from aleksis.core.util.predicates import ( ) from .util.predicates import ( + can_edit_documentation, + can_view_any_documentation, + can_view_documentation, has_lesson_group_object_perm, has_person_group_object_perm, has_personal_note_group_perm, + is_course_group_owner, + is_course_member, + is_course_teacher, is_group_member, is_group_owner, is_group_role_assignment_group_owner, + is_in_allowed_time_range, + is_lesson_event_group_owner, + is_lesson_event_teacher, is_lesson_original_teacher, is_lesson_parent_group_owner, is_lesson_participant, @@ -352,3 +361,56 @@ view_register_objects_list_predicate = has_person & ( | has_global_perm("alsijil.view_full_register") ) add_perm("alsijil.view_register_objects_list_rule", view_register_objects_list_predicate) + +view_documentation_predicate = has_person & ( + has_global_perm("alsijil.view_documentation") | can_view_documentation +) +add_perm("alsijil.view_documentation_rule", view_documentation_predicate) + +view_documentations_for_course_predicate = has_person & ( + has_global_perm("alsijil.view_documentation") + | is_course_teacher + | is_course_member + | is_course_group_owner +) +add_perm("alsijil.view_documentations_for_course_rule", view_documentations_for_course_predicate) + +view_documentations_for_group_predicate = has_person & ( + has_global_perm("alsijil.view_documentation") + | is_group_owner + | is_group_member + | is_parent_group_owner +) +add_perm("alsijil.view_documentations_for_group_rule", view_documentations_for_group_predicate) + +view_documentations_menu_predicate = has_person & ( + has_global_perm("alsijil.view_documentation") | can_view_any_documentation +) +add_perm("alsijil.view_documentations_menu_rule", view_documentations_menu_predicate) + +view_documentations_for_teacher_predicate = has_person & ( + has_global_perm("alsijil.view_documentation") | is_current_person +) +add_perm("alsijil.view_documentations_for_teacher_rule", view_documentations_for_teacher_predicate) + +add_documentation_for_course_predicate = has_person & ( + has_global_perm("alsijil.add_documentation") | is_course_teacher +) +add_perm("alsijil.add_documentation_for_course_rule", add_documentation_for_course_predicate) + +add_documentation_for_lesson_event_predicate = has_person & ( + has_global_perm("alsijil.add_documentation") + | is_lesson_event_teacher + | is_lesson_event_group_owner +) +add_perm( + "alsijil.add_documentation_for_lesson_event_rule", add_documentation_for_lesson_event_predicate +) + +edit_documentation_predicate = ( + has_person + & (has_global_perm("alsijil.change_documentation") | can_edit_documentation) + & is_in_allowed_time_range +) +add_perm("alsijil.edit_documentation_rule", edit_documentation_predicate) +add_perm("alsijil.delete_documentation_rule", edit_documentation_predicate) diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..aae1b70603f0b0e5c738d81467d31f3844f13a86 --- /dev/null +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -0,0 +1,121 @@ +from datetime import datetime + +from django.core.exceptions import PermissionDenied +from django.db.models.query_utils import Q + +import graphene + +from aleksis.apps.cursus.models import Course +from aleksis.apps.cursus.schema import CourseType +from aleksis.core.models import Group, Person +from aleksis.core.schema.base import FilterOrderList +from aleksis.core.schema.group import GroupType +from aleksis.core.util.core_helpers import has_person + +from ..models import Documentation +from .documentation import ( + DocumentationBatchCreateOrUpdateMutation, + DocumentationType, +) + + +class Query(graphene.ObjectType): + documentations = FilterOrderList(DocumentationType) + documentations_by_course_id = FilterOrderList( + DocumentationType, course_id=graphene.ID(required=True) + ) + documentations_for_coursebook = FilterOrderList( + DocumentationType, + own=graphene.Boolean(required=True), + obj_type=graphene.String(required=False), + obj_id=graphene.ID(required=False), + date_start=graphene.Date(required=True), + date_end=graphene.Date(required=True), + incomplete=graphene.Boolean(required=False), + ) + + groups_by_person = FilterOrderList(GroupType, person=graphene.ID()) + courses_of_person = FilterOrderList(CourseType, person=graphene.ID()) + + def resolve_documentations_by_course_id(root, info, course_id, **kwargs): + documentations = Documentation.objects.filter( + Q(course__pk=course_id) | Q(amends__course__pk=course_id) + ) + return documentations + + def resolve_documentations_for_coursebook( + root, + info, + own, + date_start, + date_end, + obj_type=None, + obj_id=None, + incomplete=False, + **kwargs, + ): + datetime_start = datetime.combine(date_start, datetime.min.time()) + datetime_end = datetime.combine(date_end, datetime.max.time()) + + if ( + ( + obj_type == "COURSE" + and not info.context.user.has_perm( + "alsijil.view_documentations_for_course_rule", Course.objects.get(id=obj_id) + ) + ) + or ( + obj_type == "GROUP" + and not info.context.user.has_perm( + "alsijil.view_documentations_for_group_rule", Group.objects.get(id=obj_id) + ) + ) + or ( + obj_type == "TEACHER" + and not info.context.user.has_perm( + "alsijil.view_documentations_for_teacher_rule", Person.objects.get(id=obj_id) + ) + ) + ): + raise PermissionDenied() + + return Documentation.get_for_coursebook( + own, datetime_start, datetime_end, info.context, obj_type, obj_id, incomplete + ) + + @staticmethod + def resolve_groups_by_person(root, info, person=None): + if person: + person = Person.objects.get(pk=person) + if not info.context.user.has_perm("core.view_person_rule", person): + raise PermissionDenied() + elif has_person(info.context.user): + person = info.context.user.person + else: + raise PermissionDenied() + + return Group.objects.filter( + Q(members=person) | Q(owners=person) | Q(parent_groups__owners=person) + ) + + @staticmethod + def resolve_courses_of_person(root, info, person=None): + if person: + person = Person.objects.get(pk=person) + if not info.context.user.has_perm("core.view_person_rule", person): + raise PermissionDenied() + elif has_person(info.context.user): + person = info.context.user.person + else: + raise PermissionDenied() + + return Course.objects.filter( + Q(teachers=person) + | Q(groups__members=person) + | Q(groups__owners=person) + | Q(groups__parent_groups__owners=person) + ) + + +class Mutation(graphene.ObjectType): + create_or_update_documentations = DocumentationBatchCreateOrUpdateMutation.Field() diff --git a/aleksis/apps/alsijil/schema/documentation.py b/aleksis/apps/alsijil/schema/documentation.py new file mode 100644 index 0000000000000000000000000000000000000000..3225db34e7c146c4eadcf34efcc11936f5df7311 --- /dev/null +++ b/aleksis/apps/alsijil/schema/documentation.py @@ -0,0 +1,195 @@ +from datetime import datetime + +from django.core.exceptions import PermissionDenied +from django.utils.timezone import localdate, localtime + +import graphene +from graphene_django.types import DjangoObjectType +from guardian.shortcuts import get_objects_for_user +from reversion import create_revision, set_comment, set_user + +from aleksis.apps.alsijil.util.predicates import can_edit_documentation, is_in_allowed_time_range +from aleksis.apps.chronos.models import LessonEvent +from aleksis.apps.chronos.schema import LessonEventType +from aleksis.apps.cursus.models import Subject +from aleksis.apps.cursus.schema import CourseType, SubjectType +from aleksis.core.models import Person +from aleksis.core.schema.base import ( + DjangoFilterMixin, + PermissionsTypeMixin, +) +from aleksis.core.util.core_helpers import get_site_preferences + +from ..models import Documentation + + +class DocumentationType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): + class Meta: + model = Documentation + fields = ( + "id", + "course", + "amends", + "subject", + "topic", + "homework", + "group_note", + "datetime_start", + "datetime_end", + "date_start", + "date_end", + "teachers", + ) + filter_fields = { + "id": ["exact", "lte", "gte"], + "course__name": ["exact"], + } + + course = graphene.Field(CourseType, required=False) + amends = graphene.Field(lambda: LessonEventType, required=False) + subject = graphene.Field(SubjectType, required=False) + + future_notice = graphene.Boolean(required=False) + + old_id = graphene.ID(required=False) + + @staticmethod + def resolve_teachers(root: Documentation, info, **kwargs): + if not str(root.pk).startswith("DUMMY") and hasattr(root, "teachers"): + return root.teachers + elif root.amends.amends: + if root.amends.teachers: + return root.amends.teachers + else: + return root.amends.amends.teachers + return root.amends.teachers + + @staticmethod + def resolve_future_notice(root: Documentation, info, **kwargs): + """Show whether the user can't edit the documentation because it's in the future.""" + return not is_in_allowed_time_range(info.context.user, root) and can_edit_documentation( + info.context.user, root + ) + + @classmethod + def get_queryset(cls, queryset, info): + return get_objects_for_user(info.context.user, "alsijil.view_documentation", queryset) + + +class DocumentationInputType(graphene.InputObjectType): + id = graphene.ID(required=True) + course = graphene.ID(required=False) + subject = graphene.ID(required=False) + teachers = graphene.List(graphene.ID, required=False) + + topic = graphene.String(required=False) + homework = graphene.String(required=False) + group_note = graphene.String(required=False) + + +class DocumentationBatchCreateOrUpdateMutation(graphene.Mutation): + class Arguments: + input = graphene.List(DocumentationInputType) + + documentations = graphene.List(DocumentationType) + + @classmethod + def create_or_update(cls, info, doc): + _id = doc.id + + # Sadly, we can't use the update_or_create method since create_defaults + # is only introduced in Django 5.0 + if _id.startswith("DUMMY"): + dummy, lesson_event_id, datetime_start_iso, datetime_end_iso = _id.split(";") + lesson_event = LessonEvent.objects.get(id=lesson_event_id) + + datetime_start = datetime.fromisoformat(datetime_start_iso).astimezone( + lesson_event.timezone + ) + datetime_end = datetime.fromisoformat(datetime_end_iso).astimezone( + lesson_event.timezone + ) + + if info.context.user.has_perm( + "alsijil.add_documentation_for_lesson_event_rule", lesson_event + ) and ( + get_site_preferences()["alsijil__allow_edit_future_documentations"] == "all" + or ( + get_site_preferences()["alsijil__allow_edit_future_documentations"] + == "current_day" + and datetime_start.date() <= localdate() + ) + or ( + get_site_preferences()["alsijil__allow_edit_future_documentations"] + == "current_time" + and datetime_start <= localtime() + ) + ): + if lesson_event.amends: + if lesson_event.course: + course = lesson_event.course + else: + course = lesson_event.amends.course + + if lesson_event.subject: + subject = lesson_event.subject + else: + subject = lesson_event.amends.subject + + if lesson_event.teachers: + teachers = lesson_event.teachers + else: + teachers = lesson_event.amends.teachers + else: + course, subject, teachers = ( + lesson_event.course, + lesson_event.subject, + lesson_event.teachers, + ) + + obj = Documentation.objects.create( + datetime_start=datetime_start, + datetime_end=datetime_end, + amends=lesson_event, + course=course, + subject=subject, + topic=doc.topic or "", + homework=doc.homework or "", + group_note=doc.group_note or "", + ) + if doc.teachers is not None: + obj.teachers.add(*doc.teachers) + else: + obj.teachers.set(teachers.all()) + obj.save() + return obj + raise PermissionDenied() + else: + obj = Documentation.objects.get(id=_id) + + if not info.context.user.has_perm("alsijil.edit_documentation_rule", obj): + raise PermissionDenied() + + if doc.topic is not None: + obj.topic = doc.topic + if doc.homework is not None: + obj.homework = doc.homework + if doc.group_note is not None: + obj.group_note = doc.group_note + + if doc.subject is not None: + obj.subject = Subject.objects.get(pk=doc.subject) + if doc.teachers is not None: + obj.teachers.set(Person.objects.filter(pk__in=doc.teachers)) + + obj.save() + return obj + + @classmethod + def mutate(cls, root, info, input): # noqa + with create_revision(): + set_user(info.context.user) + set_comment("Updated in coursebook") + objs = [cls.create_or_update(info, doc) for doc in input] + + return DocumentationBatchCreateOrUpdateMutation(documentations=objs) diff --git a/aleksis/apps/alsijil/urls.py b/aleksis/apps/alsijil/urls.py index b06aebd352774727bb6bddca9dec8a0e28846a69..edc0b4fa81cfb50e1f268d9dd21b3d9dda2c033a 100644 --- a/aleksis/apps/alsijil/urls.py +++ b/aleksis/apps/alsijil/urls.py @@ -3,52 +3,6 @@ from django.urls import path from . import views urlpatterns = [ - path("lesson", views.register_object, {"model": "lesson"}, name="lesson_period"), - path( - "lesson/<int:year>/<int:week>/<int:id_>", - views.register_object, - {"model": "lesson"}, - name="lesson_period", - ), - path( - "extra_lesson/<int:id_>/", - views.register_object, - {"model": "extra_lesson"}, - name="extra_lesson", - ), - path( - "event/<int:id_>/", - views.register_object, - {"model": "event"}, - name="event", - ), - path("week/", views.week_view, name="week_view"), - path("week/<int:year>/<int:week>/", views.week_view, name="week_view_by_week"), - path("week/year/cw/", views.week_view, name="week_view_placeholders"), - path("week/<str:type_>/<int:id_>/", views.week_view, name="week_view"), - path( - "week/year/cw/<str:type_>/<int:id_>/", - views.week_view, - name="week_view_placeholders", - ), - path( - "week/<int:year>/<int:week>/<str:type_>/<int:id_>/", - views.week_view, - name="week_view_by_week", - ), - path("print/group/<int:id_>", views.full_register_group, name="full_register_group"), - path("groups/", views.my_groups, name="my_groups"), - path("groups/<int:pk>/", views.StudentsList.as_view(), name="students_list"), - path("persons/", views.my_students, name="my_students"), - path("persons/<int:id_>/", views.overview_person, name="overview_person"), - path("me/", views.overview_person, name="overview_me"), - path( - "notes/<int:pk>/delete/", - views.DeletePersonalNoteView.as_view(), - name="delete_personal_note", - ), - path("absence/new/<int:id_>/", views.register_absence, name="register_absence"), - path("absence/new/", views.register_absence, name="register_absence"), path("extra_marks/", views.ExtraMarkListView.as_view(), name="extra_marks"), path( "extra_marks/create/", @@ -65,22 +19,6 @@ urlpatterns = [ views.ExtraMarkDeleteView.as_view(), name="delete_extra_mark", ), - path("excuse_types/", views.ExcuseTypeListView.as_view(), name="excuse_types"), - path( - "excuse_types/create/", - views.ExcuseTypeCreateView.as_view(), - name="create_excuse_type", - ), - path( - "excuse_types/<int:pk>/edit/", - views.ExcuseTypeEditView.as_view(), - name="edit_excuse_type", - ), - path( - "excuse_types/<int:pk>/delete/", - views.ExcuseTypeDeleteView.as_view(), - name="delete_excuse_type", - ), path("group_roles/", views.GroupRoleListView.as_view(), name="group_roles"), path("group_roles/create/", views.GroupRoleCreateView.as_view(), name="create_group_role"), path( @@ -128,5 +66,4 @@ urlpatterns = [ views.AssignGroupRoleMultipleView.as_view(), name="assign_group_role_multiple", ), - path("all/", views.AllRegisterObjectsView.as_view(), name="all_register_objects"), ] diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py index c3a450ec9e6b657370c5b36f598e9224e6472287..fe7746948d807f3afede2a8fd3a11b41358965f5 100644 --- a/aleksis/apps/alsijil/util/predicates.py +++ b/aleksis/apps/alsijil/util/predicates.py @@ -1,14 +1,18 @@ from typing import Any, Union from django.contrib.auth.models import User +from django.db.models import Q +from django.utils.timezone import localdate, localtime from rules import predicate -from aleksis.apps.chronos.models import Event, ExtraLesson, LessonPeriod +from aleksis.apps.chronos.models import Event, ExtraLesson, LessonEvent, LessonPeriod +from aleksis.apps.cursus.models import Course from aleksis.core.models import Group, Person +from aleksis.core.util.core_helpers import get_site_preferences from aleksis.core.util.predicates import check_object_permission -from ..models import PersonalNote +from ..models import Documentation, PersonalNote @predicate @@ -290,3 +294,165 @@ def is_group_role_assignment_group_owner(user: User, obj: Union[Group, Person]) def is_owner_of_any_group(user: User, obj): """Predicate which checks if the person is group owner of any group.""" return Group.objects.filter(owners=user.person).exists() + + +@predicate +def is_course_teacher(user: User, obj: Course): + """Predicate for teachers of a course. + + Checks whether the person linked to the user is a teacher in the course. + """ + if obj: + return user.person in obj.teachers.all() + return False + + +@predicate +def is_lesson_event_teacher(user: User, obj: LessonEvent): + """Predicate for teachers of a lesson event. + + Checks whether the person linked to the user is a teacher in the lesson event. + """ + if obj: + return user.person in obj.all_teachers + return False + + +@predicate +def is_course_member(user: User, obj: Course): + """Predicate for members of a course. + + Checks whether the person linked to the user is a member in the course. + """ + if obj: + for g in obj.groups.all(): + if user.person in g.members.all(): + return True + return False + + +@predicate +def is_course_group_owner(user: User, obj: Course): + """Predicate for group owners of a course. + + Checks whether the person linked to the user is a owner of any group + (or their respective parent groups) linked to the course. + """ + if obj: + for g in obj.groups.all(): + if user.person in g.owners.all(): + return True + for pg in g.parent_groups.all(): + if user.person in pg.owners.all(): + return True + return False + + +@predicate +def is_lesson_event_member(user: User, obj: LessonEvent): + """Predicate for members of a lesson event. + + Checks whether the person linked to the user is a member in the lesson event, + or a members of the course, if the lesson event has one. + """ + if obj: + for g in obj.groups.all(): + if user.person in g.members.all(): + return True + + return False + + +@predicate +def is_lesson_event_group_owner(user: User, obj: LessonEvent): + """Predicate for group owners of a lesson event. + + Checks whether the person linked to the user is a owner of any group + (or their respective parent groups) linked to the lesson event, + or a owner of any group linked to the course, if the lesson event has one. + """ + if obj: + for g in obj.groups.all(): + if user.person in g.owners.all(): + return True + for pg in g.parent_groups.all(): + if user.person in pg.owners.all(): + return True + return False + + +@predicate +def is_documentation_teacher(user: User, obj: Documentation): + """Predicate for teachers of a documentation. + + Checks whether the person linked to the user is a teacher in the documentation. + """ + if obj: + if not str(obj.pk).startswith("DUMMY") and hasattr(obj, "teachers"): + teachers = obj.teachers + elif obj.amends.amends: + teachers = obj.amends.teachers if obj.amends.teachers else obj.amends.amends.teachers + else: + teachers = obj.amends.teachers + return user.person in teachers.all() + return False + + +@predicate +def can_view_documentation(user: User, obj: Documentation): + """Predicate which checks if the user is allowed to view a documentation.""" + if obj: + if is_documentation_teacher(user, obj): + return True + if obj.amends: + return ( + is_lesson_event_teacher(user, obj.amends) + | is_lesson_event_member(user, obj.amends) + | is_lesson_event_group_owner(user, obj.amends) + ) + if obj.course: + return is_course_teacher(user, obj.course) + return False + + +@predicate +def can_view_any_documentation(user: User): + """Predicate which checks if the user is allowed to view any documentation.""" + allowed_lesson_events = LessonEvent.objects.related_to_person(user.person) + + return Documentation.objects.filter( + Q(teachers=user.person) + | Q(amends__in=allowed_lesson_events) + | Q(course__teachers=user.person) + ).exists() + + +@predicate +def can_edit_documentation(user: User, obj: Documentation): + """Predicate which checks if the user is allowed to edit or delete a documentation.""" + if obj: + if is_documentation_teacher(user, obj): + return True + if obj.amends: + return is_lesson_event_teacher(user, obj.amends) | is_lesson_event_group_owner( + user, obj.amends + ) + return False + + +@predicate +def is_in_allowed_time_range(user: User, obj: Documentation): + """Predicate which checks if the documentation is in the allowed time range for editing.""" + if obj and ( + get_site_preferences()["alsijil__allow_edit_future_documentations"] == "all" + or ( + get_site_preferences()["alsijil__allow_edit_future_documentations"] == "current_day" + and obj.datetime_start.date() <= localdate() + ) + or ( + get_site_preferences()["alsijil__allow_edit_future_documentations"] == "current_time" + and obj.datetime_start <= localtime() + ) + ): + return True + return False diff --git a/pyproject.toml b/pyproject.toml index c19624053cb6d7c1c5779163f9cb66bda9bf9961..9f5bdea8a085f549aee9644fdb3c6ac29c6bcda6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "AlekSIS-App-Alsijil" -version = "4.0.dev0" +version = "4.0.0.dev0" packages = [ { include = "aleksis" } ] @@ -49,9 +49,10 @@ priority = "supplemental" [tool.poetry.dependencies] python = "^3.10" -aleksis-core = "^4.0.0.dev2" -aleksis-app-chronos = "^4.0.0.dev0" +aleksis-core = "^4.0.0.dev7" +aleksis-app-chronos = "^4.0.0.dev3" aleksis-app-stoelindeling = { version = "^3.0.dev1", optional = true } +aleksis-app-kolego = "^0.1.0.dev0" [tool.poetry.extras] seatingplans = ["aleksis-app-stoelindeling"]