Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • AlekSIS/official/AlekSIS-App-Alsijil
  • sunweaver/AlekSIS-App-Alsijil
  • 8tincsoVluke/AlekSIS-App-Alsijil
  • perfreicpo/AlekSIS-App-Alsijil
  • noifobarep/AlekSIS-App-Alsijil
  • 7ingannisdo/AlekSIS-App-Alsijil
  • unmruntartpa/AlekSIS-App-Alsijil
  • balrorebta/AlekSIS-App-Alsijil
  • comliFdifwa/AlekSIS-App-Alsijil
  • 3ranaadza/AlekSIS-App-Alsijil
10 results
Show changes
Commits on Source (195)
Showing
with 3102 additions and 1115 deletions
......@@ -2,15 +2,18 @@ from datetime import datetime
from django import forms
from django.core.exceptions import ValidationError
from django.db.models import Count
from django.db.models import Count, Q
from django.utils.translation import gettext_lazy as _
from django_global_request.middleware import get_request
from django_select2.forms import Select2Widget
from guardian.shortcuts import get_objects_for_user
from material import Fieldset, Layout, Row
from aleksis.apps.chronos.managers import TimetableType
from aleksis.apps.chronos.models import TimePeriod
from aleksis.core.models import Group, Person
from aleksis.core.util.predicates import check_global_permission
from .models import ExcuseType, ExtraMark, LessonDocumentation, PersonalNote
......@@ -51,12 +54,7 @@ class SelectForm(forms.Form):
queryset=None, label=_("Group"), required=False, widget=Select2Widget,
)
teacher = forms.ModelChoiceField(
queryset=Person.objects.annotate(
lessons_count=Count("lessons_as_teacher")
).filter(lessons_count__gt=0),
label=_("Teacher"),
required=False,
widget=Select2Widget,
queryset=None, label=_("Teacher"), required=False, widget=Select2Widget,
)
def clean(self) -> dict:
......@@ -78,13 +76,41 @@ class SelectForm(forms.Form):
return data
def __init__(self, *args, **kwargs):
self.request = get_request()
super().__init__(*args, **kwargs)
self.fields["group"].queryset = (
Group.objects.for_current_school_term_or_all()
.annotate(lessons_count=Count("lessons"))
.filter(lessons_count__gt=0)
person = self.request.user.person
group_qs = Group.get_groups_with_lessons()
# Filter selectable groups by permissions
if not check_global_permission(self.request.user, "alsijil.view_week"):
# 1) All groups the user is allowed to see the week view by object permissions
# 2) All groups the user is a member of an owner of
group_qs = (
group_qs.filter(
pk__in=get_objects_for_user(
self.request.user, "core.view_week_class_register_group", Group
).values_list("pk", flat=True)
)
).union(group_qs.filter(Q(members=person) | Q(owners=person)))
# Flatten query by filtering groups by pk
self.fields["group"].queryset = Group.objects.filter(
pk__in=list(group_qs.values_list("pk", flat=True))
)
teacher_qs = Person.objects.annotate(
lessons_count=Count("lessons_as_teacher")
).filter(lessons_count__gt=0)
# Filter selectable teachers by permissions
if not check_global_permission(self.request.user, "alsijil.view_week"):
# If the user hasn't the global permission, the user is only allowed to see his own person
teacher_qs = teacher_qs.filter(pk=person.pk)
self.fields["teacher"].queryset = teacher_qs
PersonalNoteFormSet = forms.modelformset_factory(
PersonalNote, form=PersonalNoteForm, max_num=0, extra=0
......@@ -93,7 +119,6 @@ PersonalNoteFormSet = forms.modelformset_factory(
class RegisterAbsenceForm(forms.Form):
layout = Layout(
Fieldset("", "person"),
Fieldset("", Row("date_start", "date_end"), Row("from_period", "to_period")),
Fieldset("", Row("absent", "excused"), Row("excuse_type"), Row("remarks")),
)
......@@ -101,9 +126,6 @@ class RegisterAbsenceForm(forms.Form):
date_end = forms.DateField(label=_("End date"), initial=datetime.today)
from_period = forms.ChoiceField(label=_("Start period"))
to_period = forms.ChoiceField(label=_("End period"))
person = forms.ModelChoiceField(
label=_("Person"), queryset=Person.objects.all(), widget=Select2Widget
)
absent = forms.BooleanField(label=_("Absent"), initial=True, required=False)
excused = forms.BooleanField(label=_("Excused"), initial=True, required=False)
excuse_type = forms.ModelChoiceField(
......@@ -115,6 +137,7 @@ class RegisterAbsenceForm(forms.Form):
remarks = forms.CharField(label=_("Remarks"), max_length=30, required=False)
def __init__(self, *args, **kwargs):
self.request = get_request()
super().__init__(*args, **kwargs)
period_choices = TimePeriod.period_choices
......
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-11 11:08+0200\n"
"POT-Creation-Date: 2020-11-14 12:23+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -18,11 +18,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: forms.py:26
#: forms.py:29
msgid "Homework for the next lesson"
msgstr ""
#: forms.py:51 templates/alsijil/print/full_register.html:199
#: forms.py:54 templates/alsijil/class_register/week_view.html:168
#: templates/alsijil/print/full_register.html:199
msgid "Group"
msgstr ""
......@@ -31,57 +32,53 @@ msgstr ""
msgid "Teacher"
msgstr ""
#: forms.py:74
#: forms.py:72
msgid "You can't select a group and a teacher both."
msgstr ""
#: forms.py:100
#: forms.py:125
msgid "Start date"
msgstr ""
#: forms.py:101
#: forms.py:126
msgid "End date"
msgstr ""
#: forms.py:102
#: forms.py:127
msgid "Start period"
msgstr ""
#: forms.py:103
#: forms.py:128
msgid "End period"
msgstr ""
#: forms.py:105 templates/alsijil/class_register/lesson.html:163
msgid "Person"
msgstr ""
#: forms.py:107 templates/alsijil/class_register/lesson.html:164
#: templates/alsijil/class_register/person.html:172
#: templates/alsijil/class_register/week_view.html:119
#: forms.py:129 templates/alsijil/class_register/lesson.html:243
#: templates/alsijil/class_register/person.html:207
#: templates/alsijil/class_register/week_view.html:261
#: templates/alsijil/print/full_register.html:75
#: templates/alsijil/print/full_register.html:312
msgid "Absent"
msgstr ""
#: forms.py:108 templates/alsijil/class_register/lesson.html:166
#: templates/alsijil/class_register/person.html:74
#: templates/alsijil/class_register/person.html:180
#: forms.py:130 templates/alsijil/class_register/lesson.html:245
#: templates/alsijil/class_register/person.html:98
#: templates/alsijil/class_register/person.html:215
#: templates/alsijil/partials/mark_as_buttons.html:2
#: templates/alsijil/partials/mark_as_buttons.html:3
#: templates/alsijil/partials/persons_with_stats.html:74
#: templates/alsijil/print/full_register.html:84
#: templates/alsijil/print/full_register.html:275
msgid "Excused"
msgstr ""
#: forms.py:110 models.py:38 models.py:69
#: templates/alsijil/class_register/lesson.html:167
#: templates/alsijil/class_register/lesson.html:202
#: forms.py:132 models.py:41 models.py:74
#: templates/alsijil/class_register/lesson.html:246
#: templates/alsijil/class_register/lesson.html:281
msgid "Excuse type"
msgstr ""
#: forms.py:115 templates/alsijil/class_register/lesson.html:170
#: templates/alsijil/class_register/lesson.html:223
#: templates/alsijil/class_register/lesson.html:231
#: forms.py:137 templates/alsijil/class_register/lesson.html:248
#: templates/alsijil/class_register/lesson.html:302
#: templates/alsijil/print/full_register.html:314
msgid "Remarks"
msgstr ""
......@@ -94,107 +91,173 @@ msgstr ""
msgid "Current lesson"
msgstr ""
#: menus.py:22
#: menus.py:27
msgid "Current week"
msgstr ""
#: menus.py:28 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:9
#: menus.py:38 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:8
msgid "My groups"
msgstr ""
#: menus.py:34
#: menus.py:49
msgid "My overview"
msgstr ""
#: menus.py:40 templates/alsijil/class_register/persons.html:7
#: templates/alsijil/class_register/persons.html:11
#: menus.py:60 templates/alsijil/class_register/persons.html:5
#: templates/alsijil/class_register/persons.html:9
msgid "My students"
msgstr ""
#: menus.py:46 templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
msgid "Register absence"
msgstr ""
#: menus.py:52 models.py:39 templates/alsijil/excuse_type/list.html:8
#: menus.py:71 models.py:42 templates/alsijil/excuse_type/list.html:8
#: templates/alsijil/excuse_type/list.html:9
#: templates/alsijil/partials/legend.html:26
msgid "Excuse types"
msgstr ""
#: menus.py:58 models.py:75 models.py:210
#: templates/alsijil/class_register/lesson.html:168
#: menus.py:82 models.py:80 models.py:215
#: templates/alsijil/class_register/lesson.html:247
#: templates/alsijil/extra_mark/list.html:8
#: templates/alsijil/extra_mark/list.html:9
#: templates/alsijil/partials/legend.html:41
#: templates/alsijil/partials/persons_with_stats.html:19
#: templates/alsijil/print/full_register.html:293
msgid "Extra marks"
msgstr ""
#: models.py:25 models.py:196
#: model_extensions.py:145
msgid "Can view week overview of group class register"
msgstr ""
#: model_extensions.py:149
msgid "Can view lesson overview of group class register"
msgstr ""
#: model_extensions.py:152
msgid "Can view all personal notes of a group"
msgstr ""
#: model_extensions.py:155
msgid "Can edit all personal notes of a group"
msgstr ""
#: model_extensions.py:158
msgid "Can view all lesson documentation of a group"
msgstr ""
#: model_extensions.py:161
msgid "Can edit all lesson documentation of a group"
msgstr ""
#: model_extensions.py:163
msgid "Can view full register of a group"
msgstr ""
#: model_extensions.py:165
msgid "Can register an absence for all members of a group"
msgstr ""
#: model_extensions.py:168
msgid "Can register an absence for a person"
msgstr ""
#: models.py:28 models.py:201
msgid "Short name"
msgstr ""
#: models.py:27 models.py:198
#: models.py:30 models.py:203 templates/alsijil/class_register/groups.html:20
#: templates/alsijil/partials/persons_with_stats.html:14
#: templates/alsijil/partials/persons_with_stats.html:24
msgid "Name"
msgstr ""
#: models.py:55 models.py:126
#: models.py:60 models.py:131
msgid "Year"
msgstr ""
#: models.py:106
#: models.py:111
msgid "Personal note"
msgstr ""
#: models.py:107 templates/alsijil/class_register/lesson.html:64
#: templates/alsijil/class_register/lesson.html:156
#: templates/alsijil/class_register/week_view.html:112
#: models.py:112 templates/alsijil/class_register/lesson.html:101
#: templates/alsijil/class_register/lesson.html:233
#: templates/alsijil/class_register/week_view.html:68
#: templates/alsijil/class_register/week_view.html:242
msgid "Personal notes"
msgstr ""
#: models.py:132 templates/alsijil/class_register/week_view.html:64
#: models.py:137 templates/alsijil/class_register/lesson.html:129
#: templates/alsijil/class_register/week_view.html:90
#: templates/alsijil/class_register/week_view.html:177
#: templates/alsijil/print/full_register.html:371
msgid "Lesson topic"
msgstr ""
#: models.py:133 templates/alsijil/print/full_register.html:372
#: models.py:138 templates/alsijil/class_register/lesson.html:137
#: templates/alsijil/class_register/week_view.html:91
#: templates/alsijil/class_register/week_view.html:183
#: templates/alsijil/class_register/week_view.html:216
#: templates/alsijil/print/full_register.html:372
msgid "Homework"
msgstr ""
#: models.py:135
#: models.py:140 templates/alsijil/class_register/lesson.html:145
#: templates/alsijil/class_register/week_view.html:92
#: templates/alsijil/class_register/week_view.html:189
#: templates/alsijil/class_register/week_view.html:222
msgid "Group note"
msgstr ""
#: models.py:178 templates/alsijil/class_register/lesson.html:60
#: templates/alsijil/class_register/lesson.html:143
#: models.py:183 templates/alsijil/class_register/lesson.html:97
#: templates/alsijil/class_register/lesson.html:120
msgid "Lesson documentation"
msgstr ""
#: models.py:179
#: models.py:184 templates/alsijil/class_register/week_view.html:67
msgid "Lesson documentations"
msgstr ""
#: models.py:209
#: models.py:214
msgid "Extra mark"
msgstr ""
#: models.py:222
msgid "Can view week overview"
msgstr ""
#: models.py:223
msgid "Can register absence"
msgstr ""
#: models.py:224
msgid "Can list all personal note filters"
msgstr ""
#: preferences.py:16
msgid "Block adding personal notes for cancelled lessons"
msgstr ""
#: preferences.py:25
#: preferences.py:24
msgid "Allow users to view their own personal notes"
msgstr ""
#: preferences.py:33
msgid "Allow primary group owners to register future absences for students in their groups"
msgstr ""
#: preferences.py:43
msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
msgstr ""
#: preferences.py:28
#: preferences.py:46
msgid "This will carry over data only if the data in the following periods are empty."
msgstr ""
#: preferences.py:38
#: preferences.py:56
msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
msgstr ""
#: preferences.py:41
#: preferences.py:59
msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
msgstr ""
......@@ -202,76 +265,160 @@ msgstr ""
msgid "Edit"
msgstr ""
#: tables.py:22 tables.py:42
#: tables.py:22 tables.py:42 templates/alsijil/class_register/person.html:249
msgid "Delete"
msgstr ""
#: templates/alsijil/class_register/groups.html:20
#: templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/week_view.html:256
#: templates/alsijil/partials/persons_with_stats.html:115
msgid "Register absence"
msgstr ""
#: templates/alsijil/absences/register.html:9
#: templates/alsijil/class_register/lesson.html:242
msgid "Person"
msgstr ""
#: templates/alsijil/class_register/groups.html:21
msgid "Students"
msgstr ""
#: templates/alsijil/class_register/groups.html:35
#: templates/alsijil/class_register/groups.html:69
#: templates/alsijil/class_register/week_view.html:40
#: templates/alsijil/class_register/week_view.html:51
msgid "Students list"
msgstr ""
#: templates/alsijil/class_register/groups.html:39
#: templates/alsijil/class_register/groups.html:75
#: templates/alsijil/class_register/persons.html:27
#: templates/alsijil/class_register/persons.html:43
#: templates/alsijil/class_register/students_list.html:16
#: templates/alsijil/class_register/students_list.html:35
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
msgstr ""
#: templates/alsijil/class_register/groups.html:44
#: templates/alsijil/class_register/groups.html:82
#: templates/alsijil/class_register/persons.html:31
#: templates/alsijil/class_register/persons.html:50
#: templates/alsijil/class_register/students_list.html:20
#: templates/alsijil/class_register/students_list.html:42
#: templates/alsijil/class_register/week_view.html:44
#: templates/alsijil/class_register/week_view.html:58
msgid "Generate printout"
msgstr ""
#: templates/alsijil/class_register/groups.html:52
#: templates/alsijil/class_register/groups.html:88
msgid "No groups available."
msgstr ""
#: templates/alsijil/class_register/lesson.html:6
#: templates/alsijil/class_register/groups.html:64
msgid "students"
msgstr ""
#: templates/alsijil/class_register/lesson.html:5
msgid "Lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:14
#: templates/alsijil/class_register/lesson.html:83
#, python-format
msgid "%(period)s. period"
#: templates/alsijil/class_register/lesson.html:20
msgid "Back to week view"
msgstr ""
#: templates/alsijil/class_register/lesson.html:29
msgid "My previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:38
msgid "Previous lesson"
msgid "My next lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:46
msgid "Next lesson"
#: templates/alsijil/class_register/lesson.html:167
#, python-format
msgid "%(period)s. period"
msgstr ""
#: templates/alsijil/class_register/lesson.html:77
#: templates/alsijil/class_register/lesson.html:359
#, python-format
msgid ""
"\n"
" Previous %(subject)s lesson\n"
" "
msgstr ""
#: templates/alsijil/class_register/lesson.html:85
#: templates/alsijil/class_register/lesson.html:367
#, python-format
msgid ""
"\n"
" Next %(subject)s lesson\n"
" "
msgstr ""
#: templates/alsijil/class_register/lesson.html:107
msgid "Previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:68
#: templates/alsijil/class_register/lesson.html:249
#: templates/alsijil/class_register/lesson.html:111
#: templates/alsijil/class_register/lesson.html:342
msgid "Change history"
msgstr ""
#: templates/alsijil/class_register/lesson.html:82
#: templates/alsijil/class_register/lesson.html:166
msgid "Overview: Previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:89
#: templates/alsijil/class_register/lesson.html:173
msgid "Lesson topic of previous lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:96
#: templates/alsijil/class_register/lesson.html:180
msgid "Homework for this lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:103
#: templates/alsijil/class_register/lesson.html:187
msgid "Group notes for previous lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:110
#: templates/alsijil/class_register/lesson.html:194
msgid "Absent persons:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:117
#: templates/alsijil/class_register/lesson.html:201
msgid "Late persons:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:165
#: templates/alsijil/class_register/person.html:86
#: templates/alsijil/class_register/lesson.html:244
#: templates/alsijil/class_register/person.html:110
#: templates/alsijil/partials/persons_with_stats.html:17
#: templates/alsijil/partials/persons_with_stats.html:34
#: templates/alsijil/partials/persons_with_stats.html:91
#: templates/alsijil/print/full_register.html:287
msgid "Tardiness"
msgstr ""
#: templates/alsijil/class_register/lesson.html:188
#: templates/alsijil/class_register/lesson.html:267
msgid "Tardiness (in m)"
msgstr ""
#: templates/alsijil/class_register/person.html:7
#: templates/alsijil/class_register/person.html:8
msgid "Class register: person"
msgstr ""
#: templates/alsijil/class_register/person.html:11
#: templates/alsijil/class_register/person.html:16
#: templates/alsijil/class_register/students_list.html:10
msgid "Back"
msgstr ""
#: templates/alsijil/class_register/person.html:19
#, python-format
msgid ""
"\n"
......@@ -279,118 +426,131 @@ msgid ""
" "
msgstr ""
#: templates/alsijil/class_register/person.html:19
#: templates/alsijil/class_register/person.html:36
#: templates/alsijil/partials/legend.html:14
msgid "Unexcused absences"
msgstr ""
#: templates/alsijil/class_register/person.html:27
#: templates/alsijil/class_register/person.html:44
#: templates/alsijil/class_register/person.html:160
#: templates/alsijil/class_register/person.html:202
#: templates/alsijil/class_register/person.html:46
#: templates/alsijil/class_register/person.html:65
#: templates/alsijil/class_register/person.html:190
#: templates/alsijil/class_register/person.html:237
msgid "Mark as"
msgstr ""
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/person.html:47
#: templates/alsijil/class_register/person.html:163
#: templates/alsijil/class_register/person.html:205
#: templates/alsijil/class_register/person.html:49
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:193
#: templates/alsijil/class_register/person.html:199
#: templates/alsijil/class_register/person.html:240
#: templates/alsijil/class_register/person.html:246
msgid "Delete note"
msgstr ""
#: templates/alsijil/class_register/person.html:55
msgid "There are unexcused lessons."
#: templates/alsijil/class_register/person.html:78
msgid "There are no unexcused lessons."
msgstr ""
#: templates/alsijil/class_register/person.html:59
#: templates/alsijil/class_register/person.html:83
msgid "Statistics on absences, tardiness and remarks"
msgstr ""
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:92
#: templates/alsijil/partials/legend.html:10
#: templates/alsijil/partials/persons_with_stats.html:16
#: templates/alsijil/partials/persons_with_stats.html:26
#: templates/alsijil/partials/persons_with_stats.html:69
#: templates/alsijil/print/full_register.html:269
msgid "Absences"
msgstr ""
#: templates/alsijil/class_register/person.html:72
#: templates/alsijil/class_register/person.html:96
#: templates/alsijil/print/full_register.html:274
msgid "thereof"
msgstr ""
#: templates/alsijil/class_register/person.html:82
#: templates/alsijil/class_register/person.html:106
#: templates/alsijil/partials/persons_with_stats.html:86
#: templates/alsijil/print/full_register.html:81
#: templates/alsijil/print/full_register.html:283
msgid "Unexcused"
msgstr ""
#: templates/alsijil/class_register/person.html:102
#: templates/alsijil/class_register/person.html:127
#: templates/alsijil/print/full_register.html:304
msgid "Relevant personal notes"
msgstr ""
#: templates/alsijil/class_register/person.html:118
#: templates/alsijil/class_register/person.html:143
#, python-format
msgid "Week %(week)s"
msgstr ""
#: templates/alsijil/class_register/person.html:126
#: templates/alsijil/class_register/person.html:135
#: templates/alsijil/class_register/person.html:152
#: templates/alsijil/class_register/person.html:163
msgid "Mark all as"
msgstr ""
#: templates/alsijil/class_register/person.html:187
#: templates/alsijil/class_register/person.html:222
#, python-format
msgid "%(late)s' late"
msgstr ""
#: templates/alsijil/class_register/persons.html:22
msgid "No students available."
msgstr ""
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
#: templates/alsijil/class_register/students_list.html:5
#: templates/alsijil/class_register/students_list.html:12
#, python-format
msgid "Students list: %(group)s"
msgstr ""
#: templates/alsijil/class_register/week_view.html:30
#: templates/alsijil/class_register/week_view.html:23
msgid "Select"
msgstr ""
#: templates/alsijil/class_register/week_view.html:38
#: templates/alsijil/class_register/week_view.html:31
#, python-format
msgid ""
"CW %(week)s:\n"
" %(instance)s"
msgstr ""
#: templates/alsijil/class_register/week_view.html:58
#: templates/alsijil/class_register/week_view.html:84
msgid "Period"
msgstr ""
#: templates/alsijil/class_register/week_view.html:60
#: templates/alsijil/class_register/week_view.html:86
msgid "Groups"
msgstr ""
#: templates/alsijil/class_register/week_view.html:62
#: templates/alsijil/class_register/week_view.html:88
#: templates/alsijil/class_register/week_view.html:163
#: templates/alsijil/print/full_register.html:169
#: templates/alsijil/print/full_register.html:200
msgid "Subject"
msgstr ""
#: templates/alsijil/class_register/week_view.html:63
#: templates/alsijil/class_register/week_view.html:89
#: templates/alsijil/class_register/week_view.html:173
msgid "Teachers"
msgstr ""
#: templates/alsijil/class_register/week_view.html:120
#: templates/alsijil/class_register/week_view.html:262
msgid "unexcused"
msgstr ""
#: templates/alsijil/class_register/week_view.html:123
#: templates/alsijil/class_register/week_view.html:265
msgid "Summed up tardiness"
msgstr ""
#: templates/alsijil/class_register/week_view.html:152
#: templates/alsijil/class_register/week_view.html:268
#: templates/alsijil/partials/persons_with_stats.html:94
msgid "Count of tardiness"
msgstr ""
#: templates/alsijil/class_register/week_view.html:297
msgid "No lessons available"
msgstr ""
#: templates/alsijil/class_register/week_view.html:155
#: templates/alsijil/class_register/week_view.html:300
msgid ""
"\n"
" There are no lessons for the selected group or teacher in this week.\n"
......@@ -399,7 +559,7 @@ msgstr ""
#: templates/alsijil/excuse_type/create.html:6
#: templates/alsijil/excuse_type/create.html:7
#: templates/alsijil/excuse_type/list.html:16
#: templates/alsijil/excuse_type/list.html:18
msgid "Create excuse type"
msgstr ""
......@@ -427,16 +587,33 @@ msgstr ""
msgid "Edit extra mark"
msgstr ""
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:27
#: templates/alsijil/partials/persons_with_stats.html:44
#: templates/alsijil/print/full_register.html:126
msgid "(e)"
msgstr ""
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:33
#: templates/alsijil/partials/persons_with_stats.html:50
#: templates/alsijil/print/full_register.html:130
msgid "(u)"
msgstr ""
#: templates/alsijil/partials/legend.html:4
msgid "Legend"
msgstr ""
#: templates/alsijil/partials/legend.html:7
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr ""
#: templates/alsijil/partials/legend.html:18
msgid "Excused absences"
msgstr ""
#: templates/alsijil/partials/lesson_status_icon.html:6
msgid "Data complete"
msgstr ""
......@@ -465,6 +642,27 @@ msgstr ""
msgid "e"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:7
msgid "No students available."
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:15
#: templates/alsijil/partials/persons_with_stats.html:25
msgid "Primary group"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:43
msgid "Sum"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:107
msgid "Show more details"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:108
msgid "Details"
msgstr ""
#: templates/alsijil/print/full_register.html:6
msgid "Class register:"
msgstr ""
......@@ -512,10 +710,6 @@ msgstr ""
msgid "Abbreviations"
msgstr ""
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr ""
#: templates/alsijil/print/full_register.html:78
msgid "Late"
msgstr ""
......@@ -630,62 +824,58 @@ msgstr ""
msgid "Notes"
msgstr ""
#: views.py:78
#: views.py:69
msgid "You either selected an invalid lesson or there is currently no lesson in progress."
msgstr ""
#: views.py:96
#: views.py:95
msgid "You are not allowed to create a lesson documentation for a lesson in the future."
msgstr ""
#: views.py:122
#: views.py:133
msgid "The lesson documentation has been saved."
msgstr ""
#: views.py:143
#: views.py:156
msgid "The personal notes have been saved."
msgstr ""
#: views.py:351
msgid "There is no current school term."
msgstr ""
#: views.py:532
#: views.py:587
msgid "The absences have been marked as excused."
msgstr ""
#: views.py:548
#: views.py:605
msgid "The absence has been marked as excused."
msgstr ""
#: views.py:653
#: views.py:735
msgid "The absence has been saved."
msgstr ""
#: views.py:670
#: views.py:754
msgid "The personal note has been deleted."
msgstr ""
#: views.py:691
#: views.py:775
msgid "The extra mark has been created."
msgstr ""
#: views.py:702
#: views.py:786
msgid "The extra mark has been saved."
msgstr ""
#: views.py:712
#: views.py:796
msgid "The extra mark has been deleted."
msgstr ""
#: views.py:732
#: views.py:816
msgid "The excuse type has been created."
msgstr ""
#: views.py:743
#: views.py:827
msgid "The excuse type has been saved."
msgstr ""
#: views.py:753
#: views.py:837
msgid "The excuse type has been deleted."
msgstr ""
......@@ -7,10 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-11 11:08+0200\n"
"PO-Revision-Date: 2020-09-06 17:48+0000\n"
"POT-Creation-Date: 2020-11-14 12:23+0100\n"
"PO-Revision-Date: 2020-11-14 11:29+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"
......@@ -18,11 +19,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.1.1\n"
#: forms.py:26
#: forms.py:29
msgid "Homework for the next lesson"
msgstr "Hausaufgabe zur nächsten Stunde"
#: forms.py:51 templates/alsijil/print/full_register.html:199
#: forms.py:54 templates/alsijil/class_register/week_view.html:168
#: templates/alsijil/print/full_register.html:199
msgid "Group"
msgstr "Gruppe"
......@@ -31,57 +33,53 @@ msgstr "Gruppe"
msgid "Teacher"
msgstr "Lehrkraft"
#: forms.py:74
#: forms.py:72
msgid "You can't select a group and a teacher both."
msgstr "Es kann nur entweder eine Gruppe oder eine Lehrkraft ausgewählt werden."
#: forms.py:100
#: forms.py:125
msgid "Start date"
msgstr "Startdatum"
#: forms.py:101
#: forms.py:126
msgid "End date"
msgstr "Enddatum"
#: forms.py:102
#: forms.py:127
msgid "Start period"
msgstr "Startstunde"
#: forms.py:103
#: forms.py:128
msgid "End period"
msgstr "Endstunde"
#: forms.py:105 templates/alsijil/class_register/lesson.html:163
msgid "Person"
msgstr "Person"
#: forms.py:107 templates/alsijil/class_register/lesson.html:164
#: templates/alsijil/class_register/person.html:172
#: templates/alsijil/class_register/week_view.html:119
#: forms.py:129 templates/alsijil/class_register/lesson.html:243
#: templates/alsijil/class_register/person.html:207
#: templates/alsijil/class_register/week_view.html:261
#: templates/alsijil/print/full_register.html:75
#: templates/alsijil/print/full_register.html:312
msgid "Absent"
msgstr "Abwesend"
#: forms.py:108 templates/alsijil/class_register/lesson.html:166
#: templates/alsijil/class_register/person.html:74
#: templates/alsijil/class_register/person.html:180
#: forms.py:130 templates/alsijil/class_register/lesson.html:245
#: templates/alsijil/class_register/person.html:98
#: templates/alsijil/class_register/person.html:215
#: templates/alsijil/partials/mark_as_buttons.html:2
#: templates/alsijil/partials/mark_as_buttons.html:3
#: templates/alsijil/partials/persons_with_stats.html:74
#: templates/alsijil/print/full_register.html:84
#: templates/alsijil/print/full_register.html:275
msgid "Excused"
msgstr "Entschuldigt"
#: forms.py:110 models.py:38 models.py:69
#: templates/alsijil/class_register/lesson.html:167
#: templates/alsijil/class_register/lesson.html:202
#: forms.py:132 models.py:41 models.py:74
#: templates/alsijil/class_register/lesson.html:246
#: templates/alsijil/class_register/lesson.html:281
msgid "Excuse type"
msgstr "Entschuldigungsart"
#: forms.py:115 templates/alsijil/class_register/lesson.html:170
#: templates/alsijil/class_register/lesson.html:223
#: templates/alsijil/class_register/lesson.html:231
#: forms.py:137 templates/alsijil/class_register/lesson.html:248
#: templates/alsijil/class_register/lesson.html:302
#: templates/alsijil/print/full_register.html:314
msgid "Remarks"
msgstr "Bemerkungen"
......@@ -94,109 +92,173 @@ msgstr "Klassenbuch"
msgid "Current lesson"
msgstr "Aktuelle Unterrichtsstunde"
#: menus.py:22
#: menus.py:27
msgid "Current week"
msgstr "Aktuelle Woche"
#: menus.py:28 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:9
#, fuzzy
#| msgid "Groups"
#: menus.py:38 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:8
msgid "My groups"
msgstr "Gruppen"
msgstr "Meine Gruppen"
#: menus.py:34
#: menus.py:49
msgid "My overview"
msgstr "Meine Übersicht"
#: menus.py:40 templates/alsijil/class_register/persons.html:7
#: templates/alsijil/class_register/persons.html:11
#: menus.py:60 templates/alsijil/class_register/persons.html:5
#: templates/alsijil/class_register/persons.html:9
msgid "My students"
msgstr "Meine Schüler*innen"
#: menus.py:46 templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
msgid "Register absence"
msgstr "Abwesenheit eintragen"
#: menus.py:52 models.py:39 templates/alsijil/excuse_type/list.html:8
#: menus.py:71 models.py:42 templates/alsijil/excuse_type/list.html:8
#: templates/alsijil/excuse_type/list.html:9
#: templates/alsijil/partials/legend.html:26
msgid "Excuse types"
msgstr "Entschuldigungsarten"
#: menus.py:58 models.py:75 models.py:210
#: templates/alsijil/class_register/lesson.html:168
#: menus.py:82 models.py:80 models.py:215
#: templates/alsijil/class_register/lesson.html:247
#: templates/alsijil/extra_mark/list.html:8
#: templates/alsijil/extra_mark/list.html:9
#: templates/alsijil/partials/legend.html:41
#: templates/alsijil/partials/persons_with_stats.html:19
#: templates/alsijil/print/full_register.html:293
msgid "Extra marks"
msgstr "Zusätzliche Markierungen"
#: models.py:25 models.py:196
#: model_extensions.py:145
msgid "Can view week overview of group class register"
msgstr "Kann Wochenübersicht des Gruppenklassenbuches sehen"
#: model_extensions.py:149
msgid "Can view lesson overview of group class register"
msgstr "Kann Stundenübersicht des Gruppenklassenbuches sehen"
#: model_extensions.py:152
msgid "Can view all personal notes of a group"
msgstr "Kann alle persönlichen Notizen einer Gruppe sehen"
#: model_extensions.py:155
msgid "Can edit all personal notes of a group"
msgstr "Kann alle persönlichen Notizen einer Gruppe bearbeiten"
#: model_extensions.py:158
msgid "Can view all lesson documentation of a group"
msgstr "Kann alle Unterrichtsdokumentationen für eine Gruppe sehen"
#: model_extensions.py:161
msgid "Can edit all lesson documentation of a group"
msgstr "Kann alle Unterrichtsdokumentationen für eine Gruppe bearbeiten"
#: model_extensions.py:163
msgid "Can view full register of a group"
msgstr "Kann komplettes Klassenbuch einer Gruppe sehen"
#: model_extensions.py:165
msgid "Can register an absence for all members of a group"
msgstr "Kann eine Absenz für alle Mitglieder eine Gruppe registrieren"
#: model_extensions.py:168
msgid "Can register an absence for a person"
msgstr "Kann eine Absenz für eine Person registrieren"
#: models.py:28 models.py:201
msgid "Short name"
msgstr "Kurzname"
#: models.py:27 models.py:198
#: models.py:30 models.py:203 templates/alsijil/class_register/groups.html:20
#: templates/alsijil/partials/persons_with_stats.html:14
#: templates/alsijil/partials/persons_with_stats.html:24
msgid "Name"
msgstr "Name"
#: models.py:55 models.py:126
#: models.py:60 models.py:131
msgid "Year"
msgstr "Jahr"
#: models.py:106
#: models.py:111
msgid "Personal note"
msgstr "Persönliche Notiz"
#: models.py:107 templates/alsijil/class_register/lesson.html:64
#: templates/alsijil/class_register/lesson.html:156
#: templates/alsijil/class_register/week_view.html:112
#: models.py:112 templates/alsijil/class_register/lesson.html:101
#: templates/alsijil/class_register/lesson.html:233
#: templates/alsijil/class_register/week_view.html:68
#: templates/alsijil/class_register/week_view.html:242
msgid "Personal notes"
msgstr "Persönliche Notizen"
#: models.py:132 templates/alsijil/class_register/week_view.html:64
#: models.py:137 templates/alsijil/class_register/lesson.html:129
#: templates/alsijil/class_register/week_view.html:90
#: templates/alsijil/class_register/week_view.html:177
#: templates/alsijil/print/full_register.html:371
msgid "Lesson topic"
msgstr "Stundenthema"
#: models.py:133 templates/alsijil/print/full_register.html:372
#: models.py:138 templates/alsijil/class_register/lesson.html:137
#: templates/alsijil/class_register/week_view.html:91
#: templates/alsijil/class_register/week_view.html:183
#: templates/alsijil/class_register/week_view.html:216
#: templates/alsijil/print/full_register.html:372
msgid "Homework"
msgstr "Hausaufgaben"
#: models.py:135
#: models.py:140 templates/alsijil/class_register/lesson.html:145
#: templates/alsijil/class_register/week_view.html:92
#: templates/alsijil/class_register/week_view.html:189
#: templates/alsijil/class_register/week_view.html:222
msgid "Group note"
msgstr "Gruppennotiz"
#: models.py:178 templates/alsijil/class_register/lesson.html:60
#: templates/alsijil/class_register/lesson.html:143
#: models.py:183 templates/alsijil/class_register/lesson.html:97
#: templates/alsijil/class_register/lesson.html:120
msgid "Lesson documentation"
msgstr "Stunden-Dokumentation"
#: models.py:179
#: models.py:184 templates/alsijil/class_register/week_view.html:67
msgid "Lesson documentations"
msgstr "Stunden-Dokumentationen"
#: models.py:209
#: models.py:214
msgid "Extra mark"
msgstr "Zusätzliche Markierung"
#: models.py:222
msgid "Can view week overview"
msgstr "Kann die Wochenübersicht sehen"
#: models.py:223
msgid "Can register absence"
msgstr "Kann eine Absenz registrieren"
#: models.py:224
msgid "Can list all personal note filters"
msgstr "Kann alle Filter für persönliche Notizen anzeigen"
#: preferences.py:16
msgid "Block adding personal notes for cancelled lessons"
msgstr "Blockiere das Hinzufügen von persönlichen Notizen für ausgefallene Stunden"
#: preferences.py:25
#: preferences.py:24
msgid "Allow users to view their own personal notes"
msgstr "Erlaube Nutzern, ihre eigenen persönlichen Notizen zu sehen"
#: preferences.py:33
msgid "Allow primary group owners to register future absences for students in their groups"
msgstr "Erlaube Primärgruppeninhabern Absenzen in der Zukunft für Mitglieder ihrer Gruppen zu registrieren"
#: preferences.py:43
msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
msgstr "Daten von der ersten Stunde zu weiteren folgenden Stunden übernehmen"
#: preferences.py:28
#: preferences.py:46
msgid "This will carry over data only if the data in the following periods are empty."
msgstr "Dies wird die Daten nur übernehmen, wenn die Daten in den Folgestunden leer sind."
#: preferences.py:38
#: preferences.py:56
msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
msgstr "Erlaube Lehrkräften, Unterrichtsstunden bereits am gleichen Tag und nicht erst zu Beginn der Stunde zu öffnen"
#: preferences.py:41
#: preferences.py:59
msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
msgstr "Unterrichtsstunden in der Vergangenheit werden nicht durch diese Einstellung beeinflusst, sie können immer geöffnet werden."
......@@ -204,78 +266,166 @@ msgstr "Unterrichtsstunden in der Vergangenheit werden nicht durch diese Einstel
msgid "Edit"
msgstr "Bearbeiten"
#: tables.py:22 tables.py:42
#: tables.py:22 tables.py:42 templates/alsijil/class_register/person.html:249
msgid "Delete"
msgstr "Löschen"
#: templates/alsijil/class_register/groups.html:20
#, fuzzy
#| msgid "No students available."
#: templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/week_view.html:256
#: templates/alsijil/partials/persons_with_stats.html:115
msgid "Register absence"
msgstr "Abwesenheit eintragen"
#: templates/alsijil/absences/register.html:9
#: templates/alsijil/class_register/lesson.html:242
msgid "Person"
msgstr "Person"
#: templates/alsijil/class_register/groups.html:21
msgid "Students"
msgstr "Schüler*innen"
#: templates/alsijil/class_register/groups.html:35
#: templates/alsijil/class_register/groups.html:69
#: templates/alsijil/class_register/week_view.html:40
#: templates/alsijil/class_register/week_view.html:51
msgid "Students list"
msgstr "Schüler*innenliste"
#: templates/alsijil/class_register/groups.html:39
#: templates/alsijil/class_register/groups.html:75
#: templates/alsijil/class_register/persons.html:27
#: templates/alsijil/class_register/persons.html:43
#: templates/alsijil/class_register/students_list.html:16
#: templates/alsijil/class_register/students_list.html:35
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
msgstr "Wochenansicht"
#: templates/alsijil/class_register/groups.html:44
#: templates/alsijil/class_register/groups.html:82
#: templates/alsijil/class_register/persons.html:31
#: templates/alsijil/class_register/persons.html:50
#: templates/alsijil/class_register/students_list.html:20
#: templates/alsijil/class_register/students_list.html:42
#: templates/alsijil/class_register/week_view.html:44
#: templates/alsijil/class_register/week_view.html:58
msgid "Generate printout"
msgstr "Ausdruck generieren"
#: templates/alsijil/class_register/groups.html:52
#: templates/alsijil/class_register/groups.html:88
msgid "No groups available."
msgstr "Keine Schüler*innen verfügbar."
msgstr "Keine Gruppen verfügbar."
#: templates/alsijil/class_register/groups.html:64
msgid "students"
msgstr "Schüler*innen"
#: templates/alsijil/class_register/lesson.html:6
#: templates/alsijil/class_register/lesson.html:5
msgid "Lesson"
msgstr "Unterrichtsstunde"
#: templates/alsijil/class_register/lesson.html:14
#: templates/alsijil/class_register/lesson.html:83
#: templates/alsijil/class_register/lesson.html:20
msgid "Back to week view"
msgstr "Zurück zur Wochenübersicht"
#: templates/alsijil/class_register/lesson.html:29
msgid "My previous lesson"
msgstr "Meine vorherige Stunde"
#: templates/alsijil/class_register/lesson.html:38
msgid "My next lesson"
msgstr "Meine nächste Stunde"
#: templates/alsijil/class_register/lesson.html:46
#: templates/alsijil/class_register/lesson.html:167
#, python-format
msgid "%(period)s. period"
msgstr "%(period)s. Stunde"
#: templates/alsijil/class_register/lesson.html:38
#: templates/alsijil/class_register/lesson.html:77
#: templates/alsijil/class_register/lesson.html:359
#, python-format
msgid ""
"\n"
" Previous %(subject)s lesson\n"
" "
msgstr ""
"\n"
" Vorherige %(subject)s Stunde\n"
" "
#: templates/alsijil/class_register/lesson.html:85
#: templates/alsijil/class_register/lesson.html:367
#, python-format
msgid ""
"\n"
" Next %(subject)s lesson\n"
" "
msgstr ""
"\n"
" Nächste %(subject)s Stunde\n"
" "
#: templates/alsijil/class_register/lesson.html:107
msgid "Previous lesson"
msgstr "Vorherige Unterrichtsstunde"
#: templates/alsijil/class_register/lesson.html:46
msgid "Next lesson"
msgstr "Nächste Unterrichtsstunde"
#: templates/alsijil/class_register/lesson.html:68
#: templates/alsijil/class_register/lesson.html:249
#: templates/alsijil/class_register/lesson.html:111
#: templates/alsijil/class_register/lesson.html:342
msgid "Change history"
msgstr "Veränderungen"
#: templates/alsijil/class_register/lesson.html:82
#: templates/alsijil/class_register/lesson.html:166
msgid "Overview: Previous lesson"
msgstr "Übersicht: Vorherige Stunde"
#: templates/alsijil/class_register/lesson.html:89
#: templates/alsijil/class_register/lesson.html:173
msgid "Lesson topic of previous lesson:"
msgstr "Stundenthema der vorherigen Stunde:"
#: templates/alsijil/class_register/lesson.html:96
#: templates/alsijil/class_register/lesson.html:180
msgid "Homework for this lesson:"
msgstr "Hausaufgaben zu dieser Stunde:"
#: templates/alsijil/class_register/lesson.html:103
#: templates/alsijil/class_register/lesson.html:187
msgid "Group notes for previous lesson:"
msgstr "Gruppennotizen für die vorherige Stunde:"
#: templates/alsijil/class_register/lesson.html:110
#: templates/alsijil/class_register/lesson.html:194
msgid "Absent persons:"
msgstr "Abwesende Personen:"
#: templates/alsijil/class_register/lesson.html:117
#: templates/alsijil/class_register/lesson.html:201
msgid "Late persons:"
msgstr "Verspätete Personen:"
#: templates/alsijil/class_register/lesson.html:165
#: templates/alsijil/class_register/person.html:86
#: templates/alsijil/class_register/lesson.html:244
#: templates/alsijil/class_register/person.html:110
#: templates/alsijil/partials/persons_with_stats.html:17
#: templates/alsijil/partials/persons_with_stats.html:34
#: templates/alsijil/partials/persons_with_stats.html:91
#: templates/alsijil/print/full_register.html:287
msgid "Tardiness"
msgstr "Verspätung"
#: templates/alsijil/class_register/lesson.html:188
#: templates/alsijil/class_register/lesson.html:267
msgid "Tardiness (in m)"
msgstr "Verspätung (in m)"
#: templates/alsijil/class_register/person.html:7
#: templates/alsijil/class_register/person.html:8
msgid "Class register: person"
msgstr "Klassenbuch: Person"
#: templates/alsijil/class_register/person.html:11
#: templates/alsijil/class_register/person.html:16
#: templates/alsijil/class_register/students_list.html:10
msgid "Back"
msgstr "Zurück"
#: templates/alsijil/class_register/person.html:19
#, python-format
msgid ""
"\n"
......@@ -286,120 +436,131 @@ msgstr ""
" Klassenbuchübersicht für %(person)s\n"
" "
#: templates/alsijil/class_register/person.html:19
#: templates/alsijil/class_register/person.html:36
#: templates/alsijil/partials/legend.html:14
msgid "Unexcused absences"
msgstr "Unentschuldigte Fehlzeiten"
#: templates/alsijil/class_register/person.html:27
#: templates/alsijil/class_register/person.html:44
#: templates/alsijil/class_register/person.html:160
#: templates/alsijil/class_register/person.html:202
#: templates/alsijil/class_register/person.html:46
#: templates/alsijil/class_register/person.html:65
#: templates/alsijil/class_register/person.html:190
#: templates/alsijil/class_register/person.html:237
msgid "Mark as"
msgstr "Markiere als"
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/person.html:47
#: templates/alsijil/class_register/person.html:163
#: templates/alsijil/class_register/person.html:205
#, fuzzy
#| msgid "Delete filter"
#: templates/alsijil/class_register/person.html:49
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:193
#: templates/alsijil/class_register/person.html:199
#: templates/alsijil/class_register/person.html:240
#: templates/alsijil/class_register/person.html:246
msgid "Delete note"
msgstr "Filter löschen"
msgstr "Notiz löschen"
#: templates/alsijil/class_register/person.html:55
msgid "There are unexcused lessons."
#: templates/alsijil/class_register/person.html:78
msgid "There are no unexcused lessons."
msgstr "Es gibt keine unentschuldigten Unterrichtsstunden."
#: templates/alsijil/class_register/person.html:59
#: templates/alsijil/class_register/person.html:83
msgid "Statistics on absences, tardiness and remarks"
msgstr "Statistiken zu Fehlzeiten, Verspätungen und Bemerkungen"
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:92
#: templates/alsijil/partials/legend.html:10
#: templates/alsijil/partials/persons_with_stats.html:16
#: templates/alsijil/partials/persons_with_stats.html:26
#: templates/alsijil/partials/persons_with_stats.html:69
#: templates/alsijil/print/full_register.html:269
msgid "Absences"
msgstr "Fehlstunden"
#: templates/alsijil/class_register/person.html:72
#: templates/alsijil/class_register/person.html:96
#: templates/alsijil/print/full_register.html:274
msgid "thereof"
msgstr "davon"
#: templates/alsijil/class_register/person.html:82
#: templates/alsijil/class_register/person.html:106
#: templates/alsijil/partials/persons_with_stats.html:86
#: templates/alsijil/print/full_register.html:81
#: templates/alsijil/print/full_register.html:283
msgid "Unexcused"
msgstr "Unentschuldigt"
#: templates/alsijil/class_register/person.html:102
#: templates/alsijil/class_register/person.html:127
#: templates/alsijil/print/full_register.html:304
msgid "Relevant personal notes"
msgstr "Relevante persönliche Notizen"
#: templates/alsijil/class_register/person.html:118
#: templates/alsijil/class_register/person.html:143
#, python-format
msgid "Week %(week)s"
msgstr "Woche %(week)s"
#: templates/alsijil/class_register/person.html:126
#: templates/alsijil/class_register/person.html:135
#: templates/alsijil/class_register/person.html:152
#: templates/alsijil/class_register/person.html:163
msgid "Mark all as"
msgstr "Alle als markieren"
#: templates/alsijil/class_register/person.html:187
#: templates/alsijil/class_register/person.html:222
#, python-format
msgid "%(late)s' late"
msgstr "%(late)s' verspätet"
#: templates/alsijil/class_register/persons.html:22
msgid "No students available."
msgstr "Keine Schüler*innen verfügbar."
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
msgstr "Wochenansicht"
#: templates/alsijil/class_register/students_list.html:5
#: templates/alsijil/class_register/students_list.html:12
#, python-format
msgid "Students list: %(group)s"
msgstr "Schüler*innenliste: %(group)s"
#: templates/alsijil/class_register/week_view.html:30
#: templates/alsijil/class_register/week_view.html:23
msgid "Select"
msgstr "Auswählen"
#: templates/alsijil/class_register/week_view.html:38
#: templates/alsijil/class_register/week_view.html:31
#, python-format
msgid ""
"CW %(week)s:\n"
" %(instance)s"
msgstr "KW %(week)s: %(instance)s"
#: templates/alsijil/class_register/week_view.html:58
#: templates/alsijil/class_register/week_view.html:84
msgid "Period"
msgstr "Stunde"
#: templates/alsijil/class_register/week_view.html:60
#: templates/alsijil/class_register/week_view.html:86
msgid "Groups"
msgstr "Gruppen"
#: templates/alsijil/class_register/week_view.html:62
#: templates/alsijil/class_register/week_view.html:88
#: templates/alsijil/class_register/week_view.html:163
#: templates/alsijil/print/full_register.html:169
#: templates/alsijil/print/full_register.html:200
msgid "Subject"
msgstr "Fach"
#: templates/alsijil/class_register/week_view.html:63
#: templates/alsijil/class_register/week_view.html:89
#: templates/alsijil/class_register/week_view.html:173
msgid "Teachers"
msgstr "Lehrkräfte"
#: templates/alsijil/class_register/week_view.html:120
#: templates/alsijil/class_register/week_view.html:262
msgid "unexcused"
msgstr "unentschuldigt"
#: templates/alsijil/class_register/week_view.html:123
#: templates/alsijil/class_register/week_view.html:265
msgid "Summed up tardiness"
msgstr "Summierte Verspätung"
#: templates/alsijil/class_register/week_view.html:152
#: templates/alsijil/class_register/week_view.html:268
#: templates/alsijil/partials/persons_with_stats.html:94
msgid "Count of tardiness"
msgstr "Anzahl der Verspätungen"
#: templates/alsijil/class_register/week_view.html:297
msgid "No lessons available"
msgstr "Keine Stunden verfügbar"
#: templates/alsijil/class_register/week_view.html:155
#: templates/alsijil/class_register/week_view.html:300
msgid ""
"\n"
" There are no lessons for the selected group or teacher in this week.\n"
......@@ -411,7 +572,7 @@ msgstr ""
#: templates/alsijil/excuse_type/create.html:6
#: templates/alsijil/excuse_type/create.html:7
#: templates/alsijil/excuse_type/list.html:16
#: templates/alsijil/excuse_type/list.html:18
msgid "Create excuse type"
msgstr "Entschuldigungsart erstellen"
......@@ -443,16 +604,33 @@ msgstr "Zusätzliche Markierung erstellen"
msgid "Edit extra mark"
msgstr "Zusätzliche Markierung bearbeiten"
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:27
#: templates/alsijil/partials/persons_with_stats.html:44
#: templates/alsijil/print/full_register.html:126
msgid "(e)"
msgstr "(e)"
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:33
#: templates/alsijil/partials/persons_with_stats.html:50
#: templates/alsijil/print/full_register.html:130
msgid "(u)"
msgstr "(u)"
#: templates/alsijil/partials/legend.html:4
msgid "Legend"
msgstr "Legende"
#: templates/alsijil/partials/legend.html:7
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr "Allgemein"
#: templates/alsijil/partials/legend.html:18
msgid "Excused absences"
msgstr "Entschuldigte Fehlzeiten"
#: templates/alsijil/partials/lesson_status_icon.html:6
msgid "Data complete"
msgstr "Daten vollständig"
......@@ -481,6 +659,27 @@ msgstr "Vertretung"
msgid "e"
msgstr "e"
#: templates/alsijil/partials/persons_with_stats.html:7
msgid "No students available."
msgstr "Keine Schüler*innen verfügbar."
#: templates/alsijil/partials/persons_with_stats.html:15
#: templates/alsijil/partials/persons_with_stats.html:25
msgid "Primary group"
msgstr "Primärgruppe"
#: templates/alsijil/partials/persons_with_stats.html:43
msgid "Sum"
msgstr "Summe"
#: templates/alsijil/partials/persons_with_stats.html:107
msgid "Show more details"
msgstr "Mehr Details anzeigen"
#: templates/alsijil/partials/persons_with_stats.html:108
msgid "Details"
msgstr "Details"
#: templates/alsijil/print/full_register.html:6
msgid "Class register:"
msgstr "Klassenbuch:"
......@@ -541,17 +740,13 @@ msgstr "Schulleitung"
msgid "Abbreviations"
msgstr "Abkürzungen"
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr "Allgemein"
#: templates/alsijil/print/full_register.html:78
msgid "Late"
msgstr "Verspätet"
#: templates/alsijil/print/full_register.html:89
msgid "Custom excuse types"
msgstr "Benutzerdefinierte Entschuldigunsarten"
msgstr "Benutzerdefinierte Entschuldigungsarten"
#: templates/alsijil/print/full_register.html:101
msgid "Available extra marks"
......@@ -659,70 +854,67 @@ msgstr "Unterrichtsdokumentation für Woche"
msgid "Notes"
msgstr "Notizen"
#: views.py:78
#: views.py:69
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."
#: views.py:96
#: views.py:95
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."
#: views.py:122
#: views.py:133
msgid "The lesson documentation has been saved."
msgstr "Die Stunden-Dokumentation wurde gespeichert."
#: views.py:143
#: views.py:156
msgid "The personal notes have been saved."
msgstr "Die persönlichen Notizen wurden gespeichert."
#: views.py:351
msgid "There is no current school term."
msgstr "Es gibt aktuell kein Schuljahr."
#: views.py:532
#: views.py:587
msgid "The absences have been marked as excused."
msgstr "Die Fehlzeiten wurden als entschuldigt markiert."
#: views.py:548
#: views.py:605
msgid "The absence has been marked as excused."
msgstr "Die Fehlzeit wurde als entschuldigt markiert."
#: views.py:653
#: views.py:735
msgid "The absence has been saved."
msgstr "Die Abwesenheit wurde gespeichert."
#: views.py:670
#, fuzzy
#| msgid "The personal notes have been saved."
#: views.py:754
msgid "The personal note has been deleted."
msgstr "Die persönlichen Notizen wurden gespeichert."
msgstr "Die persönliche Notiz wurde gelöscht."
#: views.py:691
#: views.py:775
msgid "The extra mark has been created."
msgstr "Die zusätzliche Markierung wurde erstellt."
#: views.py:702
#: views.py:786
msgid "The extra mark has been saved."
msgstr "Die zusätzliche Markierung wurde gespeichert."
#: views.py:712
#: views.py:796
msgid "The extra mark has been deleted."
msgstr "Die zusätzliche Markierung wurde gelöscht."
#: views.py:732
#: views.py:816
msgid "The excuse type has been created."
msgstr "Die Entschuldigungsart wurde erstellt."
#: views.py:743
#: views.py:827
msgid "The excuse type has been saved."
msgstr "Die Entschuldigunsart wurde gespeichert."
#: views.py:753
#: views.py:837
msgid "The excuse type has been deleted."
msgstr "Die Entschuldigungsart wurde gelöscht."
#~ msgid "There is no current school term."
#~ msgstr "Es gibt aktuell kein Schuljahr."
#~ msgid "Manage absence"
#~ msgstr "Abwesenheiten verwalten"
......@@ -759,9 +951,6 @@ msgstr "Die Entschuldigungsart wurde gelöscht."
#~ msgid "Room"
#~ msgstr "Raum"
#~ msgid "List of all personal note filters"
#~ msgstr "Liste aller Filter für persönliche Notizen"
#~ msgid "Subs."
#~ msgstr "Vertr."
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-11 11:08+0200\n"
"POT-Creation-Date: 2020-11-14 12:23+0100\n"
"PO-Revision-Date: 2020-07-26 14:08+0000\n"
"Last-Translator: Marlene Grundey <grundema@katharineum.de>\n"
"Language-Team: French <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/fr/>\n"
......@@ -18,11 +18,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.0.1\n"
#: forms.py:26
#: forms.py:29
msgid "Homework for the next lesson"
msgstr ""
#: forms.py:51 templates/alsijil/print/full_register.html:199
#: forms.py:54 templates/alsijil/class_register/week_view.html:168
#: templates/alsijil/print/full_register.html:199
msgid "Group"
msgstr "Groupe"
......@@ -31,63 +32,59 @@ msgstr "Groupe"
msgid "Teacher"
msgstr "Profs"
#: forms.py:74
#: forms.py:72
msgid "You can't select a group and a teacher both."
msgstr ""
#: forms.py:100
#: forms.py:125
msgid "Start date"
msgstr "Date de début"
#: forms.py:101
#: forms.py:126
msgid "End date"
msgstr "Date de fin"
#: forms.py:102
#: forms.py:127
#, fuzzy
#| msgid "From period"
msgid "Start period"
msgstr "De la période"
#: forms.py:103
#: forms.py:128
#, fuzzy
#| msgid "From period"
msgid "End period"
msgstr "De la période"
#: forms.py:105 templates/alsijil/class_register/lesson.html:163
msgid "Person"
msgstr "Personne"
#: forms.py:107 templates/alsijil/class_register/lesson.html:164
#: templates/alsijil/class_register/person.html:172
#: templates/alsijil/class_register/week_view.html:119
#: forms.py:129 templates/alsijil/class_register/lesson.html:243
#: templates/alsijil/class_register/person.html:207
#: templates/alsijil/class_register/week_view.html:261
#: templates/alsijil/print/full_register.html:75
#: templates/alsijil/print/full_register.html:312
msgid "Absent"
msgstr "Absent(e)"
#: forms.py:108 templates/alsijil/class_register/lesson.html:166
#: templates/alsijil/class_register/person.html:74
#: templates/alsijil/class_register/person.html:180
#: forms.py:130 templates/alsijil/class_register/lesson.html:245
#: templates/alsijil/class_register/person.html:98
#: templates/alsijil/class_register/person.html:215
#: templates/alsijil/partials/mark_as_buttons.html:2
#: templates/alsijil/partials/mark_as_buttons.html:3
#: templates/alsijil/partials/persons_with_stats.html:74
#: templates/alsijil/print/full_register.html:84
#: templates/alsijil/print/full_register.html:275
msgid "Excused"
msgstr "Excusé"
#: forms.py:110 models.py:38 models.py:69
#: templates/alsijil/class_register/lesson.html:167
#: templates/alsijil/class_register/lesson.html:202
#: forms.py:132 models.py:41 models.py:74
#: templates/alsijil/class_register/lesson.html:246
#: templates/alsijil/class_register/lesson.html:281
#, fuzzy
#| msgid "Excused"
msgid "Excuse type"
msgstr "Excusé"
#: forms.py:115 templates/alsijil/class_register/lesson.html:170
#: templates/alsijil/class_register/lesson.html:223
#: templates/alsijil/class_register/lesson.html:231
#: forms.py:137 templates/alsijil/class_register/lesson.html:248
#: templates/alsijil/class_register/lesson.html:302
#: templates/alsijil/print/full_register.html:314
msgid "Remarks"
msgstr "Remarque"
......@@ -100,121 +97,201 @@ msgstr "Registre de la classe"
msgid "Current lesson"
msgstr "Lecon actuelle"
#: menus.py:22
#: menus.py:27
msgid "Current week"
msgstr "Semaine actuelle"
#: menus.py:28 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:9
#: menus.py:38 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:8
#, fuzzy
#| msgid "Group"
msgid "My groups"
msgstr "Groupe"
#: menus.py:34
#: menus.py:49
#, fuzzy
#| msgid "Personal overview"
msgid "My overview"
msgstr "Vue d'ensemble personnelle"
#: menus.py:40 templates/alsijil/class_register/persons.html:7
#: templates/alsijil/class_register/persons.html:11
#: menus.py:60 templates/alsijil/class_register/persons.html:5
#: templates/alsijil/class_register/persons.html:9
msgid "My students"
msgstr ""
#: menus.py:46 templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
msgid "Register absence"
msgstr "Registre de Absence"
#: menus.py:52 models.py:39 templates/alsijil/excuse_type/list.html:8
#: menus.py:71 models.py:42 templates/alsijil/excuse_type/list.html:8
#: templates/alsijil/excuse_type/list.html:9
#: templates/alsijil/partials/legend.html:26
#, fuzzy
#| msgid "Excused"
msgid "Excuse types"
msgstr "Excusé"
#: menus.py:58 models.py:75 models.py:210
#: templates/alsijil/class_register/lesson.html:168
#: menus.py:82 models.py:80 models.py:215
#: templates/alsijil/class_register/lesson.html:247
#: templates/alsijil/extra_mark/list.html:8
#: templates/alsijil/extra_mark/list.html:9
#: templates/alsijil/partials/legend.html:41
#: templates/alsijil/partials/persons_with_stats.html:19
#: templates/alsijil/print/full_register.html:293
msgid "Extra marks"
msgstr ""
#: models.py:25 models.py:196
#: model_extensions.py:145
msgid "Can view week overview of group class register"
msgstr ""
#: model_extensions.py:149
msgid "Can view lesson overview of group class register"
msgstr ""
#: model_extensions.py:152
#, fuzzy
#| msgid "List of all personal note filters"
msgid "Can view all personal notes of a group"
msgstr "Liste de filtres de notes personnelles"
#: model_extensions.py:155
#, fuzzy
#| msgid "List of all personal note filters"
msgid "Can edit all personal notes of a group"
msgstr "Liste de filtres de notes personnelles"
#: model_extensions.py:158
#, fuzzy
#| msgid "Lesson documentation for calendar week"
msgid "Can view all lesson documentation of a group"
msgstr "Documentation de cours pour la semaine calendrier"
#: model_extensions.py:161
#, fuzzy
#| msgid "Lesson documentation for calendar week"
msgid "Can edit all lesson documentation of a group"
msgstr "Documentation de cours pour la semaine calendrier"
#: model_extensions.py:163
msgid "Can view full register of a group"
msgstr ""
#: model_extensions.py:165
msgid "Can register an absence for all members of a group"
msgstr ""
#: model_extensions.py:168
#, fuzzy
#| msgid "Class register"
msgid "Can register an absence for a person"
msgstr "Registre de la classe"
#: models.py:28 models.py:201
#, fuzzy
#| msgid "First name"
msgid "Short name"
msgstr "Prénom"
#: models.py:27 models.py:198
#: models.py:30 models.py:203 templates/alsijil/class_register/groups.html:20
#: templates/alsijil/partials/persons_with_stats.html:14
#: templates/alsijil/partials/persons_with_stats.html:24
msgid "Name"
msgstr ""
#: models.py:55 models.py:126
#: models.py:60 models.py:131
msgid "Year"
msgstr ""
#: models.py:106
#: models.py:111
#, fuzzy
#| msgid "Personal notes"
msgid "Personal note"
msgstr "Notes personnelles"
#: models.py:107 templates/alsijil/class_register/lesson.html:64
#: templates/alsijil/class_register/lesson.html:156
#: templates/alsijil/class_register/week_view.html:112
#: models.py:112 templates/alsijil/class_register/lesson.html:101
#: templates/alsijil/class_register/lesson.html:233
#: templates/alsijil/class_register/week_view.html:68
#: templates/alsijil/class_register/week_view.html:242
msgid "Personal notes"
msgstr "Notes personnelles"
#: models.py:132 templates/alsijil/class_register/week_view.html:64
#: models.py:137 templates/alsijil/class_register/lesson.html:129
#: templates/alsijil/class_register/week_view.html:90
#: templates/alsijil/class_register/week_view.html:177
#: templates/alsijil/print/full_register.html:371
msgid "Lesson topic"
msgstr "Sujet de cours"
#: models.py:133 templates/alsijil/print/full_register.html:372
#: models.py:138 templates/alsijil/class_register/lesson.html:137
#: templates/alsijil/class_register/week_view.html:91
#: templates/alsijil/class_register/week_view.html:183
#: templates/alsijil/class_register/week_view.html:216
#: templates/alsijil/print/full_register.html:372
msgid "Homework"
msgstr "Devoirs"
#: models.py:135
#: models.py:140 templates/alsijil/class_register/lesson.html:145
#: templates/alsijil/class_register/week_view.html:92
#: templates/alsijil/class_register/week_view.html:189
#: templates/alsijil/class_register/week_view.html:222
#, fuzzy
#| msgid "Group"
msgid "Group note"
msgstr "Groupe"
#: models.py:178 templates/alsijil/class_register/lesson.html:60
#: templates/alsijil/class_register/lesson.html:143
#: models.py:183 templates/alsijil/class_register/lesson.html:97
#: templates/alsijil/class_register/lesson.html:120
msgid "Lesson documentation"
msgstr "Documentation de cours"
#: models.py:179
#: models.py:184 templates/alsijil/class_register/week_view.html:67
#, fuzzy
#| msgid "Lesson documentation"
msgid "Lesson documentations"
msgstr "Documentation de cours"
#: models.py:209
#: models.py:214
msgid "Extra mark"
msgstr ""
#: models.py:222
msgid "Can view week overview"
msgstr ""
#: models.py:223
#, fuzzy
#| msgid "Register absence"
msgid "Can register absence"
msgstr "Registre de Absence"
#: models.py:224
#, fuzzy
#| msgid "List of all personal note filters"
msgid "Can list all personal note filters"
msgstr "Liste de filtres de notes personnelles"
#: preferences.py:16
msgid "Block adding personal notes for cancelled lessons"
msgstr ""
#: preferences.py:25
#: preferences.py:24
msgid "Allow users to view their own personal notes"
msgstr ""
#: preferences.py:33
msgid "Allow primary group owners to register future absences for students in their groups"
msgstr ""
#: preferences.py:43
msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
msgstr ""
#: preferences.py:28
#: preferences.py:46
msgid "This will carry over data only if the data in the following periods are empty."
msgstr ""
#: preferences.py:38
#: preferences.py:56
msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
msgstr ""
#: preferences.py:41
#: preferences.py:59
msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
msgstr ""
......@@ -222,87 +299,175 @@ msgstr ""
msgid "Edit"
msgstr ""
#: tables.py:22 tables.py:42
#: tables.py:22 tables.py:42 templates/alsijil/class_register/person.html:249
msgid "Delete"
msgstr ""
#: templates/alsijil/class_register/groups.html:20
#: templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/week_view.html:256
#: templates/alsijil/partials/persons_with_stats.html:115
msgid "Register absence"
msgstr "Registre de Absence"
#: templates/alsijil/absences/register.html:9
#: templates/alsijil/class_register/lesson.html:242
msgid "Person"
msgstr "Personne"
#: templates/alsijil/class_register/groups.html:21
msgid "Students"
msgstr ""
#: templates/alsijil/class_register/groups.html:35
#: templates/alsijil/class_register/groups.html:69
#: templates/alsijil/class_register/week_view.html:40
#: templates/alsijil/class_register/week_view.html:51
msgid "Students list"
msgstr ""
#: templates/alsijil/class_register/groups.html:39
#: templates/alsijil/class_register/groups.html:75
#: templates/alsijil/class_register/persons.html:27
#: templates/alsijil/class_register/persons.html:43
#: templates/alsijil/class_register/students_list.html:16
#: templates/alsijil/class_register/students_list.html:35
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
msgstr "Vue de semaine"
#: templates/alsijil/class_register/groups.html:44
#: templates/alsijil/class_register/groups.html:82
#: templates/alsijil/class_register/persons.html:31
#: templates/alsijil/class_register/persons.html:50
#: templates/alsijil/class_register/students_list.html:20
#: templates/alsijil/class_register/students_list.html:42
#: templates/alsijil/class_register/week_view.html:44
#: templates/alsijil/class_register/week_view.html:58
msgid "Generate printout"
msgstr ""
#: templates/alsijil/class_register/groups.html:52
#: templates/alsijil/class_register/groups.html:88
msgid "No groups available."
msgstr ""
#: templates/alsijil/class_register/lesson.html:6
#: templates/alsijil/class_register/groups.html:64
msgid "students"
msgstr ""
#: templates/alsijil/class_register/lesson.html:5
msgid "Lesson"
msgstr "Cours"
#: templates/alsijil/class_register/lesson.html:14
#: templates/alsijil/class_register/lesson.html:83
#, fuzzy, python-format
#| msgid "From period"
msgid "%(period)s. period"
msgstr "De la période"
#: templates/alsijil/class_register/lesson.html:20
#, fuzzy
#| msgid "Week view"
msgid "Back to week view"
msgstr "Vue de semaine"
#: templates/alsijil/class_register/lesson.html:29
#, fuzzy
#| msgid "Current lesson"
msgid "My previous lesson"
msgstr "Lecon actuelle"
#: templates/alsijil/class_register/lesson.html:38
#, fuzzy
#| msgid "Current lesson"
msgid "Previous lesson"
msgid "My next lesson"
msgstr "Lecon actuelle"
#: templates/alsijil/class_register/lesson.html:46
#: templates/alsijil/class_register/lesson.html:167
#, fuzzy, python-format
#| msgid "From period"
msgid "%(period)s. period"
msgstr "De la période"
#: templates/alsijil/class_register/lesson.html:77
#: templates/alsijil/class_register/lesson.html:359
#, python-format
msgid ""
"\n"
" Previous %(subject)s lesson\n"
" "
msgstr ""
#: templates/alsijil/class_register/lesson.html:85
#: templates/alsijil/class_register/lesson.html:367
#, python-format
msgid ""
"\n"
" Next %(subject)s lesson\n"
" "
msgstr ""
#: templates/alsijil/class_register/lesson.html:107
#, fuzzy
#| msgid "Current lesson"
msgid "Next lesson"
msgid "Previous lesson"
msgstr "Lecon actuelle"
#: templates/alsijil/class_register/lesson.html:68
#: templates/alsijil/class_register/lesson.html:249
#: templates/alsijil/class_register/lesson.html:111
#: templates/alsijil/class_register/lesson.html:342
msgid "Change history"
msgstr "Changement d' histoire"
#: templates/alsijil/class_register/lesson.html:82
#: templates/alsijil/class_register/lesson.html:166
msgid "Overview: Previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:89
#: templates/alsijil/class_register/lesson.html:173
msgid "Lesson topic of previous lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:96
#: templates/alsijil/class_register/lesson.html:180
msgid "Homework for this lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:103
#: templates/alsijil/class_register/lesson.html:187
msgid "Group notes for previous lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:110
#: templates/alsijil/class_register/lesson.html:194
#, fuzzy
#| msgid "Absences"
msgid "Absent persons:"
msgstr "Absences"
#: templates/alsijil/class_register/lesson.html:117
#: templates/alsijil/class_register/lesson.html:201
msgid "Late persons:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:165
#: templates/alsijil/class_register/person.html:86
#: templates/alsijil/class_register/lesson.html:244
#: templates/alsijil/class_register/person.html:110
#: templates/alsijil/partials/persons_with_stats.html:17
#: templates/alsijil/partials/persons_with_stats.html:34
#: templates/alsijil/partials/persons_with_stats.html:91
#: templates/alsijil/print/full_register.html:287
msgid "Tardiness"
msgstr "Retard"
#: templates/alsijil/class_register/lesson.html:188
#: templates/alsijil/class_register/lesson.html:267
#, fuzzy
#| msgid "Tardiness"
msgid "Tardiness (in m)"
msgstr "Retard"
#: templates/alsijil/class_register/person.html:7
#: templates/alsijil/class_register/person.html:8
#, fuzzy
#| msgid "Class register"
msgid "Class register: person"
msgstr "Registre de la classe"
#: templates/alsijil/class_register/person.html:11
#: templates/alsijil/class_register/person.html:16
#: templates/alsijil/class_register/students_list.html:10
msgid "Back"
msgstr ""
#: templates/alsijil/class_register/person.html:19
#, python-format
msgid ""
"\n"
......@@ -310,122 +475,137 @@ msgid ""
" "
msgstr ""
#: templates/alsijil/class_register/person.html:19
#: templates/alsijil/class_register/person.html:36
#: templates/alsijil/partials/legend.html:14
#, fuzzy
#| msgid "Unexcused"
msgid "Unexcused absences"
msgstr "injustifié(e)"
#: templates/alsijil/class_register/person.html:27
#: templates/alsijil/class_register/person.html:44
#: templates/alsijil/class_register/person.html:160
#: templates/alsijil/class_register/person.html:202
#: templates/alsijil/class_register/person.html:46
#: templates/alsijil/class_register/person.html:65
#: templates/alsijil/class_register/person.html:190
#: templates/alsijil/class_register/person.html:237
msgid "Mark as"
msgstr ""
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/person.html:47
#: templates/alsijil/class_register/person.html:163
#: templates/alsijil/class_register/person.html:205
#: templates/alsijil/class_register/person.html:49
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:193
#: templates/alsijil/class_register/person.html:199
#: templates/alsijil/class_register/person.html:240
#: templates/alsijil/class_register/person.html:246
msgid "Delete note"
msgstr ""
#: templates/alsijil/class_register/person.html:55
msgid "There are unexcused lessons."
#: templates/alsijil/class_register/person.html:78
msgid "There are no unexcused lessons."
msgstr ""
#: templates/alsijil/class_register/person.html:59
#: templates/alsijil/class_register/person.html:83
msgid "Statistics on absences, tardiness and remarks"
msgstr ""
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:92
#: templates/alsijil/partials/legend.html:10
#: templates/alsijil/partials/persons_with_stats.html:16
#: templates/alsijil/partials/persons_with_stats.html:26
#: templates/alsijil/partials/persons_with_stats.html:69
#: templates/alsijil/print/full_register.html:269
msgid "Absences"
msgstr "Absences"
#: templates/alsijil/class_register/person.html:72
#: templates/alsijil/class_register/person.html:96
#: templates/alsijil/print/full_register.html:274
msgid "thereof"
msgstr ""
#: templates/alsijil/class_register/person.html:82
#: templates/alsijil/class_register/person.html:106
#: templates/alsijil/partials/persons_with_stats.html:86
#: templates/alsijil/print/full_register.html:81
#: templates/alsijil/print/full_register.html:283
msgid "Unexcused"
msgstr "injustifié(e)"
#: templates/alsijil/class_register/person.html:102
#: templates/alsijil/class_register/person.html:127
#: templates/alsijil/print/full_register.html:304
msgid "Relevant personal notes"
msgstr "Notes personnelles importantes"
#: templates/alsijil/class_register/person.html:118
#: templates/alsijil/class_register/person.html:143
#, python-format
msgid "Week %(week)s"
msgstr ""
#: templates/alsijil/class_register/person.html:126
#: templates/alsijil/class_register/person.html:135
#: templates/alsijil/class_register/person.html:152
#: templates/alsijil/class_register/person.html:163
msgid "Mark all as"
msgstr ""
#: templates/alsijil/class_register/person.html:187
#: templates/alsijil/class_register/person.html:222
#, python-format
msgid "%(late)s' late"
msgstr ""
#: templates/alsijil/class_register/persons.html:22
msgid "No students available."
#: templates/alsijil/class_register/students_list.html:5
#: templates/alsijil/class_register/students_list.html:12
#, python-format
msgid "Students list: %(group)s"
msgstr ""
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
msgstr "Vue de semaine"
#: templates/alsijil/class_register/week_view.html:30
#: templates/alsijil/class_register/week_view.html:23
msgid "Select"
msgstr "Sélectionner"
#: templates/alsijil/class_register/week_view.html:38
#: templates/alsijil/class_register/week_view.html:31
#, python-format
msgid ""
"CW %(week)s:\n"
" %(instance)s"
msgstr ""
#: templates/alsijil/class_register/week_view.html:58
#: templates/alsijil/class_register/week_view.html:84
msgid "Period"
msgstr "Période"
#: templates/alsijil/class_register/week_view.html:60
#: templates/alsijil/class_register/week_view.html:86
#, fuzzy
#| msgid "Group"
msgid "Groups"
msgstr "Groupe"
#: templates/alsijil/class_register/week_view.html:62
#: templates/alsijil/class_register/week_view.html:88
#: templates/alsijil/class_register/week_view.html:163
#: templates/alsijil/print/full_register.html:169
#: templates/alsijil/print/full_register.html:200
msgid "Subject"
msgstr "Sujet"
#: templates/alsijil/class_register/week_view.html:63
#: templates/alsijil/class_register/week_view.html:89
#: templates/alsijil/class_register/week_view.html:173
msgid "Teachers"
msgstr "Profs"
#: templates/alsijil/class_register/week_view.html:120
#: templates/alsijil/class_register/week_view.html:262
msgid "unexcused"
msgstr "Injustifié(e)"
#: templates/alsijil/class_register/week_view.html:123
#: templates/alsijil/class_register/week_view.html:265
msgid "Summed up tardiness"
msgstr "Résumé des retards"
#: templates/alsijil/class_register/week_view.html:152
#: templates/alsijil/class_register/week_view.html:268
#: templates/alsijil/partials/persons_with_stats.html:94
#, fuzzy
#| msgid "Summed up tardiness"
msgid "Count of tardiness"
msgstr "Résumé des retards"
#: templates/alsijil/class_register/week_view.html:297
msgid "No lessons available"
msgstr ""
#: templates/alsijil/class_register/week_view.html:155
#: templates/alsijil/class_register/week_view.html:300
#, fuzzy
#| msgid ""
#| "\n"
......@@ -442,7 +622,7 @@ msgstr ""
#: templates/alsijil/excuse_type/create.html:6
#: templates/alsijil/excuse_type/create.html:7
#: templates/alsijil/excuse_type/list.html:16
#: templates/alsijil/excuse_type/list.html:18
msgid "Create excuse type"
msgstr ""
......@@ -470,16 +650,35 @@ msgstr ""
msgid "Edit extra mark"
msgstr ""
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:27
#: templates/alsijil/partials/persons_with_stats.html:44
#: templates/alsijil/print/full_register.html:126
msgid "(e)"
msgstr ""
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:33
#: templates/alsijil/partials/persons_with_stats.html:50
#: templates/alsijil/print/full_register.html:130
msgid "(u)"
msgstr ""
#: templates/alsijil/partials/legend.html:4
msgid "Legend"
msgstr ""
#: templates/alsijil/partials/legend.html:7
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr ""
#: templates/alsijil/partials/legend.html:18
#, fuzzy
#| msgid "Unexcused"
msgid "Excused absences"
msgstr "injustifié(e)"
#: templates/alsijil/partials/lesson_status_icon.html:6
msgid "Data complete"
msgstr ""
......@@ -508,6 +707,29 @@ msgstr ""
msgid "e"
msgstr "e"
#: templates/alsijil/partials/persons_with_stats.html:7
msgid "No students available."
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:15
#: templates/alsijil/partials/persons_with_stats.html:25
#, fuzzy
#| msgid "Group"
msgid "Primary group"
msgstr "Groupe"
#: templates/alsijil/partials/persons_with_stats.html:43
msgid "Sum"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:107
msgid "Show more details"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:108
msgid "Details"
msgstr ""
#: templates/alsijil/print/full_register.html:6
#, fuzzy
#| msgid "Class register"
......@@ -557,10 +779,6 @@ msgstr "Prof principale"
msgid "Abbreviations"
msgstr ""
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr ""
#: templates/alsijil/print/full_register.html:78
msgid "Late"
msgstr ""
......@@ -679,71 +897,67 @@ msgstr "Documentation de cours pour la semaine calendrier"
msgid "Notes"
msgstr "Notes"
#: views.py:78
#: views.py:69
msgid "You either selected an invalid lesson or there is currently no lesson in progress."
msgstr ""
#: views.py:96
#: views.py:95
msgid "You are not allowed to create a lesson documentation for a lesson in the future."
msgstr ""
#: views.py:122
#: views.py:133
#, fuzzy
#| msgid "Lesson documentation for calendar week"
msgid "The lesson documentation has been saved."
msgstr "Documentation de cours pour la semaine calendrier"
#: views.py:143
#: views.py:156
msgid "The personal notes have been saved."
msgstr ""
#: views.py:351
msgid "There is no current school term."
msgstr ""
#: views.py:532
#: views.py:587
msgid "The absences have been marked as excused."
msgstr ""
#: views.py:548
#: views.py:605
msgid "The absence has been marked as excused."
msgstr ""
#: views.py:653
#: views.py:735
msgid "The absence has been saved."
msgstr ""
#: views.py:670
#: views.py:754
#, fuzzy
#| msgid "Lesson documentation for calendar week"
msgid "The personal note has been deleted."
msgstr "Documentation de cours pour la semaine calendrier"
#: views.py:691
#: views.py:775
#, fuzzy
#| msgid "Lesson documentation for calendar week"
msgid "The extra mark has been created."
msgstr "Documentation de cours pour la semaine calendrier"
#: views.py:702
#: views.py:786
#, fuzzy
#| msgid "Lesson documentation for calendar week"
msgid "The extra mark has been saved."
msgstr "Documentation de cours pour la semaine calendrier"
#: views.py:712
#: views.py:796
msgid "The extra mark has been deleted."
msgstr ""
#: views.py:732
#: views.py:816
msgid "The excuse type has been created."
msgstr ""
#: views.py:743
#: views.py:827
msgid "The excuse type has been saved."
msgstr ""
#: views.py:753
#: views.py:837
msgid "The excuse type has been deleted."
msgstr ""
......@@ -781,6 +995,3 @@ msgstr ""
#~ msgid "Room"
#~ msgstr "Salle"
#~ msgid "List of all personal note filters"
#~ msgstr "Liste de filtres de notes personnelles"
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-11 11:08+0200\n"
"POT-Creation-Date: 2020-11-14 12:23+0100\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"
......@@ -18,11 +18,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.0.1\n"
#: forms.py:26
#: forms.py:29
msgid "Homework for the next lesson"
msgstr ""
#: forms.py:51 templates/alsijil/print/full_register.html:199
#: forms.py:54 templates/alsijil/class_register/week_view.html:168
#: templates/alsijil/print/full_register.html:199
msgid "Group"
msgstr "Grex"
......@@ -31,57 +32,53 @@ msgstr "Grex"
msgid "Teacher"
msgstr ""
#: forms.py:74
#: forms.py:72
msgid "You can't select a group and a teacher both."
msgstr ""
#: forms.py:100
#: forms.py:125
msgid "Start date"
msgstr ""
#: forms.py:101
#: forms.py:126
msgid "End date"
msgstr ""
#: forms.py:102
#: forms.py:127
msgid "Start period"
msgstr ""
#: forms.py:103
#: forms.py:128
msgid "End period"
msgstr ""
#: forms.py:105 templates/alsijil/class_register/lesson.html:163
msgid "Person"
msgstr "Persona"
#: forms.py:107 templates/alsijil/class_register/lesson.html:164
#: templates/alsijil/class_register/person.html:172
#: templates/alsijil/class_register/week_view.html:119
#: forms.py:129 templates/alsijil/class_register/lesson.html:243
#: templates/alsijil/class_register/person.html:207
#: templates/alsijil/class_register/week_view.html:261
#: templates/alsijil/print/full_register.html:75
#: templates/alsijil/print/full_register.html:312
msgid "Absent"
msgstr ""
#: forms.py:108 templates/alsijil/class_register/lesson.html:166
#: templates/alsijil/class_register/person.html:74
#: templates/alsijil/class_register/person.html:180
#: forms.py:130 templates/alsijil/class_register/lesson.html:245
#: templates/alsijil/class_register/person.html:98
#: templates/alsijil/class_register/person.html:215
#: templates/alsijil/partials/mark_as_buttons.html:2
#: templates/alsijil/partials/mark_as_buttons.html:3
#: templates/alsijil/partials/persons_with_stats.html:74
#: templates/alsijil/print/full_register.html:84
#: templates/alsijil/print/full_register.html:275
msgid "Excused"
msgstr ""
#: forms.py:110 models.py:38 models.py:69
#: templates/alsijil/class_register/lesson.html:167
#: templates/alsijil/class_register/lesson.html:202
#: forms.py:132 models.py:41 models.py:74
#: templates/alsijil/class_register/lesson.html:246
#: templates/alsijil/class_register/lesson.html:281
msgid "Excuse type"
msgstr ""
#: forms.py:115 templates/alsijil/class_register/lesson.html:170
#: templates/alsijil/class_register/lesson.html:223
#: templates/alsijil/class_register/lesson.html:231
#: forms.py:137 templates/alsijil/class_register/lesson.html:248
#: templates/alsijil/class_register/lesson.html:302
#: templates/alsijil/print/full_register.html:314
msgid "Remarks"
msgstr ""
......@@ -94,115 +91,181 @@ msgstr ""
msgid "Current lesson"
msgstr ""
#: menus.py:22
#: menus.py:27
msgid "Current week"
msgstr ""
#: menus.py:28 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:9
#: menus.py:38 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:8
#, fuzzy
#| msgid "Group"
msgid "My groups"
msgstr "Grex"
#: menus.py:34
#: menus.py:49
msgid "My overview"
msgstr ""
#: menus.py:40 templates/alsijil/class_register/persons.html:7
#: templates/alsijil/class_register/persons.html:11
#: menus.py:60 templates/alsijil/class_register/persons.html:5
#: templates/alsijil/class_register/persons.html:9
msgid "My students"
msgstr ""
#: menus.py:46 templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
msgid "Register absence"
msgstr ""
#: menus.py:52 models.py:39 templates/alsijil/excuse_type/list.html:8
#: menus.py:71 models.py:42 templates/alsijil/excuse_type/list.html:8
#: templates/alsijil/excuse_type/list.html:9
#: templates/alsijil/partials/legend.html:26
msgid "Excuse types"
msgstr ""
#: menus.py:58 models.py:75 models.py:210
#: templates/alsijil/class_register/lesson.html:168
#: menus.py:82 models.py:80 models.py:215
#: templates/alsijil/class_register/lesson.html:247
#: templates/alsijil/extra_mark/list.html:8
#: templates/alsijil/extra_mark/list.html:9
#: templates/alsijil/partials/legend.html:41
#: templates/alsijil/partials/persons_with_stats.html:19
#: templates/alsijil/print/full_register.html:293
msgid "Extra marks"
msgstr ""
#: models.py:25 models.py:196
#: model_extensions.py:145
msgid "Can view week overview of group class register"
msgstr ""
#: model_extensions.py:149
msgid "Can view lesson overview of group class register"
msgstr ""
#: model_extensions.py:152
msgid "Can view all personal notes of a group"
msgstr ""
#: model_extensions.py:155
msgid "Can edit all personal notes of a group"
msgstr ""
#: model_extensions.py:158
msgid "Can view all lesson documentation of a group"
msgstr ""
#: model_extensions.py:161
msgid "Can edit all lesson documentation of a group"
msgstr ""
#: model_extensions.py:163
msgid "Can view full register of a group"
msgstr ""
#: model_extensions.py:165
msgid "Can register an absence for all members of a group"
msgstr ""
#: model_extensions.py:168
msgid "Can register an absence for a person"
msgstr ""
#: models.py:28 models.py:201
#, fuzzy
#| msgid "First name"
msgid "Short name"
msgstr "Primus nomen"
#: models.py:27 models.py:198
#: models.py:30 models.py:203 templates/alsijil/class_register/groups.html:20
#: templates/alsijil/partials/persons_with_stats.html:14
#: templates/alsijil/partials/persons_with_stats.html:24
msgid "Name"
msgstr ""
#: models.py:55 models.py:126
#: models.py:60 models.py:131
msgid "Year"
msgstr ""
#: models.py:106
#: models.py:111
#, fuzzy
#| msgid "Person"
msgid "Personal note"
msgstr "Persona"
#: models.py:107 templates/alsijil/class_register/lesson.html:64
#: templates/alsijil/class_register/lesson.html:156
#: templates/alsijil/class_register/week_view.html:112
#: models.py:112 templates/alsijil/class_register/lesson.html:101
#: templates/alsijil/class_register/lesson.html:233
#: templates/alsijil/class_register/week_view.html:68
#: templates/alsijil/class_register/week_view.html:242
msgid "Personal notes"
msgstr ""
#: models.py:132 templates/alsijil/class_register/week_view.html:64
#: models.py:137 templates/alsijil/class_register/lesson.html:129
#: templates/alsijil/class_register/week_view.html:90
#: templates/alsijil/class_register/week_view.html:177
#: templates/alsijil/print/full_register.html:371
msgid "Lesson topic"
msgstr ""
#: models.py:133 templates/alsijil/print/full_register.html:372
#: models.py:138 templates/alsijil/class_register/lesson.html:137
#: templates/alsijil/class_register/week_view.html:91
#: templates/alsijil/class_register/week_view.html:183
#: templates/alsijil/class_register/week_view.html:216
#: templates/alsijil/print/full_register.html:372
msgid "Homework"
msgstr ""
#: models.py:135
#: models.py:140 templates/alsijil/class_register/lesson.html:145
#: templates/alsijil/class_register/week_view.html:92
#: templates/alsijil/class_register/week_view.html:189
#: templates/alsijil/class_register/week_view.html:222
#, fuzzy
#| msgid "Group"
msgid "Group note"
msgstr "Grex"
#: models.py:178 templates/alsijil/class_register/lesson.html:60
#: templates/alsijil/class_register/lesson.html:143
#: models.py:183 templates/alsijil/class_register/lesson.html:97
#: templates/alsijil/class_register/lesson.html:120
msgid "Lesson documentation"
msgstr ""
#: models.py:179
#: models.py:184 templates/alsijil/class_register/week_view.html:67
msgid "Lesson documentations"
msgstr ""
#: models.py:209
#: models.py:214
msgid "Extra mark"
msgstr ""
#: models.py:222
msgid "Can view week overview"
msgstr ""
#: models.py:223
msgid "Can register absence"
msgstr ""
#: models.py:224
msgid "Can list all personal note filters"
msgstr ""
#: preferences.py:16
msgid "Block adding personal notes for cancelled lessons"
msgstr ""
#: preferences.py:25
#: preferences.py:24
msgid "Allow users to view their own personal notes"
msgstr ""
#: preferences.py:33
msgid "Allow primary group owners to register future absences for students in their groups"
msgstr ""
#: preferences.py:43
msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
msgstr ""
#: preferences.py:28
#: preferences.py:46
msgid "This will carry over data only if the data in the following periods are empty."
msgstr ""
#: preferences.py:38
#: preferences.py:56
msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
msgstr ""
#: preferences.py:41
#: preferences.py:59
msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
msgstr ""
......@@ -210,76 +273,160 @@ msgstr ""
msgid "Edit"
msgstr ""
#: tables.py:22 tables.py:42
#: tables.py:22 tables.py:42 templates/alsijil/class_register/person.html:249
msgid "Delete"
msgstr ""
#: templates/alsijil/class_register/groups.html:20
#: templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/week_view.html:256
#: templates/alsijil/partials/persons_with_stats.html:115
msgid "Register absence"
msgstr ""
#: templates/alsijil/absences/register.html:9
#: templates/alsijil/class_register/lesson.html:242
msgid "Person"
msgstr "Persona"
#: templates/alsijil/class_register/groups.html:21
msgid "Students"
msgstr ""
#: templates/alsijil/class_register/groups.html:35
#: templates/alsijil/class_register/groups.html:69
#: templates/alsijil/class_register/week_view.html:40
#: templates/alsijil/class_register/week_view.html:51
msgid "Students list"
msgstr ""
#: templates/alsijil/class_register/groups.html:39
#: templates/alsijil/class_register/groups.html:75
#: templates/alsijil/class_register/persons.html:27
#: templates/alsijil/class_register/persons.html:43
#: templates/alsijil/class_register/students_list.html:16
#: templates/alsijil/class_register/students_list.html:35
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
msgstr ""
#: templates/alsijil/class_register/groups.html:44
#: templates/alsijil/class_register/groups.html:82
#: templates/alsijil/class_register/persons.html:31
#: templates/alsijil/class_register/persons.html:50
#: templates/alsijil/class_register/students_list.html:20
#: templates/alsijil/class_register/students_list.html:42
#: templates/alsijil/class_register/week_view.html:44
#: templates/alsijil/class_register/week_view.html:58
msgid "Generate printout"
msgstr ""
#: templates/alsijil/class_register/groups.html:52
#: templates/alsijil/class_register/groups.html:88
msgid "No groups available."
msgstr ""
#: templates/alsijil/class_register/lesson.html:6
#: templates/alsijil/class_register/groups.html:64
msgid "students"
msgstr ""
#: templates/alsijil/class_register/lesson.html:5
msgid "Lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:14
#: templates/alsijil/class_register/lesson.html:83
#, python-format
msgid "%(period)s. period"
#: templates/alsijil/class_register/lesson.html:20
msgid "Back to week view"
msgstr ""
#: templates/alsijil/class_register/lesson.html:29
msgid "My previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:38
msgid "Previous lesson"
msgid "My next lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:46
msgid "Next lesson"
#: templates/alsijil/class_register/lesson.html:167
#, python-format
msgid "%(period)s. period"
msgstr ""
#: templates/alsijil/class_register/lesson.html:77
#: templates/alsijil/class_register/lesson.html:359
#, python-format
msgid ""
"\n"
" Previous %(subject)s lesson\n"
" "
msgstr ""
#: templates/alsijil/class_register/lesson.html:85
#: templates/alsijil/class_register/lesson.html:367
#, python-format
msgid ""
"\n"
" Next %(subject)s lesson\n"
" "
msgstr ""
#: templates/alsijil/class_register/lesson.html:107
msgid "Previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:68
#: templates/alsijil/class_register/lesson.html:249
#: templates/alsijil/class_register/lesson.html:111
#: templates/alsijil/class_register/lesson.html:342
msgid "Change history"
msgstr ""
#: templates/alsijil/class_register/lesson.html:82
#: templates/alsijil/class_register/lesson.html:166
msgid "Overview: Previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:89
#: templates/alsijil/class_register/lesson.html:173
msgid "Lesson topic of previous lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:96
#: templates/alsijil/class_register/lesson.html:180
msgid "Homework for this lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:103
#: templates/alsijil/class_register/lesson.html:187
msgid "Group notes for previous lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:110
#: templates/alsijil/class_register/lesson.html:194
msgid "Absent persons:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:117
#: templates/alsijil/class_register/lesson.html:201
msgid "Late persons:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:165
#: templates/alsijil/class_register/person.html:86
#: templates/alsijil/class_register/lesson.html:244
#: templates/alsijil/class_register/person.html:110
#: templates/alsijil/partials/persons_with_stats.html:17
#: templates/alsijil/partials/persons_with_stats.html:34
#: templates/alsijil/partials/persons_with_stats.html:91
#: templates/alsijil/print/full_register.html:287
msgid "Tardiness"
msgstr ""
#: templates/alsijil/class_register/lesson.html:188
#: templates/alsijil/class_register/lesson.html:267
msgid "Tardiness (in m)"
msgstr ""
#: templates/alsijil/class_register/person.html:7
#: templates/alsijil/class_register/person.html:8
msgid "Class register: person"
msgstr ""
#: templates/alsijil/class_register/person.html:11
#: templates/alsijil/class_register/person.html:16
#: templates/alsijil/class_register/students_list.html:10
msgid "Back"
msgstr ""
#: templates/alsijil/class_register/person.html:19
#, python-format
msgid ""
"\n"
......@@ -287,120 +434,133 @@ msgid ""
" "
msgstr ""
#: templates/alsijil/class_register/person.html:19
#: templates/alsijil/class_register/person.html:36
#: templates/alsijil/partials/legend.html:14
msgid "Unexcused absences"
msgstr ""
#: templates/alsijil/class_register/person.html:27
#: templates/alsijil/class_register/person.html:44
#: templates/alsijil/class_register/person.html:160
#: templates/alsijil/class_register/person.html:202
#: templates/alsijil/class_register/person.html:46
#: templates/alsijil/class_register/person.html:65
#: templates/alsijil/class_register/person.html:190
#: templates/alsijil/class_register/person.html:237
msgid "Mark as"
msgstr ""
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/person.html:47
#: templates/alsijil/class_register/person.html:163
#: templates/alsijil/class_register/person.html:205
#: templates/alsijil/class_register/person.html:49
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:193
#: templates/alsijil/class_register/person.html:199
#: templates/alsijil/class_register/person.html:240
#: templates/alsijil/class_register/person.html:246
msgid "Delete note"
msgstr ""
#: templates/alsijil/class_register/person.html:55
msgid "There are unexcused lessons."
#: templates/alsijil/class_register/person.html:78
msgid "There are no unexcused lessons."
msgstr ""
#: templates/alsijil/class_register/person.html:59
#: templates/alsijil/class_register/person.html:83
msgid "Statistics on absences, tardiness and remarks"
msgstr ""
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:92
#: templates/alsijil/partials/legend.html:10
#: templates/alsijil/partials/persons_with_stats.html:16
#: templates/alsijil/partials/persons_with_stats.html:26
#: templates/alsijil/partials/persons_with_stats.html:69
#: templates/alsijil/print/full_register.html:269
msgid "Absences"
msgstr ""
#: templates/alsijil/class_register/person.html:72
#: templates/alsijil/class_register/person.html:96
#: templates/alsijil/print/full_register.html:274
msgid "thereof"
msgstr ""
#: templates/alsijil/class_register/person.html:82
#: templates/alsijil/class_register/person.html:106
#: templates/alsijil/partials/persons_with_stats.html:86
#: templates/alsijil/print/full_register.html:81
#: templates/alsijil/print/full_register.html:283
msgid "Unexcused"
msgstr ""
#: templates/alsijil/class_register/person.html:102
#: templates/alsijil/class_register/person.html:127
#: templates/alsijil/print/full_register.html:304
msgid "Relevant personal notes"
msgstr ""
#: templates/alsijil/class_register/person.html:118
#: templates/alsijil/class_register/person.html:143
#, python-format
msgid "Week %(week)s"
msgstr ""
#: templates/alsijil/class_register/person.html:126
#: templates/alsijil/class_register/person.html:135
#: templates/alsijil/class_register/person.html:152
#: templates/alsijil/class_register/person.html:163
msgid "Mark all as"
msgstr ""
#: templates/alsijil/class_register/person.html:187
#: templates/alsijil/class_register/person.html:222
#, python-format
msgid "%(late)s' late"
msgstr ""
#: templates/alsijil/class_register/persons.html:22
msgid "No students available."
msgstr ""
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
#: templates/alsijil/class_register/students_list.html:5
#: templates/alsijil/class_register/students_list.html:12
#, python-format
msgid "Students list: %(group)s"
msgstr ""
#: templates/alsijil/class_register/week_view.html:30
#: templates/alsijil/class_register/week_view.html:23
msgid "Select"
msgstr ""
#: templates/alsijil/class_register/week_view.html:38
#: templates/alsijil/class_register/week_view.html:31
#, python-format
msgid ""
"CW %(week)s:\n"
" %(instance)s"
msgstr ""
#: templates/alsijil/class_register/week_view.html:58
#: templates/alsijil/class_register/week_view.html:84
msgid "Period"
msgstr ""
#: templates/alsijil/class_register/week_view.html:60
#: templates/alsijil/class_register/week_view.html:86
#, fuzzy
#| msgid "Group"
msgid "Groups"
msgstr "Grex"
#: templates/alsijil/class_register/week_view.html:62
#: templates/alsijil/class_register/week_view.html:88
#: templates/alsijil/class_register/week_view.html:163
#: templates/alsijil/print/full_register.html:169
#: templates/alsijil/print/full_register.html:200
msgid "Subject"
msgstr ""
#: templates/alsijil/class_register/week_view.html:63
#: templates/alsijil/class_register/week_view.html:89
#: templates/alsijil/class_register/week_view.html:173
msgid "Teachers"
msgstr ""
#: templates/alsijil/class_register/week_view.html:120
#: templates/alsijil/class_register/week_view.html:262
msgid "unexcused"
msgstr ""
#: templates/alsijil/class_register/week_view.html:123
#: templates/alsijil/class_register/week_view.html:265
msgid "Summed up tardiness"
msgstr ""
#: templates/alsijil/class_register/week_view.html:152
#: templates/alsijil/class_register/week_view.html:268
#: templates/alsijil/partials/persons_with_stats.html:94
msgid "Count of tardiness"
msgstr ""
#: templates/alsijil/class_register/week_view.html:297
msgid "No lessons available"
msgstr ""
#: templates/alsijil/class_register/week_view.html:155
#: templates/alsijil/class_register/week_view.html:300
msgid ""
"\n"
" There are no lessons for the selected group or teacher in this week.\n"
......@@ -409,7 +569,7 @@ msgstr ""
#: templates/alsijil/excuse_type/create.html:6
#: templates/alsijil/excuse_type/create.html:7
#: templates/alsijil/excuse_type/list.html:16
#: templates/alsijil/excuse_type/list.html:18
msgid "Create excuse type"
msgstr ""
......@@ -437,16 +597,33 @@ msgstr ""
msgid "Edit extra mark"
msgstr ""
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:27
#: templates/alsijil/partials/persons_with_stats.html:44
#: templates/alsijil/print/full_register.html:126
msgid "(e)"
msgstr ""
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:33
#: templates/alsijil/partials/persons_with_stats.html:50
#: templates/alsijil/print/full_register.html:130
msgid "(u)"
msgstr ""
#: templates/alsijil/partials/legend.html:4
msgid "Legend"
msgstr ""
#: templates/alsijil/partials/legend.html:7
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr ""
#: templates/alsijil/partials/legend.html:18
msgid "Excused absences"
msgstr ""
#: templates/alsijil/partials/lesson_status_icon.html:6
msgid "Data complete"
msgstr ""
......@@ -475,6 +652,29 @@ msgstr ""
msgid "e"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:7
msgid "No students available."
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:15
#: templates/alsijil/partials/persons_with_stats.html:25
#, fuzzy
#| msgid "Group"
msgid "Primary group"
msgstr "Grex"
#: templates/alsijil/partials/persons_with_stats.html:43
msgid "Sum"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:107
msgid "Show more details"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:108
msgid "Details"
msgstr ""
#: templates/alsijil/print/full_register.html:6
msgid "Class register:"
msgstr ""
......@@ -522,10 +722,6 @@ msgstr ""
msgid "Abbreviations"
msgstr ""
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr ""
#: templates/alsijil/print/full_register.html:78
msgid "Late"
msgstr ""
......@@ -640,63 +836,59 @@ msgstr ""
msgid "Notes"
msgstr ""
#: views.py:78
#: views.py:69
msgid "You either selected an invalid lesson or there is currently no lesson in progress."
msgstr ""
#: views.py:96
#: views.py:95
msgid "You are not allowed to create a lesson documentation for a lesson in the future."
msgstr ""
#: views.py:122
#: views.py:133
msgid "The lesson documentation has been saved."
msgstr ""
#: views.py:143
#: views.py:156
msgid "The personal notes have been saved."
msgstr ""
#: views.py:351
msgid "There is no current school term."
msgstr ""
#: views.py:532
#: views.py:587
msgid "The absences have been marked as excused."
msgstr ""
#: views.py:548
#: views.py:605
msgid "The absence has been marked as excused."
msgstr ""
#: views.py:653
#: views.py:735
msgid "The absence has been saved."
msgstr ""
#: views.py:670
#: views.py:754
msgid "The personal note has been deleted."
msgstr ""
#: views.py:691
#: views.py:775
msgid "The extra mark has been created."
msgstr ""
#: views.py:702
#: views.py:786
msgid "The extra mark has been saved."
msgstr ""
#: views.py:712
#: views.py:796
msgid "The extra mark has been deleted."
msgstr ""
#: views.py:732
#: views.py:816
msgid "The excuse type has been created."
msgstr ""
#: views.py:743
#: views.py:827
msgid "The excuse type has been saved."
msgstr ""
#: views.py:753
#: views.py:837
msgid "The excuse type has been deleted."
msgstr ""
......
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-11 11:08+0200\n"
"POT-Creation-Date: 2020-11-14 12:23+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -17,11 +17,12 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: forms.py:26
#: forms.py:29
msgid "Homework for the next lesson"
msgstr ""
#: forms.py:51 templates/alsijil/print/full_register.html:199
#: forms.py:54 templates/alsijil/class_register/week_view.html:168
#: templates/alsijil/print/full_register.html:199
msgid "Group"
msgstr ""
......@@ -30,57 +31,53 @@ msgstr ""
msgid "Teacher"
msgstr ""
#: forms.py:74
#: forms.py:72
msgid "You can't select a group and a teacher both."
msgstr ""
#: forms.py:100
#: forms.py:125
msgid "Start date"
msgstr ""
#: forms.py:101
#: forms.py:126
msgid "End date"
msgstr ""
#: forms.py:102
#: forms.py:127
msgid "Start period"
msgstr ""
#: forms.py:103
#: forms.py:128
msgid "End period"
msgstr ""
#: forms.py:105 templates/alsijil/class_register/lesson.html:163
msgid "Person"
msgstr ""
#: forms.py:107 templates/alsijil/class_register/lesson.html:164
#: templates/alsijil/class_register/person.html:172
#: templates/alsijil/class_register/week_view.html:119
#: forms.py:129 templates/alsijil/class_register/lesson.html:243
#: templates/alsijil/class_register/person.html:207
#: templates/alsijil/class_register/week_view.html:261
#: templates/alsijil/print/full_register.html:75
#: templates/alsijil/print/full_register.html:312
msgid "Absent"
msgstr ""
#: forms.py:108 templates/alsijil/class_register/lesson.html:166
#: templates/alsijil/class_register/person.html:74
#: templates/alsijil/class_register/person.html:180
#: forms.py:130 templates/alsijil/class_register/lesson.html:245
#: templates/alsijil/class_register/person.html:98
#: templates/alsijil/class_register/person.html:215
#: templates/alsijil/partials/mark_as_buttons.html:2
#: templates/alsijil/partials/mark_as_buttons.html:3
#: templates/alsijil/partials/persons_with_stats.html:74
#: templates/alsijil/print/full_register.html:84
#: templates/alsijil/print/full_register.html:275
msgid "Excused"
msgstr ""
#: forms.py:110 models.py:38 models.py:69
#: templates/alsijil/class_register/lesson.html:167
#: templates/alsijil/class_register/lesson.html:202
#: forms.py:132 models.py:41 models.py:74
#: templates/alsijil/class_register/lesson.html:246
#: templates/alsijil/class_register/lesson.html:281
msgid "Excuse type"
msgstr ""
#: forms.py:115 templates/alsijil/class_register/lesson.html:170
#: templates/alsijil/class_register/lesson.html:223
#: templates/alsijil/class_register/lesson.html:231
#: forms.py:137 templates/alsijil/class_register/lesson.html:248
#: templates/alsijil/class_register/lesson.html:302
#: templates/alsijil/print/full_register.html:314
msgid "Remarks"
msgstr ""
......@@ -93,107 +90,173 @@ msgstr ""
msgid "Current lesson"
msgstr ""
#: menus.py:22
#: menus.py:27
msgid "Current week"
msgstr ""
#: menus.py:28 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:9
#: menus.py:38 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:8
msgid "My groups"
msgstr ""
#: menus.py:34
#: menus.py:49
msgid "My overview"
msgstr ""
#: menus.py:40 templates/alsijil/class_register/persons.html:7
#: templates/alsijil/class_register/persons.html:11
#: menus.py:60 templates/alsijil/class_register/persons.html:5
#: templates/alsijil/class_register/persons.html:9
msgid "My students"
msgstr ""
#: menus.py:46 templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
msgid "Register absence"
msgstr ""
#: menus.py:52 models.py:39 templates/alsijil/excuse_type/list.html:8
#: menus.py:71 models.py:42 templates/alsijil/excuse_type/list.html:8
#: templates/alsijil/excuse_type/list.html:9
#: templates/alsijil/partials/legend.html:26
msgid "Excuse types"
msgstr ""
#: menus.py:58 models.py:75 models.py:210
#: templates/alsijil/class_register/lesson.html:168
#: menus.py:82 models.py:80 models.py:215
#: templates/alsijil/class_register/lesson.html:247
#: templates/alsijil/extra_mark/list.html:8
#: templates/alsijil/extra_mark/list.html:9
#: templates/alsijil/partials/legend.html:41
#: templates/alsijil/partials/persons_with_stats.html:19
#: templates/alsijil/print/full_register.html:293
msgid "Extra marks"
msgstr ""
#: models.py:25 models.py:196
#: model_extensions.py:145
msgid "Can view week overview of group class register"
msgstr ""
#: model_extensions.py:149
msgid "Can view lesson overview of group class register"
msgstr ""
#: model_extensions.py:152
msgid "Can view all personal notes of a group"
msgstr ""
#: model_extensions.py:155
msgid "Can edit all personal notes of a group"
msgstr ""
#: model_extensions.py:158
msgid "Can view all lesson documentation of a group"
msgstr ""
#: model_extensions.py:161
msgid "Can edit all lesson documentation of a group"
msgstr ""
#: model_extensions.py:163
msgid "Can view full register of a group"
msgstr ""
#: model_extensions.py:165
msgid "Can register an absence for all members of a group"
msgstr ""
#: model_extensions.py:168
msgid "Can register an absence for a person"
msgstr ""
#: models.py:28 models.py:201
msgid "Short name"
msgstr ""
#: models.py:27 models.py:198
#: models.py:30 models.py:203 templates/alsijil/class_register/groups.html:20
#: templates/alsijil/partials/persons_with_stats.html:14
#: templates/alsijil/partials/persons_with_stats.html:24
msgid "Name"
msgstr ""
#: models.py:55 models.py:126
#: models.py:60 models.py:131
msgid "Year"
msgstr ""
#: models.py:106
#: models.py:111
msgid "Personal note"
msgstr ""
#: models.py:107 templates/alsijil/class_register/lesson.html:64
#: templates/alsijil/class_register/lesson.html:156
#: templates/alsijil/class_register/week_view.html:112
#: models.py:112 templates/alsijil/class_register/lesson.html:101
#: templates/alsijil/class_register/lesson.html:233
#: templates/alsijil/class_register/week_view.html:68
#: templates/alsijil/class_register/week_view.html:242
msgid "Personal notes"
msgstr ""
#: models.py:132 templates/alsijil/class_register/week_view.html:64
#: models.py:137 templates/alsijil/class_register/lesson.html:129
#: templates/alsijil/class_register/week_view.html:90
#: templates/alsijil/class_register/week_view.html:177
#: templates/alsijil/print/full_register.html:371
msgid "Lesson topic"
msgstr ""
#: models.py:133 templates/alsijil/print/full_register.html:372
#: models.py:138 templates/alsijil/class_register/lesson.html:137
#: templates/alsijil/class_register/week_view.html:91
#: templates/alsijil/class_register/week_view.html:183
#: templates/alsijil/class_register/week_view.html:216
#: templates/alsijil/print/full_register.html:372
msgid "Homework"
msgstr ""
#: models.py:135
#: models.py:140 templates/alsijil/class_register/lesson.html:145
#: templates/alsijil/class_register/week_view.html:92
#: templates/alsijil/class_register/week_view.html:189
#: templates/alsijil/class_register/week_view.html:222
msgid "Group note"
msgstr ""
#: models.py:178 templates/alsijil/class_register/lesson.html:60
#: templates/alsijil/class_register/lesson.html:143
#: models.py:183 templates/alsijil/class_register/lesson.html:97
#: templates/alsijil/class_register/lesson.html:120
msgid "Lesson documentation"
msgstr ""
#: models.py:179
#: models.py:184 templates/alsijil/class_register/week_view.html:67
msgid "Lesson documentations"
msgstr ""
#: models.py:209
#: models.py:214
msgid "Extra mark"
msgstr ""
#: models.py:222
msgid "Can view week overview"
msgstr ""
#: models.py:223
msgid "Can register absence"
msgstr ""
#: models.py:224
msgid "Can list all personal note filters"
msgstr ""
#: preferences.py:16
msgid "Block adding personal notes for cancelled lessons"
msgstr ""
#: preferences.py:25
#: preferences.py:24
msgid "Allow users to view their own personal notes"
msgstr ""
#: preferences.py:33
msgid "Allow primary group owners to register future absences for students in their groups"
msgstr ""
#: preferences.py:43
msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
msgstr ""
#: preferences.py:28
#: preferences.py:46
msgid "This will carry over data only if the data in the following periods are empty."
msgstr ""
#: preferences.py:38
#: preferences.py:56
msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
msgstr ""
#: preferences.py:41
#: preferences.py:59
msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
msgstr ""
......@@ -201,76 +264,160 @@ msgstr ""
msgid "Edit"
msgstr ""
#: tables.py:22 tables.py:42
#: tables.py:22 tables.py:42 templates/alsijil/class_register/person.html:249
msgid "Delete"
msgstr ""
#: templates/alsijil/class_register/groups.html:20
#: templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/week_view.html:256
#: templates/alsijil/partials/persons_with_stats.html:115
msgid "Register absence"
msgstr ""
#: templates/alsijil/absences/register.html:9
#: templates/alsijil/class_register/lesson.html:242
msgid "Person"
msgstr ""
#: templates/alsijil/class_register/groups.html:21
msgid "Students"
msgstr ""
#: templates/alsijil/class_register/groups.html:35
#: templates/alsijil/class_register/groups.html:69
#: templates/alsijil/class_register/week_view.html:40
#: templates/alsijil/class_register/week_view.html:51
msgid "Students list"
msgstr ""
#: templates/alsijil/class_register/groups.html:39
#: templates/alsijil/class_register/groups.html:75
#: templates/alsijil/class_register/persons.html:27
#: templates/alsijil/class_register/persons.html:43
#: templates/alsijil/class_register/students_list.html:16
#: templates/alsijil/class_register/students_list.html:35
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
msgstr ""
#: templates/alsijil/class_register/groups.html:44
#: templates/alsijil/class_register/groups.html:82
#: templates/alsijil/class_register/persons.html:31
#: templates/alsijil/class_register/persons.html:50
#: templates/alsijil/class_register/students_list.html:20
#: templates/alsijil/class_register/students_list.html:42
#: templates/alsijil/class_register/week_view.html:44
#: templates/alsijil/class_register/week_view.html:58
msgid "Generate printout"
msgstr ""
#: templates/alsijil/class_register/groups.html:52
#: templates/alsijil/class_register/groups.html:88
msgid "No groups available."
msgstr ""
#: templates/alsijil/class_register/lesson.html:6
#: templates/alsijil/class_register/groups.html:64
msgid "students"
msgstr ""
#: templates/alsijil/class_register/lesson.html:5
msgid "Lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:14
#: templates/alsijil/class_register/lesson.html:83
#, python-format
msgid "%(period)s. period"
#: templates/alsijil/class_register/lesson.html:20
msgid "Back to week view"
msgstr ""
#: templates/alsijil/class_register/lesson.html:29
msgid "My previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:38
msgid "Previous lesson"
msgid "My next lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:46
msgid "Next lesson"
#: templates/alsijil/class_register/lesson.html:167
#, python-format
msgid "%(period)s. period"
msgstr ""
#: templates/alsijil/class_register/lesson.html:77
#: templates/alsijil/class_register/lesson.html:359
#, python-format
msgid ""
"\n"
" Previous %(subject)s lesson\n"
" "
msgstr ""
#: templates/alsijil/class_register/lesson.html:85
#: templates/alsijil/class_register/lesson.html:367
#, python-format
msgid ""
"\n"
" Next %(subject)s lesson\n"
" "
msgstr ""
#: templates/alsijil/class_register/lesson.html:107
msgid "Previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:68
#: templates/alsijil/class_register/lesson.html:249
#: templates/alsijil/class_register/lesson.html:111
#: templates/alsijil/class_register/lesson.html:342
msgid "Change history"
msgstr ""
#: templates/alsijil/class_register/lesson.html:82
#: templates/alsijil/class_register/lesson.html:166
msgid "Overview: Previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:89
#: templates/alsijil/class_register/lesson.html:173
msgid "Lesson topic of previous lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:96
#: templates/alsijil/class_register/lesson.html:180
msgid "Homework for this lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:103
#: templates/alsijil/class_register/lesson.html:187
msgid "Group notes for previous lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:110
#: templates/alsijil/class_register/lesson.html:194
msgid "Absent persons:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:117
#: templates/alsijil/class_register/lesson.html:201
msgid "Late persons:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:165
#: templates/alsijil/class_register/person.html:86
#: templates/alsijil/class_register/lesson.html:244
#: templates/alsijil/class_register/person.html:110
#: templates/alsijil/partials/persons_with_stats.html:17
#: templates/alsijil/partials/persons_with_stats.html:34
#: templates/alsijil/partials/persons_with_stats.html:91
#: templates/alsijil/print/full_register.html:287
msgid "Tardiness"
msgstr ""
#: templates/alsijil/class_register/lesson.html:188
#: templates/alsijil/class_register/lesson.html:267
msgid "Tardiness (in m)"
msgstr ""
#: templates/alsijil/class_register/person.html:7
#: templates/alsijil/class_register/person.html:8
msgid "Class register: person"
msgstr ""
#: templates/alsijil/class_register/person.html:11
#: templates/alsijil/class_register/person.html:16
#: templates/alsijil/class_register/students_list.html:10
msgid "Back"
msgstr ""
#: templates/alsijil/class_register/person.html:19
#, python-format
msgid ""
"\n"
......@@ -278,118 +425,131 @@ msgid ""
" "
msgstr ""
#: templates/alsijil/class_register/person.html:19
#: templates/alsijil/class_register/person.html:36
#: templates/alsijil/partials/legend.html:14
msgid "Unexcused absences"
msgstr ""
#: templates/alsijil/class_register/person.html:27
#: templates/alsijil/class_register/person.html:44
#: templates/alsijil/class_register/person.html:160
#: templates/alsijil/class_register/person.html:202
#: templates/alsijil/class_register/person.html:46
#: templates/alsijil/class_register/person.html:65
#: templates/alsijil/class_register/person.html:190
#: templates/alsijil/class_register/person.html:237
msgid "Mark as"
msgstr ""
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/person.html:47
#: templates/alsijil/class_register/person.html:163
#: templates/alsijil/class_register/person.html:205
#: templates/alsijil/class_register/person.html:49
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:193
#: templates/alsijil/class_register/person.html:199
#: templates/alsijil/class_register/person.html:240
#: templates/alsijil/class_register/person.html:246
msgid "Delete note"
msgstr ""
#: templates/alsijil/class_register/person.html:55
msgid "There are unexcused lessons."
#: templates/alsijil/class_register/person.html:78
msgid "There are no unexcused lessons."
msgstr ""
#: templates/alsijil/class_register/person.html:59
#: templates/alsijil/class_register/person.html:83
msgid "Statistics on absences, tardiness and remarks"
msgstr ""
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:92
#: templates/alsijil/partials/legend.html:10
#: templates/alsijil/partials/persons_with_stats.html:16
#: templates/alsijil/partials/persons_with_stats.html:26
#: templates/alsijil/partials/persons_with_stats.html:69
#: templates/alsijil/print/full_register.html:269
msgid "Absences"
msgstr ""
#: templates/alsijil/class_register/person.html:72
#: templates/alsijil/class_register/person.html:96
#: templates/alsijil/print/full_register.html:274
msgid "thereof"
msgstr ""
#: templates/alsijil/class_register/person.html:82
#: templates/alsijil/class_register/person.html:106
#: templates/alsijil/partials/persons_with_stats.html:86
#: templates/alsijil/print/full_register.html:81
#: templates/alsijil/print/full_register.html:283
msgid "Unexcused"
msgstr ""
#: templates/alsijil/class_register/person.html:102
#: templates/alsijil/class_register/person.html:127
#: templates/alsijil/print/full_register.html:304
msgid "Relevant personal notes"
msgstr ""
#: templates/alsijil/class_register/person.html:118
#: templates/alsijil/class_register/person.html:143
#, python-format
msgid "Week %(week)s"
msgstr ""
#: templates/alsijil/class_register/person.html:126
#: templates/alsijil/class_register/person.html:135
#: templates/alsijil/class_register/person.html:152
#: templates/alsijil/class_register/person.html:163
msgid "Mark all as"
msgstr ""
#: templates/alsijil/class_register/person.html:187
#: templates/alsijil/class_register/person.html:222
#, python-format
msgid "%(late)s' late"
msgstr ""
#: templates/alsijil/class_register/persons.html:22
msgid "No students available."
msgstr ""
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
#: templates/alsijil/class_register/students_list.html:5
#: templates/alsijil/class_register/students_list.html:12
#, python-format
msgid "Students list: %(group)s"
msgstr ""
#: templates/alsijil/class_register/week_view.html:30
#: templates/alsijil/class_register/week_view.html:23
msgid "Select"
msgstr ""
#: templates/alsijil/class_register/week_view.html:38
#: templates/alsijil/class_register/week_view.html:31
#, python-format
msgid ""
"CW %(week)s:\n"
" %(instance)s"
msgstr ""
#: templates/alsijil/class_register/week_view.html:58
#: templates/alsijil/class_register/week_view.html:84
msgid "Period"
msgstr ""
#: templates/alsijil/class_register/week_view.html:60
#: templates/alsijil/class_register/week_view.html:86
msgid "Groups"
msgstr ""
#: templates/alsijil/class_register/week_view.html:62
#: templates/alsijil/class_register/week_view.html:88
#: templates/alsijil/class_register/week_view.html:163
#: templates/alsijil/print/full_register.html:169
#: templates/alsijil/print/full_register.html:200
msgid "Subject"
msgstr ""
#: templates/alsijil/class_register/week_view.html:63
#: templates/alsijil/class_register/week_view.html:89
#: templates/alsijil/class_register/week_view.html:173
msgid "Teachers"
msgstr ""
#: templates/alsijil/class_register/week_view.html:120
#: templates/alsijil/class_register/week_view.html:262
msgid "unexcused"
msgstr ""
#: templates/alsijil/class_register/week_view.html:123
#: templates/alsijil/class_register/week_view.html:265
msgid "Summed up tardiness"
msgstr ""
#: templates/alsijil/class_register/week_view.html:152
#: templates/alsijil/class_register/week_view.html:268
#: templates/alsijil/partials/persons_with_stats.html:94
msgid "Count of tardiness"
msgstr ""
#: templates/alsijil/class_register/week_view.html:297
msgid "No lessons available"
msgstr ""
#: templates/alsijil/class_register/week_view.html:155
#: templates/alsijil/class_register/week_view.html:300
msgid ""
"\n"
" There are no lessons for the selected group or teacher in this week.\n"
......@@ -398,7 +558,7 @@ msgstr ""
#: templates/alsijil/excuse_type/create.html:6
#: templates/alsijil/excuse_type/create.html:7
#: templates/alsijil/excuse_type/list.html:16
#: templates/alsijil/excuse_type/list.html:18
msgid "Create excuse type"
msgstr ""
......@@ -426,16 +586,33 @@ msgstr ""
msgid "Edit extra mark"
msgstr ""
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:27
#: templates/alsijil/partials/persons_with_stats.html:44
#: templates/alsijil/print/full_register.html:126
msgid "(e)"
msgstr ""
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:33
#: templates/alsijil/partials/persons_with_stats.html:50
#: templates/alsijil/print/full_register.html:130
msgid "(u)"
msgstr ""
#: templates/alsijil/partials/legend.html:4
msgid "Legend"
msgstr ""
#: templates/alsijil/partials/legend.html:7
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr ""
#: templates/alsijil/partials/legend.html:18
msgid "Excused absences"
msgstr ""
#: templates/alsijil/partials/lesson_status_icon.html:6
msgid "Data complete"
msgstr ""
......@@ -464,6 +641,27 @@ msgstr ""
msgid "e"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:7
msgid "No students available."
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:15
#: templates/alsijil/partials/persons_with_stats.html:25
msgid "Primary group"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:43
msgid "Sum"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:107
msgid "Show more details"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:108
msgid "Details"
msgstr ""
#: templates/alsijil/print/full_register.html:6
msgid "Class register:"
msgstr ""
......@@ -511,10 +709,6 @@ msgstr ""
msgid "Abbreviations"
msgstr ""
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr ""
#: templates/alsijil/print/full_register.html:78
msgid "Late"
msgstr ""
......@@ -629,62 +823,58 @@ msgstr ""
msgid "Notes"
msgstr ""
#: views.py:78
#: views.py:69
msgid "You either selected an invalid lesson or there is currently no lesson in progress."
msgstr ""
#: views.py:96
#: views.py:95
msgid "You are not allowed to create a lesson documentation for a lesson in the future."
msgstr ""
#: views.py:122
#: views.py:133
msgid "The lesson documentation has been saved."
msgstr ""
#: views.py:143
#: views.py:156
msgid "The personal notes have been saved."
msgstr ""
#: views.py:351
msgid "There is no current school term."
msgstr ""
#: views.py:532
#: views.py:587
msgid "The absences have been marked as excused."
msgstr ""
#: views.py:548
#: views.py:605
msgid "The absence has been marked as excused."
msgstr ""
#: views.py:653
#: views.py:735
msgid "The absence has been saved."
msgstr ""
#: views.py:670
#: views.py:754
msgid "The personal note has been deleted."
msgstr ""
#: views.py:691
#: views.py:775
msgid "The extra mark has been created."
msgstr ""
#: views.py:702
#: views.py:786
msgid "The extra mark has been saved."
msgstr ""
#: views.py:712
#: views.py:796
msgid "The extra mark has been deleted."
msgstr ""
#: views.py:732
#: views.py:816
msgid "The excuse type has been created."
msgstr ""
#: views.py:743
#: views.py:827
msgid "The excuse type has been saved."
msgstr ""
#: views.py:753
#: views.py:837
msgid "The excuse type has been deleted."
msgstr ""
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-11 11:08+0200\n"
"POT-Creation-Date: 2020-11-14 12:23+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -17,11 +17,12 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: forms.py:26
#: forms.py:29
msgid "Homework for the next lesson"
msgstr ""
#: forms.py:51 templates/alsijil/print/full_register.html:199
#: forms.py:54 templates/alsijil/class_register/week_view.html:168
#: templates/alsijil/print/full_register.html:199
msgid "Group"
msgstr ""
......@@ -30,57 +31,53 @@ msgstr ""
msgid "Teacher"
msgstr ""
#: forms.py:74
#: forms.py:72
msgid "You can't select a group and a teacher both."
msgstr ""
#: forms.py:100
#: forms.py:125
msgid "Start date"
msgstr ""
#: forms.py:101
#: forms.py:126
msgid "End date"
msgstr ""
#: forms.py:102
#: forms.py:127
msgid "Start period"
msgstr ""
#: forms.py:103
#: forms.py:128
msgid "End period"
msgstr ""
#: forms.py:105 templates/alsijil/class_register/lesson.html:163
msgid "Person"
msgstr ""
#: forms.py:107 templates/alsijil/class_register/lesson.html:164
#: templates/alsijil/class_register/person.html:172
#: templates/alsijil/class_register/week_view.html:119
#: forms.py:129 templates/alsijil/class_register/lesson.html:243
#: templates/alsijil/class_register/person.html:207
#: templates/alsijil/class_register/week_view.html:261
#: templates/alsijil/print/full_register.html:75
#: templates/alsijil/print/full_register.html:312
msgid "Absent"
msgstr ""
#: forms.py:108 templates/alsijil/class_register/lesson.html:166
#: templates/alsijil/class_register/person.html:74
#: templates/alsijil/class_register/person.html:180
#: forms.py:130 templates/alsijil/class_register/lesson.html:245
#: templates/alsijil/class_register/person.html:98
#: templates/alsijil/class_register/person.html:215
#: templates/alsijil/partials/mark_as_buttons.html:2
#: templates/alsijil/partials/mark_as_buttons.html:3
#: templates/alsijil/partials/persons_with_stats.html:74
#: templates/alsijil/print/full_register.html:84
#: templates/alsijil/print/full_register.html:275
msgid "Excused"
msgstr ""
#: forms.py:110 models.py:38 models.py:69
#: templates/alsijil/class_register/lesson.html:167
#: templates/alsijil/class_register/lesson.html:202
#: forms.py:132 models.py:41 models.py:74
#: templates/alsijil/class_register/lesson.html:246
#: templates/alsijil/class_register/lesson.html:281
msgid "Excuse type"
msgstr ""
#: forms.py:115 templates/alsijil/class_register/lesson.html:170
#: templates/alsijil/class_register/lesson.html:223
#: templates/alsijil/class_register/lesson.html:231
#: forms.py:137 templates/alsijil/class_register/lesson.html:248
#: templates/alsijil/class_register/lesson.html:302
#: templates/alsijil/print/full_register.html:314
msgid "Remarks"
msgstr ""
......@@ -93,107 +90,173 @@ msgstr ""
msgid "Current lesson"
msgstr ""
#: menus.py:22
#: menus.py:27
msgid "Current week"
msgstr ""
#: menus.py:28 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:9
#: menus.py:38 templates/alsijil/class_register/groups.html:5
#: templates/alsijil/class_register/groups.html:8
msgid "My groups"
msgstr ""
#: menus.py:34
#: menus.py:49
msgid "My overview"
msgstr ""
#: menus.py:40 templates/alsijil/class_register/persons.html:7
#: templates/alsijil/class_register/persons.html:11
#: menus.py:60 templates/alsijil/class_register/persons.html:5
#: templates/alsijil/class_register/persons.html:9
msgid "My students"
msgstr ""
#: menus.py:46 templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
msgid "Register absence"
msgstr ""
#: menus.py:52 models.py:39 templates/alsijil/excuse_type/list.html:8
#: menus.py:71 models.py:42 templates/alsijil/excuse_type/list.html:8
#: templates/alsijil/excuse_type/list.html:9
#: templates/alsijil/partials/legend.html:26
msgid "Excuse types"
msgstr ""
#: menus.py:58 models.py:75 models.py:210
#: templates/alsijil/class_register/lesson.html:168
#: menus.py:82 models.py:80 models.py:215
#: templates/alsijil/class_register/lesson.html:247
#: templates/alsijil/extra_mark/list.html:8
#: templates/alsijil/extra_mark/list.html:9
#: templates/alsijil/partials/legend.html:41
#: templates/alsijil/partials/persons_with_stats.html:19
#: templates/alsijil/print/full_register.html:293
msgid "Extra marks"
msgstr ""
#: models.py:25 models.py:196
#: model_extensions.py:145
msgid "Can view week overview of group class register"
msgstr ""
#: model_extensions.py:149
msgid "Can view lesson overview of group class register"
msgstr ""
#: model_extensions.py:152
msgid "Can view all personal notes of a group"
msgstr ""
#: model_extensions.py:155
msgid "Can edit all personal notes of a group"
msgstr ""
#: model_extensions.py:158
msgid "Can view all lesson documentation of a group"
msgstr ""
#: model_extensions.py:161
msgid "Can edit all lesson documentation of a group"
msgstr ""
#: model_extensions.py:163
msgid "Can view full register of a group"
msgstr ""
#: model_extensions.py:165
msgid "Can register an absence for all members of a group"
msgstr ""
#: model_extensions.py:168
msgid "Can register an absence for a person"
msgstr ""
#: models.py:28 models.py:201
msgid "Short name"
msgstr ""
#: models.py:27 models.py:198
#: models.py:30 models.py:203 templates/alsijil/class_register/groups.html:20
#: templates/alsijil/partials/persons_with_stats.html:14
#: templates/alsijil/partials/persons_with_stats.html:24
msgid "Name"
msgstr ""
#: models.py:55 models.py:126
#: models.py:60 models.py:131
msgid "Year"
msgstr ""
#: models.py:106
#: models.py:111
msgid "Personal note"
msgstr ""
#: models.py:107 templates/alsijil/class_register/lesson.html:64
#: templates/alsijil/class_register/lesson.html:156
#: templates/alsijil/class_register/week_view.html:112
#: models.py:112 templates/alsijil/class_register/lesson.html:101
#: templates/alsijil/class_register/lesson.html:233
#: templates/alsijil/class_register/week_view.html:68
#: templates/alsijil/class_register/week_view.html:242
msgid "Personal notes"
msgstr ""
#: models.py:132 templates/alsijil/class_register/week_view.html:64
#: models.py:137 templates/alsijil/class_register/lesson.html:129
#: templates/alsijil/class_register/week_view.html:90
#: templates/alsijil/class_register/week_view.html:177
#: templates/alsijil/print/full_register.html:371
msgid "Lesson topic"
msgstr ""
#: models.py:133 templates/alsijil/print/full_register.html:372
#: models.py:138 templates/alsijil/class_register/lesson.html:137
#: templates/alsijil/class_register/week_view.html:91
#: templates/alsijil/class_register/week_view.html:183
#: templates/alsijil/class_register/week_view.html:216
#: templates/alsijil/print/full_register.html:372
msgid "Homework"
msgstr ""
#: models.py:135
#: models.py:140 templates/alsijil/class_register/lesson.html:145
#: templates/alsijil/class_register/week_view.html:92
#: templates/alsijil/class_register/week_view.html:189
#: templates/alsijil/class_register/week_view.html:222
msgid "Group note"
msgstr ""
#: models.py:178 templates/alsijil/class_register/lesson.html:60
#: templates/alsijil/class_register/lesson.html:143
#: models.py:183 templates/alsijil/class_register/lesson.html:97
#: templates/alsijil/class_register/lesson.html:120
msgid "Lesson documentation"
msgstr ""
#: models.py:179
#: models.py:184 templates/alsijil/class_register/week_view.html:67
msgid "Lesson documentations"
msgstr ""
#: models.py:209
#: models.py:214
msgid "Extra mark"
msgstr ""
#: models.py:222
msgid "Can view week overview"
msgstr ""
#: models.py:223
msgid "Can register absence"
msgstr ""
#: models.py:224
msgid "Can list all personal note filters"
msgstr ""
#: preferences.py:16
msgid "Block adding personal notes for cancelled lessons"
msgstr ""
#: preferences.py:25
#: preferences.py:24
msgid "Allow users to view their own personal notes"
msgstr ""
#: preferences.py:33
msgid "Allow primary group owners to register future absences for students in their groups"
msgstr ""
#: preferences.py:43
msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
msgstr ""
#: preferences.py:28
#: preferences.py:46
msgid "This will carry over data only if the data in the following periods are empty."
msgstr ""
#: preferences.py:38
#: preferences.py:56
msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
msgstr ""
#: preferences.py:41
#: preferences.py:59
msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
msgstr ""
......@@ -201,76 +264,160 @@ msgstr ""
msgid "Edit"
msgstr ""
#: tables.py:22 tables.py:42
#: tables.py:22 tables.py:42 templates/alsijil/class_register/person.html:249
msgid "Delete"
msgstr ""
#: templates/alsijil/class_register/groups.html:20
#: templates/alsijil/absences/register.html:5
#: templates/alsijil/absences/register.html:6
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/week_view.html:256
#: templates/alsijil/partials/persons_with_stats.html:115
msgid "Register absence"
msgstr ""
#: templates/alsijil/absences/register.html:9
#: templates/alsijil/class_register/lesson.html:242
msgid "Person"
msgstr ""
#: templates/alsijil/class_register/groups.html:21
msgid "Students"
msgstr ""
#: templates/alsijil/class_register/groups.html:35
#: templates/alsijil/class_register/groups.html:69
#: templates/alsijil/class_register/week_view.html:40
#: templates/alsijil/class_register/week_view.html:51
msgid "Students list"
msgstr ""
#: templates/alsijil/class_register/groups.html:39
#: templates/alsijil/class_register/groups.html:75
#: templates/alsijil/class_register/persons.html:27
#: templates/alsijil/class_register/persons.html:43
#: templates/alsijil/class_register/students_list.html:16
#: templates/alsijil/class_register/students_list.html:35
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
msgstr ""
#: templates/alsijil/class_register/groups.html:44
#: templates/alsijil/class_register/groups.html:82
#: templates/alsijil/class_register/persons.html:31
#: templates/alsijil/class_register/persons.html:50
#: templates/alsijil/class_register/students_list.html:20
#: templates/alsijil/class_register/students_list.html:42
#: templates/alsijil/class_register/week_view.html:44
#: templates/alsijil/class_register/week_view.html:58
msgid "Generate printout"
msgstr ""
#: templates/alsijil/class_register/groups.html:52
#: templates/alsijil/class_register/groups.html:88
msgid "No groups available."
msgstr ""
#: templates/alsijil/class_register/lesson.html:6
#: templates/alsijil/class_register/groups.html:64
msgid "students"
msgstr ""
#: templates/alsijil/class_register/lesson.html:5
msgid "Lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:14
#: templates/alsijil/class_register/lesson.html:83
#, python-format
msgid "%(period)s. period"
#: templates/alsijil/class_register/lesson.html:20
msgid "Back to week view"
msgstr ""
#: templates/alsijil/class_register/lesson.html:29
msgid "My previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:38
msgid "Previous lesson"
msgid "My next lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:46
msgid "Next lesson"
#: templates/alsijil/class_register/lesson.html:167
#, python-format
msgid "%(period)s. period"
msgstr ""
#: templates/alsijil/class_register/lesson.html:77
#: templates/alsijil/class_register/lesson.html:359
#, python-format
msgid ""
"\n"
" Previous %(subject)s lesson\n"
" "
msgstr ""
#: templates/alsijil/class_register/lesson.html:85
#: templates/alsijil/class_register/lesson.html:367
#, python-format
msgid ""
"\n"
" Next %(subject)s lesson\n"
" "
msgstr ""
#: templates/alsijil/class_register/lesson.html:107
msgid "Previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:68
#: templates/alsijil/class_register/lesson.html:249
#: templates/alsijil/class_register/lesson.html:111
#: templates/alsijil/class_register/lesson.html:342
msgid "Change history"
msgstr ""
#: templates/alsijil/class_register/lesson.html:82
#: templates/alsijil/class_register/lesson.html:166
msgid "Overview: Previous lesson"
msgstr ""
#: templates/alsijil/class_register/lesson.html:89
#: templates/alsijil/class_register/lesson.html:173
msgid "Lesson topic of previous lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:96
#: templates/alsijil/class_register/lesson.html:180
msgid "Homework for this lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:103
#: templates/alsijil/class_register/lesson.html:187
msgid "Group notes for previous lesson:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:110
#: templates/alsijil/class_register/lesson.html:194
msgid "Absent persons:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:117
#: templates/alsijil/class_register/lesson.html:201
msgid "Late persons:"
msgstr ""
#: templates/alsijil/class_register/lesson.html:165
#: templates/alsijil/class_register/person.html:86
#: templates/alsijil/class_register/lesson.html:244
#: templates/alsijil/class_register/person.html:110
#: templates/alsijil/partials/persons_with_stats.html:17
#: templates/alsijil/partials/persons_with_stats.html:34
#: templates/alsijil/partials/persons_with_stats.html:91
#: templates/alsijil/print/full_register.html:287
msgid "Tardiness"
msgstr ""
#: templates/alsijil/class_register/lesson.html:188
#: templates/alsijil/class_register/lesson.html:267
msgid "Tardiness (in m)"
msgstr ""
#: templates/alsijil/class_register/person.html:7
#: templates/alsijil/class_register/person.html:8
msgid "Class register: person"
msgstr ""
#: templates/alsijil/class_register/person.html:11
#: templates/alsijil/class_register/person.html:16
#: templates/alsijil/class_register/students_list.html:10
msgid "Back"
msgstr ""
#: templates/alsijil/class_register/person.html:19
#, python-format
msgid ""
"\n"
......@@ -278,118 +425,131 @@ msgid ""
" "
msgstr ""
#: templates/alsijil/class_register/person.html:19
#: templates/alsijil/class_register/person.html:36
#: templates/alsijil/partials/legend.html:14
msgid "Unexcused absences"
msgstr ""
#: templates/alsijil/class_register/person.html:27
#: templates/alsijil/class_register/person.html:44
#: templates/alsijil/class_register/person.html:160
#: templates/alsijil/class_register/person.html:202
#: templates/alsijil/class_register/person.html:46
#: templates/alsijil/class_register/person.html:65
#: templates/alsijil/class_register/person.html:190
#: templates/alsijil/class_register/person.html:237
msgid "Mark as"
msgstr ""
#: templates/alsijil/class_register/person.html:30
#: templates/alsijil/class_register/person.html:47
#: templates/alsijil/class_register/person.html:163
#: templates/alsijil/class_register/person.html:205
#: templates/alsijil/class_register/person.html:49
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:193
#: templates/alsijil/class_register/person.html:199
#: templates/alsijil/class_register/person.html:240
#: templates/alsijil/class_register/person.html:246
msgid "Delete note"
msgstr ""
#: templates/alsijil/class_register/person.html:55
msgid "There are unexcused lessons."
#: templates/alsijil/class_register/person.html:78
msgid "There are no unexcused lessons."
msgstr ""
#: templates/alsijil/class_register/person.html:59
#: templates/alsijil/class_register/person.html:83
msgid "Statistics on absences, tardiness and remarks"
msgstr ""
#: templates/alsijil/class_register/person.html:68
#: templates/alsijil/class_register/person.html:92
#: templates/alsijil/partials/legend.html:10
#: templates/alsijil/partials/persons_with_stats.html:16
#: templates/alsijil/partials/persons_with_stats.html:26
#: templates/alsijil/partials/persons_with_stats.html:69
#: templates/alsijil/print/full_register.html:269
msgid "Absences"
msgstr ""
#: templates/alsijil/class_register/person.html:72
#: templates/alsijil/class_register/person.html:96
#: templates/alsijil/print/full_register.html:274
msgid "thereof"
msgstr ""
#: templates/alsijil/class_register/person.html:82
#: templates/alsijil/class_register/person.html:106
#: templates/alsijil/partials/persons_with_stats.html:86
#: templates/alsijil/print/full_register.html:81
#: templates/alsijil/print/full_register.html:283
msgid "Unexcused"
msgstr ""
#: templates/alsijil/class_register/person.html:102
#: templates/alsijil/class_register/person.html:127
#: templates/alsijil/print/full_register.html:304
msgid "Relevant personal notes"
msgstr ""
#: templates/alsijil/class_register/person.html:118
#: templates/alsijil/class_register/person.html:143
#, python-format
msgid "Week %(week)s"
msgstr ""
#: templates/alsijil/class_register/person.html:126
#: templates/alsijil/class_register/person.html:135
#: templates/alsijil/class_register/person.html:152
#: templates/alsijil/class_register/person.html:163
msgid "Mark all as"
msgstr ""
#: templates/alsijil/class_register/person.html:187
#: templates/alsijil/class_register/person.html:222
#, python-format
msgid "%(late)s' late"
msgstr ""
#: templates/alsijil/class_register/persons.html:22
msgid "No students available."
msgstr ""
#: templates/alsijil/class_register/week_view.html:6
msgid "Week view"
#: templates/alsijil/class_register/students_list.html:5
#: templates/alsijil/class_register/students_list.html:12
#, python-format
msgid "Students list: %(group)s"
msgstr ""
#: templates/alsijil/class_register/week_view.html:30
#: templates/alsijil/class_register/week_view.html:23
msgid "Select"
msgstr ""
#: templates/alsijil/class_register/week_view.html:38
#: templates/alsijil/class_register/week_view.html:31
#, python-format
msgid ""
"CW %(week)s:\n"
" %(instance)s"
msgstr ""
#: templates/alsijil/class_register/week_view.html:58
#: templates/alsijil/class_register/week_view.html:84
msgid "Period"
msgstr ""
#: templates/alsijil/class_register/week_view.html:60
#: templates/alsijil/class_register/week_view.html:86
msgid "Groups"
msgstr ""
#: templates/alsijil/class_register/week_view.html:62
#: templates/alsijil/class_register/week_view.html:88
#: templates/alsijil/class_register/week_view.html:163
#: templates/alsijil/print/full_register.html:169
#: templates/alsijil/print/full_register.html:200
msgid "Subject"
msgstr ""
#: templates/alsijil/class_register/week_view.html:63
#: templates/alsijil/class_register/week_view.html:89
#: templates/alsijil/class_register/week_view.html:173
msgid "Teachers"
msgstr ""
#: templates/alsijil/class_register/week_view.html:120
#: templates/alsijil/class_register/week_view.html:262
msgid "unexcused"
msgstr ""
#: templates/alsijil/class_register/week_view.html:123
#: templates/alsijil/class_register/week_view.html:265
msgid "Summed up tardiness"
msgstr ""
#: templates/alsijil/class_register/week_view.html:152
#: templates/alsijil/class_register/week_view.html:268
#: templates/alsijil/partials/persons_with_stats.html:94
msgid "Count of tardiness"
msgstr ""
#: templates/alsijil/class_register/week_view.html:297
msgid "No lessons available"
msgstr ""
#: templates/alsijil/class_register/week_view.html:155
#: templates/alsijil/class_register/week_view.html:300
msgid ""
"\n"
" There are no lessons for the selected group or teacher in this week.\n"
......@@ -398,7 +558,7 @@ msgstr ""
#: templates/alsijil/excuse_type/create.html:6
#: templates/alsijil/excuse_type/create.html:7
#: templates/alsijil/excuse_type/list.html:16
#: templates/alsijil/excuse_type/list.html:18
msgid "Create excuse type"
msgstr ""
......@@ -426,16 +586,33 @@ msgstr ""
msgid "Edit extra mark"
msgstr ""
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:27
#: templates/alsijil/partials/persons_with_stats.html:44
#: templates/alsijil/print/full_register.html:126
msgid "(e)"
msgstr ""
#: templates/alsijil/partials/absences.html:4
#: templates/alsijil/partials/absences.html:6
#: templates/alsijil/partials/persons_with_stats.html:33
#: templates/alsijil/partials/persons_with_stats.html:50
#: templates/alsijil/print/full_register.html:130
msgid "(u)"
msgstr ""
#: templates/alsijil/partials/legend.html:4
msgid "Legend"
msgstr ""
#: templates/alsijil/partials/legend.html:7
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr ""
#: templates/alsijil/partials/legend.html:18
msgid "Excused absences"
msgstr ""
#: templates/alsijil/partials/lesson_status_icon.html:6
msgid "Data complete"
msgstr ""
......@@ -464,6 +641,27 @@ msgstr ""
msgid "e"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:7
msgid "No students available."
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:15
#: templates/alsijil/partials/persons_with_stats.html:25
msgid "Primary group"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:43
msgid "Sum"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:107
msgid "Show more details"
msgstr ""
#: templates/alsijil/partials/persons_with_stats.html:108
msgid "Details"
msgstr ""
#: templates/alsijil/print/full_register.html:6
msgid "Class register:"
msgstr ""
......@@ -511,10 +709,6 @@ msgstr ""
msgid "Abbreviations"
msgstr ""
#: templates/alsijil/print/full_register.html:71
msgid "General"
msgstr ""
#: templates/alsijil/print/full_register.html:78
msgid "Late"
msgstr ""
......@@ -629,62 +823,58 @@ msgstr ""
msgid "Notes"
msgstr ""
#: views.py:78
#: views.py:69
msgid "You either selected an invalid lesson or there is currently no lesson in progress."
msgstr ""
#: views.py:96
#: views.py:95
msgid "You are not allowed to create a lesson documentation for a lesson in the future."
msgstr ""
#: views.py:122
#: views.py:133
msgid "The lesson documentation has been saved."
msgstr ""
#: views.py:143
#: views.py:156
msgid "The personal notes have been saved."
msgstr ""
#: views.py:351
msgid "There is no current school term."
msgstr ""
#: views.py:532
#: views.py:587
msgid "The absences have been marked as excused."
msgstr ""
#: views.py:548
#: views.py:605
msgid "The absence has been marked as excused."
msgstr ""
#: views.py:653
#: views.py:735
msgid "The absence has been saved."
msgstr ""
#: views.py:670
#: views.py:754
msgid "The personal note has been deleted."
msgstr ""
#: views.py:691
#: views.py:775
msgid "The extra mark has been created."
msgstr ""
#: views.py:702
#: views.py:786
msgid "The extra mark has been saved."
msgstr ""
#: views.py:712
#: views.py:796
msgid "The extra mark has been deleted."
msgstr ""
#: views.py:732
#: views.py:816
msgid "The excuse type has been created."
msgstr ""
#: views.py:743
#: views.py:827
msgid "The excuse type has been saved."
msgstr ""
#: views.py:753
#: views.py:837
msgid "The excuse type has been deleted."
msgstr ""
from aleksis.core.managers import CurrentSiteManagerWithoutMigrations
class PersonalNoteManager(CurrentSiteManagerWithoutMigrations):
"""Manager adding specific methods to personal notes."""
def get_queryset(self):
"""Ensure all related lesson and person data are loaded as well."""
return (
super()
.get_queryset()
.select_related(
"person",
"excuse_type",
"lesson_period",
"lesson_period__lesson",
"lesson_period__lesson__subject",
"lesson_period__period",
"lesson_period__lesson__validity",
"lesson_period__lesson__validity__school_term",
)
.prefetch_related("extra_marks")
)
......@@ -16,49 +16,78 @@ MENUS = {
"name": _("Current lesson"),
"url": "lesson",
"icon": "alarm",
"validators": ["menu_generator.validators.is_authenticated"],
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"alsijil.view_lesson_menu",
),
],
},
{
"name": _("Current week"),
"url": "week_view",
"icon": "view_week",
"validators": ["menu_generator.validators.is_authenticated"],
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"alsijil.view_week_menu",
),
],
},
{
"name": _("My groups"),
"url": "my_groups",
"icon": "people",
"validators": ["menu_generator.validators.is_authenticated"],
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"alsijil.view_my_groups",
),
],
},
{
"name": _("My overview"),
"url": "overview_me",
"icon": "insert_chart",
"validators": ["menu_generator.validators.is_authenticated"],
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"alsijil.view_person_overview_menu",
),
],
},
{
"name": _("My students"),
"url": "my_students",
"icon": "people",
"validators": ["menu_generator.validators.is_authenticated"],
},
{
"name": _("Register absence"),
"url": "register_absence",
"icon": "rate_review",
"validators": ["menu_generator.validators.is_superuser"],
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"alsijil.view_my_students",
),
],
},
{
"name": _("Excuse types"),
"url": "excuse_types",
"icon": "label",
"validators": ["menu_generator.validators.is_superuser"],
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"alsijil.view_excusetypes",
),
],
},
{
"name": _("Extra marks"),
"url": "extra_marks",
"icon": "label",
"validators": ["menu_generator.validators.is_superuser"],
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"alsijil.view_extramarks",
),
],
},
],
}
......
from datetime import date
from typing import Dict, Optional, Union
from typing import Dict, Iterable, Iterator, Optional, Union
from django.db.models import Exists, OuterRef, QuerySet
from django.db.models import Exists, OuterRef, Q, QuerySet
from django.db.models.aggregates import Count, Sum
from django.utils.translation import gettext as _
import reversion
from calendarweek import CalendarWeek
......@@ -53,16 +55,20 @@ def mark_absent(
continue
with reversion.create_revision():
personal_note, created = PersonalNote.objects.update_or_create(
person=self,
lesson_period=lesson_period,
week=wanted_week.week,
year=wanted_week.year,
defaults={
"absent": absent,
"excused": excused,
"excuse_type": excuse_type,
},
personal_note, created = (
PersonalNote.objects.select_related(None)
.prefetch_related(None)
.update_or_create(
person=self,
lesson_period=lesson_period,
week=wanted_week.week,
year=wanted_week.year,
defaults={
"absent": absent,
"excused": excused,
"excuse_type": excuse_type,
},
)
)
personal_note.groups_of_person.set(self.member_of.all())
......@@ -75,7 +81,7 @@ def mark_absent(
@LessonPeriod.method
def get_personal_notes(self, wanted_week: CalendarWeek):
def get_personal_notes(self, persons: QuerySet, wanted_week: CalendarWeek):
"""Get all personal notes for that lesson in a specified week.
Returns all linked `PersonalNote` objects, filtered by the given weeek,
......@@ -88,7 +94,7 @@ def get_personal_notes(self, wanted_week: CalendarWeek):
- Dominik George <dominik.george@teckids.org>
"""
# Find all persons in the associated groups that do not yet have a personal note for this lesson
missing_persons = Person.objects.annotate(
missing_persons = persons.annotate(
no_personal_notes=~Exists(
PersonalNote.objects.filter(
week=wanted_week.week,
......@@ -118,11 +124,51 @@ def get_personal_notes(self, wanted_week: CalendarWeek):
for personal_note in new_personal_notes:
personal_note.groups_of_person.set(personal_note.person.member_of.all())
return PersonalNote.objects.select_related("person").filter(
lesson_period=self, week=wanted_week.week, year=wanted_week.year
return (
PersonalNote.objects.filter(
lesson_period=self,
week=wanted_week.week,
year=wanted_week.year,
person__in=persons,
)
.select_related(None)
.prefetch_related(None)
.select_related("person", "excuse_type")
.prefetch_related("extra_marks")
)
# Dynamically add extra permissions to Group and Person models in core
# Note: requires migrate afterwards
Group.add_permission(
"view_week_class_register_group",
_("Can view week overview of group class register"),
)
Group.add_permission(
"view_lesson_class_register_group",
_("Can view lesson overview of group class register"),
)
Group.add_permission(
"view_personalnote_group", _("Can view all personal notes of a group")
)
Group.add_permission(
"edit_personalnote_group", _("Can edit all personal notes of a group")
)
Group.add_permission(
"view_lessondocumentation_group", _("Can view all lesson documentation of a group")
)
Group.add_permission(
"edit_lessondocumentation_group", _("Can edit all lesson documentation of a group")
)
Group.add_permission("view_full_register_group", _("Can view full register of a group"))
Group.add_permission(
"register_absence_group", _("Can register an absence for all members of a group")
)
Person.add_permission(
"register_absence_person", _("Can register an absence for a person")
)
@LessonPeriod.method
def get_lesson_documentation(
self, week: Optional[CalendarWeek] = None
......@@ -130,11 +176,14 @@ def get_lesson_documentation(
"""Get lesson documentation object for this lesson."""
if not week:
week = self.week
# Use all to make effect of prefetched data
doc_filter = filter(
lambda d: d.week == week.week and d.year == week.year,
self.documentations.all(),
)
try:
return LessonDocumentation.objects.get(
lesson_period=self, week=week.week, year=week.year
)
except LessonDocumentation.DoesNotExist:
return next(doc_filter)
except StopIteration:
return None
......@@ -152,11 +201,15 @@ def get_or_create_lesson_documentation(
@LessonPeriod.method
def get_absences(self, week: Optional[CalendarWeek] = None) -> QuerySet:
def get_absences(self, week: Optional[CalendarWeek] = None) -> Iterator:
"""Get all personal notes of absent persons for this lesson."""
if not week:
week = self.week
return self.personal_notes.filter(week=week.week, year=week.year, absent=True)
return filter(
lambda p: p.week == week.week and p.year == week.year and p.absent,
self.personal_notes.all(),
)
@LessonPeriod.method
......@@ -204,3 +257,136 @@ def get_extra_marks(
stats[extra_mark] = qs
return stats
@Group.class_method
def get_groups_with_lessons(cls: Group):
"""Get all groups which have related lessons or child groups with related lessons."""
group_pks = (
cls.objects.for_current_school_term_or_all()
.annotate(lessons_count=Count("lessons"))
.filter(lessons_count__gt=0)
.values_list("pk", flat=True)
)
groups = cls.objects.filter(
Q(child_groups__pk__in=group_pks) | Q(pk__in=group_pks)
).distinct()
return groups
@Person.method
def get_owner_groups_with_lessons(self: Person):
"""Get all groups the person is an owner of and which have related lessons.
Groups which have child groups with related lessons are also included.
"""
return Group.get_groups_with_lessons().filter(owners=self).distinct()
@Group.method
def generate_person_list_with_class_register_statistics(
self: Group, persons: Optional[Iterable] = None
) -> QuerySet:
"""Get with class register statistics annotated list of all members."""
persons = persons or self.members.all()
persons = persons.filter(
personal_notes__groups_of_person=self,
personal_notes__lesson_period__lesson__validity__school_term=self.school_term,
).annotate(
absences_count=Count(
"personal_notes__absent",
filter=Q(
personal_notes__absent=True,
personal_notes__lesson_period__lesson__validity__school_term=self.school_term,
)
& (
Q(personal_notes__lesson_period__lesson__groups=self)
| Q(personal_notes__lesson_period__lesson__groups__parent_groups=self)
),
),
excused=Count(
"personal_notes__absent",
filter=Q(
personal_notes__absent=True,
personal_notes__excused=True,
personal_notes__excuse_type__isnull=True,
personal_notes__lesson_period__lesson__validity__school_term=self.school_term,
)
& (
Q(personal_notes__lesson_period__lesson__groups=self)
| Q(personal_notes__lesson_period__lesson__groups__parent_groups=self)
),
),
unexcused=Count(
"personal_notes__absent",
filter=Q(
personal_notes__absent=True,
personal_notes__excused=False,
personal_notes__lesson_period__lesson__validity__school_term=self.school_term,
)
& (
Q(personal_notes__lesson_period__lesson__groups=self)
| Q(personal_notes__lesson_period__lesson__groups__parent_groups=self)
),
),
tardiness=Sum(
"personal_notes__late",
filter=(
Q(personal_notes__lesson_period__lesson__groups=self)
| Q(personal_notes__lesson_period__lesson__groups__parent_groups=self)
),
),
tardiness_count=Count(
"personal_notes",
filter=~Q(personal_notes__late=0)
& Q(
personal_notes__lesson_period__lesson__validity__school_term=self.school_term,
)
& (
Q(personal_notes__lesson_period__lesson__groups=self)
| Q(personal_notes__lesson_period__lesson__groups__parent_groups=self)
),
),
)
for extra_mark in ExtraMark.objects.all():
persons = persons.annotate(
**{
extra_mark.count_label: Count(
"personal_notes",
filter=Q(
personal_notes__extra_marks=extra_mark,
personal_notes__lesson_period__lesson__validity__school_term=self.school_term,
)
& (
Q(personal_notes__lesson_period__lesson__groups=self)
| Q(
personal_notes__lesson_period__lesson__groups__parent_groups=self
)
),
)
}
)
for excuse_type in ExcuseType.objects.all():
persons = persons.annotate(
**{
excuse_type.count_label: Count(
"personal_notes__absent",
filter=Q(
personal_notes__absent=True,
personal_notes__excuse_type=excuse_type,
personal_notes__lesson_period__lesson__validity__school_term=self.school_term,
)
& (
Q(personal_notes__lesson_period__lesson__groups=self)
| Q(
personal_notes__lesson_period__lesson__groups__parent_groups=self
)
),
)
}
)
return persons
from django.db import models
from django.utils.formats import date_format
from django.utils.functional import classproperty
from django.utils.translation import gettext_lazy as _
from cache_memoize import cache_memoize
from calendarweek import CalendarWeek
from aleksis.apps.alsijil.managers import PersonalNoteManager
from aleksis.apps.chronos.mixins import WeekRelatedMixin
from aleksis.apps.chronos.models import LessonPeriod
from aleksis.apps.chronos.util.date import get_current_year
......@@ -46,6 +49,8 @@ class PersonalNote(ExtensibleModel, WeekRelatedMixin):
and remarks about a student in a single lesson period.
"""
objects = PersonalNoteManager()
person = models.ForeignKey(
"core.Person", models.CASCADE, related_name="personal_notes"
)
......@@ -208,3 +213,13 @@ class ExtraMark(ExtensibleModel):
ordering = ["short_name"]
verbose_name = _("Extra mark")
verbose_name_plural = _("Extra marks")
class AlsijilGlobalPermissions(ExtensibleModel):
class Meta:
managed = False
permissions = (
("view_week", _("Can view week overview")),
("register_absence", _("Can register absence")),
("list_personal_note_filters", _("Can list all personal note filters")),
)
......@@ -16,6 +16,24 @@ class BlockPersonalNotesForCancelled(BooleanPreference):
verbose_name = _("Block adding personal notes for cancelled lessons")
@site_preferences_registry.register
class ViewOwnPersonalNotes(BooleanPreference):
section = alsijil
name = "view_own_personal_notes"
default = True
verbose_name = _("Allow users to view their own personal notes")
@site_preferences_registry.register
class RegisterAbsenceAsPrimaryGroupOwner(BooleanPreference):
section = alsijil
name = "register_absence_as_primary_group_owner"
default = True
verbose_name = _(
"Allow primary group owners to register future absences for students in their groups"
)
@site_preferences_registry.register
class CarryOverDataToNextPeriods(BooleanPreference):
section = alsijil
......
from rules import add_perm
from aleksis.core.util.predicates import (
has_global_perm,
has_object_perm,
has_person,
is_current_person,
is_site_preference_set,
)
from .util.predicates import (
has_any_object_absence,
has_lesson_group_object_perm,
has_person_group_object_perm,
has_personal_note_group_perm,
is_group_member,
is_group_owner,
is_lesson_parent_group_owner,
is_lesson_participant,
is_lesson_teacher,
is_none,
is_own_personal_note,
is_person_group_owner,
is_person_primary_group_owner,
is_personal_note_lesson_parent_group_owner,
is_personal_note_lesson_teacher,
is_teacher,
)
# View lesson
view_lesson_predicate = has_person & (
is_none # View is opened as "Current lesson"
| is_lesson_teacher
| is_lesson_participant
| is_lesson_parent_group_owner
| has_global_perm("alsijil.view_lesson")
| has_lesson_group_object_perm("core.view_week_class_register_group")
)
add_perm("alsijil.view_lesson", view_lesson_predicate)
# View lesson in menu
add_perm("alsijil.view_lesson_menu", has_person)
# View lesson personal notes
view_lesson_personal_notes_predicate = view_lesson_predicate & (
~is_lesson_participant
| is_lesson_teacher
| has_global_perm("alsijil.view_personalnote")
| has_lesson_group_object_perm("core.view_personalnote_group")
)
add_perm("alsijil.view_lesson_personalnote", view_lesson_personal_notes_predicate)
# Edit personal note
edit_lesson_personal_note_predicate = view_lesson_personal_notes_predicate & (
is_lesson_teacher
| has_global_perm("alsijil.change_personalnote")
| has_lesson_group_object_perm("core.edit_personalnote_group")
)
add_perm("alsijil.edit_lesson_personalnote", edit_lesson_personal_note_predicate)
# View personal note
view_personal_note_predicate = has_person & (
(
is_own_personal_note
& is_site_preference_set("alsijil", "view_own_personal_notes")
)
| is_personal_note_lesson_teacher
| is_personal_note_lesson_parent_group_owner
| has_global_perm("alsijil.view_personalnote")
| has_personal_note_group_perm("core.view_personalnote_group")
)
add_perm("alsijil.view_personalnote", view_personal_note_predicate)
# Edit personal note
edit_personal_note_predicate = view_personal_note_predicate & (
~is_own_personal_note
| has_global_perm("alsijil.view_personalnote")
| has_personal_note_group_perm("core.edit_personalnote_group")
)
add_perm("alsijil.edit_personalnote", edit_personal_note_predicate)
# View lesson documentation
view_lesson_documentation_predicate = view_lesson_predicate
add_perm("alsijil.view_lessondocumentation", view_lesson_documentation_predicate)
# Edit lesson documentation
edit_lesson_documentation_predicate = view_lesson_predicate & (
is_lesson_teacher
| has_global_perm("alsijil.change_lessondocumentation")
| has_lesson_group_object_perm("core.edit_lessondocumentation_group")
)
add_perm("alsijil.edit_lessondocumentation", edit_lesson_documentation_predicate)
# View week overview
view_week_predicate = has_person & (
is_current_person
| is_group_member
| is_group_owner
| has_global_perm("alsijil.view_week")
| has_object_perm("core.view_week_class_register_group")
)
add_perm("alsijil.view_week", view_week_predicate)
# View week overview in menu
add_perm("alsijil.view_week_menu", has_person)
# View week personal notes
view_week_personal_notes_predicate = has_person & (
(is_current_person & is_teacher)
| is_group_owner
| has_global_perm("alsijil.view_personalnote")
| has_object_perm("core.view_personalnote_group")
)
add_perm("alsijil.view_week_personalnote", view_week_personal_notes_predicate)
# Register absence
register_absence_predicate = has_person & (
(
is_person_primary_group_owner
& is_site_preference_set("alsijil", "register_absence_as_primary_group_owner")
)
| has_global_perm("alsijil.register_absence")
| has_object_perm("core.register_absence_person")
| has_person_group_object_perm("core.register_absence_group")
)
add_perm("alsijil.register_absence", register_absence_predicate)
# View full register for group
view_full_register_predicate = has_person & (
is_group_owner
| has_global_perm("alsijil.view_full_register")
| has_object_perm("core.view_full_register_group")
)
add_perm("alsijil.view_full_register", view_full_register_predicate)
# View students list
view_my_students_predicate = has_person & is_teacher
add_perm("alsijil.view_my_students", view_my_students_predicate)
# View groups list
view_my_groups_predicate = has_person & is_teacher
add_perm("alsijil.view_my_groups", view_my_groups_predicate)
# View students list
view_students_list_predicate = view_my_groups_predicate & (
is_group_owner
| has_global_perm("alsijil.view_personalnote")
| has_object_perm("core.view_personalnote_group")
)
add_perm("alsijil.view_students_list", view_students_list_predicate)
# View person overview
view_person_overview_predicate = has_person & (
(is_current_person & is_site_preference_set("alsijil", "view_own_personal_notes"))
| is_person_group_owner
)
add_perm("alsijil.view_person_overview", view_person_overview_predicate)
# View person overview
view_person_overview_menu_predicate = has_person
add_perm("alsijil.view_person_overview_menu", view_person_overview_menu_predicate)
# View person overview personal notes
view_person_overview_personal_notes_predicate = view_person_overview_predicate & (
(is_current_person & is_site_preference_set("alsijil", "view_own_personal_notes"))
| is_person_primary_group_owner
| has_global_perm("alsijil.view_personalnote")
| has_person_group_object_perm("core.view_personalnote_group")
)
add_perm(
"alsijil.view_person_overview_personalnote",
view_person_overview_personal_notes_predicate,
)
# Edit person overview personal notes
edit_person_overview_personal_notes_predicate = (
view_person_overview_personal_notes_predicate
& (
~is_current_person
| has_global_perm("alsijil.edit_personalnote")
| has_person_group_object_perm("core.edit_personalnote_group")
)
)
add_perm(
"alsijil.edit_person_overview_personalnote",
edit_person_overview_personal_notes_predicate,
)
# View person statistics on personal notes
view_person_statistics_personal_notes_predicate = (
view_person_overview_personal_notes_predicate
)
add_perm(
"alsijil.view_person_statistics_personalnote",
view_person_statistics_personal_notes_predicate,
)
# View excuse type list
view_excusetypes_predicate = has_person & has_global_perm("alsijil.view_excusetype")
add_perm("alsijil.view_excusetypes", view_excusetypes_predicate)
# Add excuse type
add_excusetype_predicate = view_excusetypes_predicate & has_global_perm(
"alsijil.add_excusetype"
)
add_perm("alsijil.add_excusetype", add_excusetype_predicate)
# Edit excuse type
edit_excusetype_predicate = view_excusetypes_predicate & has_global_perm(
"alsijil.change_excusetype"
)
add_perm("alsijil.edit_excusetype", edit_excusetype_predicate)
# Delete excuse type
delete_excusetype_predicate = view_excusetypes_predicate & has_global_perm(
"alsijil.delete_excusetype"
)
add_perm("alsijil.delete_excusetype", delete_excusetype_predicate)
# View extra mark list
view_extramarks_predicate = has_person & has_global_perm("alsijil.view_extramark")
add_perm("alsijil.view_extramarks", view_extramarks_predicate)
# Add extra mark
add_extramark_predicate = view_extramarks_predicate & has_global_perm(
"alsijil.add_extramark"
)
add_perm("alsijil.add_extramark", add_extramark_predicate)
# Edit extra mark
edit_extramark_predicate = view_extramarks_predicate & has_global_perm(
"alsijil.change_extramark"
)
add_perm("alsijil.edit_extramark", edit_extramark_predicate)
# Delete extra mark
delete_extramark_predicate = view_extramarks_predicate & has_global_perm(
"alsijil.delete_extramark"
)
add_perm("alsijil.delete_extramark", delete_extramark_predicate)
......@@ -7,3 +7,54 @@ table a.tr-link {
width: inherit;
height: inherit;
}
.collapsible-icon-right {
align-self: end;
flex-grow: 100;
text-align: right!important;
}
@media only screen and (min-width: 1201px) {
.hide-on-extra-large-only {
display: none;
}
}
@media only screen and (max-width: 1200px) {
.show-on-extra-large {
display: none;
}
}
@media only screen and (max-width: 600px) {
.collection .collection-item.avatar {
padding-left: 20px;
}
.collection .collection-item.avatar:not(.circle-clipper) > .circle {
position: relative;
margin-bottom: 10px;
}
}
.collapsible li .show-on-active {
display: none;
}
.collapsible li.active .show-on-active {
display: block;
}
th.chip-height {
height: 67px;
line-height: 2.2;
}
.collection-item.chip-height {
height: 52px;
line-height: 2.2;
}
li.collection-item.button-height {
height: 58px;
line-height: 2.5;
}
......@@ -10,6 +10,11 @@
text-decoration: line-through;
}
.alsijil-tardiness-text{
vertical-align: super;
}
@media only screen and (max-width : 992px) {
table.responsive-table.alsijil-table th,
table.responsive-table.alsijil-table td {
......@@ -17,3 +22,7 @@
vertical-align: top;
height: 109px;}
}
.alsijil-top-button {
margin-top: -20px;
}
......@@ -42,3 +42,9 @@ class ExcuseTypeTable(tables.Table):
text=_("Delete"),
attrs={"a": {"class": "btn-flat waves-effect waves-red red-text"}},
)
def before_render(self, request):
if not request.user.has_perm("alsijil.edit_excusetype"):
self.columns.hide("edit")
if not request.user.has_perm("alsijil.delete_excusetype"):
self.columns.hide("delete")
......@@ -6,6 +6,7 @@
{% block page_title %}{% blocktrans %}Register absence{% endblocktrans %}{% endblock %}
{% block content %}
<h6>{% trans "Person" %}: {{ person }}</h6>
<form method="post">
{% csrf_token %}
......@@ -17,7 +18,7 @@
$(document).ready(function () {
$("#id_date_start").change(function () {
$("#id_date_end").val($("#id_date_start").val());
$("#id_date_end").change();
initDatePicker("#id_date_end");
});
});
</script>
......
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load i18n %}
{% load i18n static %}
{% block browser_title %}{% blocktrans %}My groups{% endblocktrans %}{% endblock %}
{% block page_title %}
{% blocktrans %}My groups{% endblocktrans %}
{% endblock %}
{% block extra_head %}
{{ block.super }}
<link rel="stylesheet" href="{% static 'css/alsijil/alsijil.css' %}"/>
{% endblock %}
{% block content %}
<div class="collection">
<table class="highlight responsive-table hide-on-med-and-down">
<thead>
<tr>
<th>{% trans "Name" %}</th>
<th>{% trans "Students" %}</th>
<th></th>
</tr>
</thead>
{% for group in groups %}
<a class="collection-item" href="{% url "week_view" "group" group.pk %}">
{{ group }}
</a>
<tr>
<td>
{{ group }}
</td>
<td>{{ group.students_count }}</td>
<td>
<div class="right">
<a class="btn primary-color waves-effect waves-light" href="{% url "students_list" group.pk %}">
<i class="material-icons left">people</i>
{% trans "Students list" %}
</a>
<a class="btn secondary-color waves-effect waves-light" href="{% url "week_view" "group" group.pk %}">
<i class="material-icons left">view_week</i>
{% trans "Week view" %}
</a>
<a class="btn primary waves-effect waves-light" href="{% url "full_register_group" group.pk %}"
target="_blank">
<i class="material-icons left">print</i>
{% trans "Generate printout" %}
</a>
</div>
</td>
</tr>
{% empty %}
<li class="collection-item flow-text">
{% blocktrans %}No groups available.{% endblocktrans %}
</li>
<tr>
<td class="flow-text" colspan="3">
{% blocktrans %}No groups available.{% endblocktrans %}
</td>
</tr>
{% endfor %}
</table>
<div class="hide-on-large-only">
<ul class="collection">
{% for group in groups %}
<li class="collection-item">
<span class="title">{{ group }}</span>
<p>
{{ group.students_count }} {% trans "students" %}
</p>
<p>
<a class="btn primary-color waves-effect waves-light" href="{% url "week_view" "group" group.pk %}">
<i class="material-icons left">people</i>
{% trans "Students list" %}
</a>
</p>
<p>
<a class="btn secondary-color waves-effect waves-light" href="{% url "week_view" "group" group.pk %}">
<i class="material-icons left">view_week</i>
{% trans "Week view" %}
</a>
</p>
<p>
<a class="btn primary waves-effect waves-light" href="{% url "full_register_group" group.pk %}"
target="_blank">
<i class="material-icons left">print</i>
{% trans "Generate printout" %}
</a>
</p>
</li>
{% empty %}
<li class="collection-item flow-text">
{% blocktrans %}No groups available.{% endblocktrans %}
</li>
{% endfor %}
</ul>
</div>
{% endblock %}
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load week_helpers material_form_internal %}
{% load material_form i18n static %}
{% load week_helpers material_form_internal material_form i18n static rules time_helpers %}
{% block browser_title %}{% blocktrans %}Lesson{% endblocktrans %}{% endblock %}
......@@ -10,47 +9,85 @@
<link rel="stylesheet" href="{% static 'css/alsijil/lesson.css' %}"/>
{% endblock %}
{% block page_title %}
{{ day }}, {% blocktrans with period=lesson_period.period.period %}{{ period }}. period{% endblocktrans %} –
{% block content %}
{% if next_lesson_person or prev_lesson_person %}
<div class="row no-margin">
<div class="col s12 no-padding">
{# Back to week view #}
{% with lesson_period.get_lesson_documentation as lesson_doc %}
<a href="{% url "week_view_by_week" lesson_doc.year lesson_doc.week "group" lesson_period.lesson.groups.all.0.pk %}"
class="btn primary-color waves-light waves-effect alsijil-top-button">
<i class="material-icons left">chevron_left</i> {% trans "Back to week view" %}
</a>
{% endwith %}
{# Next lesson #}
{% if prev_lesson_person %}
<a class="btn primary waves-effect waves-light alsijil-top-button"
href="{% url "lesson_by_week_and_period" prev_lesson_person.week.year prev_lesson_person.week.week prev_lesson_person.id %}">
<i class="material-icons left">arrow_back</i>
{% trans "My previous lesson" %}
</a>
{% endif %}
{% for group in lesson_period.get_groups.all %}
<span>{{ group.name }}</span>,
{% endfor %}
{# Previous lesson #}
{% if next_lesson_person %}
<a class="btn primary right waves-effect waves-light alsijil-top-button"
href="{% url "lesson_by_week_and_period" next_lesson_person.week.year next_lesson_person.week.week next_lesson_person.id %}">
<i class="material-icons right">arrow_forward</i>
{% trans "My next lesson" %}
</a>
{% endif %}
</div>
</div>
{% endif %}
{{ lesson_period.get_subject.name }},
<h4>
{{ day }}, {% blocktrans with period=lesson_period.period.period %}{{ period }}. period{% endblocktrans %} –
{% for teacher in lesson_period.get_teachers.all %}
{{ teacher.short_name }}
{% endfor %}
{% for group in lesson_period.get_groups.all %}
<span>{{ group.name }}</span>,
{% endfor %}
<span class="right">
{{ lesson_period.get_subject.name }},
{% for teacher in lesson_period.get_teachers.all %}
{{ teacher.short_name }}
{% endfor %}
<span class="right">
{% include "alsijil/partials/lesson_status_icon.html" with period=lesson_period css_class="medium" %}
</span>
{% endblock %}
</h4>
<br/>
{% block content %}
<div class="row">
<div class="col s12">
{% with prev_lesson=lesson_period.prev %}
<a class="btn-flat left waves-effect waves-light"
href="{% url "lesson_by_week_and_period" prev_lesson.week.year prev_lesson.week.week prev_lesson.id %}">
<i class="material-icons left">arrow_back</i>
{% trans "Previous lesson" %}
</a>
{% endwith %}
{% has_perm "alsijil.view_lessondocumentation" user lesson_period as can_view_lesson_documentation %}
{% has_perm "alsijil.edit_lessondocumentation" user lesson_period as can_edit_lesson_documentation %}
{% has_perm "alsijil.edit_lesson_personalnote" user lesson_period as can_edit_lesson_personalnote %}
{% with next_lesson=lesson_period.next %}
<a class="btn-flat right waves-effect waves-light"
href="{% url "lesson_by_week_and_period" next_lesson.week.year next_lesson.week.week next_lesson.id %}">
<i class="material-icons right">arrow_forward</i>
{% trans "Next lesson" %}
</a>
{% endwith %}
</div>
</div>
<form method="post" class="row">
<p>
{% if can_edit_lesson_documentation or can_edit_lesson_personalnote %}
{% include "core/partials/save_button.html" %}
{% endif %}
<a class="btn waves-effect waves-light primary"
href="{% url "lesson_by_week_and_period" prev_lesson.week.year prev_lesson.week.week prev_lesson.id %}">
<i class="material-icons left">arrow_back</i>
{% blocktrans with subject=lesson_period.get_subject.name %}
Previous {{ subject }} lesson
{% endblocktrans %}
</a>
<a class="btn right waves-effect waves-light primary"
href="{% url "lesson_by_week_and_period" next_lesson.week.year next_lesson.week.week next_lesson.id %}">
<i class="material-icons right">arrow_forward</i>
{% blocktrans with subject=lesson_period.get_subject.name %}
Next {{ subject }} lesson
{% endblocktrans %}
</a>
</p>
<form method="post">
<p>{% include "core/partials/save_button.html" %}</p>
{% csrf_token %}
<div class="row">
......@@ -64,6 +101,12 @@
<a href="#personal-notes">{% trans "Personal notes" %}</a>
</li>
{% endif %}
{% has_perm "alsijil.view_lessondocumentation" user lesson_period.prev as can_view_prev_lesson_documentation %}
{% if lesson_period.prev.get_lesson_documentation and can_view_prev_lesson_documentation %}
<li class="tab">
<a href="#previous-lesson">{% trans "Previous lesson" %}</a>
</li>
{% endif %}
<li class="tab">
<a href="#version-history">{% trans "Change history" %}</a>
</li>
......@@ -71,11 +114,52 @@
</div>
<div class="col s12" id="lesson-documentation">
{% with prev_lesson=lesson_period.prev prev_doc=prev_lesson.get_lesson_documentation %}
{% with prev_doc=prev_lesson.get_lesson_documentation absences=prev_lesson.get_absences tardinesses=prev_lesson.get_tardinesses extra_marks=prev_lesson.get_extra_marks %}
{% if prev_doc %}
{% weekday_to_date prev_lesson.week prev_lesson.period.weekday as prev_date %}
<div class="card">
<div class="card-content">
<span class="card-title">
{% blocktrans %}Lesson documentation{% endblocktrans %}
</span>
{% if can_edit_lesson_documentation %}
{% form form=lesson_documentation_form %}{% endform %}
{% elif can_view_lesson_documentation %}
<table>
<tr>
<th>
{% trans "Lesson topic" %}
</th>
<td>
{{ lesson_documentation.topic }}
</td>
</tr>
<tr>
<th>
{% trans "Homework" %}
</th>
<td>
{{ lesson_documentation.homework }}
</td>
</tr>
<tr>
<th>
{% trans "Group note" %}
</th>
<td>
{{ lesson_documentation.group_note }}
</td>
</tr>
</table>
{% endif %}
</div>
</div>
</div>
{% with prev_lesson=lesson_period.prev prev_doc=prev_lesson.get_lesson_documentation %}
{% with absences=prev_lesson.get_absences tardinesses=prev_lesson.get_tardinesses extra_marks=prev_lesson.get_extra_marks %}
{% has_perm "alsijil.view_lessondocumentation" user prev_lesson as can_view_prev_lesson_documentation %}
{% if prev_doc and can_view_prev_lesson_documentation %}
{% weekday_to_date prev_lesson.week prev_lesson.period.weekday as prev_date %}
<div class="col s12" id="previous-lesson">
<div class="card">
<div class="card-content">
<span class="card-title">
......@@ -124,7 +208,10 @@
<th>{{ extra_mark.name }}</th>
<td>
{% for note in notes %}
<span>{{ note.person }}{% if not forloop.last %},{% endif %}</span>
{% has_perm "alsijil.view_personalnote" user note as can_view_personalnote %}
{% if can_view_personalnote %}
<span>{{ note.person }}{% if not forloop.last %},{% endif %}</span>
{% endif %}
{% endfor %}
</td>
</tr>
......@@ -133,29 +220,21 @@
</table>
</div>
</div>
{% endif %}
{% endwith %}
</div>
{% endif %}
{% endwith %}
<div class="card">
<div class="card-content">
<span class="card-title">
{% blocktrans %}Lesson documentation{% endblocktrans %}
</span>
{% form form=lesson_documentation_form %}{% endform %}
</div>
</div>
</div>
{% endwith %}
{% if not lesson_period.get_substitution.cancelled or not request.site.preferences.alsijil__block_personal_notes_for_cancelled %}
<div class="col s12" id="personal-notes">
<div class="card">
<div class="card-content">
<span class="card-title">
{% blocktrans %}Personal notes{% endblocktrans %}
</span>
{% form form=personal_note_formset.management_form %}{% endform %}
<span class="card-title">
{% blocktrans %}Personal notes{% endblocktrans %}
</span>
{% if can_edit_lesson_personalnote %}
{% form form=personal_note_formset.management_form %}{% endform %}
{% endif %}
<table class="striped responsive-table alsijil-table">
<thead>
......@@ -166,94 +245,129 @@
<th>{% blocktrans %}Excused{% endblocktrans %}</th>
<th>{% blocktrans %}Excuse type{% endblocktrans %}</th>
<th>{% blocktrans %}Extra marks{% endblocktrans %}</th>
<th>{% blocktrans %}Remarks{% endblocktrans %}</th>
</tr>
</thead>
<tbody>
{% for form in personal_note_formset %}
<tr>
{{ form.id }}
<td>{{ form.person_name }}{{ form.person_name.value }}</td>
<td class="center-align">
<label>
{{ form.absent }}
<span></span>
</label>
</td>
<td>
<div class="input-field">
{{ form.late }}
<label for="{{ form.absent.id_for_label }}">
{% trans "Tardiness (in m)" %}
{% if can_edit_lesson_personalnote %}
<tr>
{{ form.id }}
<td>{{ form.person_name }}{{ form.person_name.value }}</td>
<td class="center-align">
<label>
{{ form.absent }}
<span></span>
</label>
</div>
</td>
<td class="center-align">
<label>
{{ form.excused }}
<span></span>
</label>
</td>
<td>
<div class="input-field">
{{ form.excuse_type }}
<label for="{{ form.excuse_type.id_for_label }}">
{% trans "Excuse type" %}
</td>
<td>
<div class="input-field">
{{ form.late }}
<label for="{{ form.absent.id_for_label }}">
{% trans "Tardiness (in m)" %}
</label>
</div>
</td>
<td class="center-align">
<label>
{{ form.excused }}
<span></span>
</label>
</div>
</td>
<td>
{% for group, items in form.extra_marks|select_options %}
{% for choice, value, selected in items %}
<label class="{% if selected %} active{% endif %} alsijil-check-box">
<input type="checkbox"
{% if value == None or value == '' %}disabled{% else %}value="{{ value }}"{% endif %}
{% if selected %} checked="checked"{% endif %}
name="{{ form.extra_marks.html_name }}">
<span>{{ choice }}</span>
</td>
<td>
<div class="input-field">
{{ form.excuse_type }}
<label for="{{ form.excuse_type.id_for_label }}">
{% trans "Excuse type" %}
</label>
</div>
</td>
<td>
{% for group, items in form.extra_marks|select_options %}
{% for choice, value, selected in items %}
<label class="{% if selected %} active{% endif %} alsijil-check-box">
<input type="checkbox"
{% if value == None or value == '' %}disabled{% else %}value="{{ value }}"{% endif %}
{% if selected %} checked="checked"{% endif %}
name="{{ form.extra_marks.html_name }}">
<span>{{ choice }}</span>
</label>
{% endfor %}
{% endfor %}
{% endfor %}
</td>
<td>
<div class="input-field">
{{ form.remarks }}
<label for="{{ form.absent.id_for_label }}">
{% trans "Remarks" %}
</label>
</div>
</td>
<td>
<div class="input-field">
{{ form.remarks }}
<label for="{{ form.absent.id_for_label }}">
{% trans "Remarks" %}
</label>
</div>
</td>
</tr>
</td>
<td>
<div class="input-field">
{{ form.remarks }}
<label for="{{ form.absent.id_for_label }}">
{% trans "Remarks" %}
</label>
</div>
</td>
</tr>
{% else %}
<tr>
<td>{{ form.person_name.value }}</td>
<td><i class="material-icons center">{{ form.absent.value|yesno:"check,clear" }}</i></td>
<td>
<i class="material-icons center">{{ form.late.value|yesno:"check,clear" }}</i>
<span class="alsijil-tardiness-text">
{% if form.late.value %}{{ form.late.value|to_time|time:"i\m" }}{% endif %}
</span>
</td>
<td><i class="material-icons center">{{ form.excused.value|yesno:"check,clear" }}</i></td>
<td>{% firstof form.excuse_type.value "–" %}</td>
<td>
{% for extra_mark in form.extra_marks.value %}
{{ extra_mark }}{% if not forloop.last %},{% endif %}
{% empty %}
{% endfor %}
</td>
<td>{% firstof form.remarks.value "–" %}</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
{% endif %}
<div class="col s12" id="version-history">
<div class="card">
<div class="card-content">
{% if can_view_lesson_documentation %}
<div class="col s12" id="version-history">
<div class="card">
<div class="card-content">
<span class="card-title">
{% blocktrans %}Change history{% endblocktrans %}
</span>
{% include 'core/partials/crud_events.html' with obj=lesson_documentation %}
{% include 'core/partials/crud_events.html' with obj=lesson_documentation %}
</div>
</div>
</div>
</div>
{% endif %}
</div>
<p>{% include "core/partials/save_button.html" %}</p>
<p>
{% if can_edit_lesson_documentation or can_edit_lesson_personalnote %}
{% include "core/partials/save_button.html" %}
{% endif %}
<a class="btn primary waves-effect waves-light"
href="{% url "lesson_by_week_and_period" prev_lesson.week.year prev_lesson.week.week prev_lesson.id %}">
<i class="material-icons left">arrow_back</i>
{% blocktrans with subject=lesson_period.get_subject.name %}
Previous {{ subject }} lesson
{% endblocktrans %}
</a>
<a class="btn primary right waves-effect waves-light"
href="{% url "lesson_by_week_and_period" next_lesson.week.year next_lesson.week.week next_lesson.id %}">
<i class="material-icons right">arrow_forward</i>
{% blocktrans with subject=lesson_period.get_subject.name %}
Next {{ subject }} lesson
{% endblocktrans %}
</a>
</p>
</form>
{% endblock %}
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load rules %}
{% load data_helpers %}
{% load week_helpers %}
{% load i18n %}
......@@ -8,12 +9,28 @@
{% block page_title %}
{% has_perm "alsijil.view_my_students" user as has_students %}
{% if has_students %}
<a href="{% url "my_students" %}"
class="btn-flat primary-color-text waves-light waves-effect">
<i class="material-icons left">chevron_left</i> {% trans "Back" %}
</a>
{% endif %}
{% blocktrans with person=person %}
Class register overview for {{ person }}
{% endblocktrans %}
{% endblock %}
{% block content %}
{% has_perm "alsijil.edit_person_overview_personalnote" user person as can_mark_all_as_excused %}
{% has_perm "alsijil.register_absence" user person as can_register_absence %}
{% if can_register_absence %}
<a class="btn primary-color waves-effect waves-light" href="{% url "register_absence" person.pk %}">
<i class="material-icons left">rate_review</i>
{% trans "Register absence" %}
</a>
{% endif %}
<div class="row">
<div class="col s12 m12 l6">
<h5>{% trans "Unexcused absences" %}</h5>
......@@ -22,16 +39,19 @@
{% for note in unexcused_absences %}
{% weekday_to_date note.calendar_week note.lesson_period.period.weekday as note_date %}
<li class="collection-item">
<form action="" method="post" class="right hide-on-small-only" style="margin-top: -7px;">
{% csrf_token %}
{% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %}
<a class="btn-flat red-text" title="{% trans "Delete note" %}"
href="{% url "delete_personal_note" note.pk %}">
<i class="material-icons center">cancel</i>
</a>
</form>
{% has_perm "alsijil.edit_personalnote" user note as can_edit_personal_note %}
{% if can_edit_personal_note %}
<form action="" method="post" class="right hide-on-small-only" style="margin-top: -7px;">
{% csrf_token %}
{% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %}
<a class="btn-flat red-text" title="{% trans "Delete note" %}"
href="{% url "delete_personal_note" note.pk %}">
<i class="material-icons center">cancel</i>
</a>
</form>
{% endif %}
<i class="material-icons left red-text">warning</i>
<p class="no-margin">
<a href="{% url "lesson_by_week_and_period" note.year note.week note.lesson_period.pk %}">{{ note_date }}, {{ note.lesson_period }}</a>
......@@ -39,64 +59,69 @@
{% if note.remarks %}
<p class="no-margin"><em>{{ note.remarks }}</em></p>
{% endif %}
<form action="" method="post" class="hide-on-med-and-up">
{% csrf_token %}
{% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %}
<a class="btn-flat red-text" title="{% trans "Delete note" %}"
href="{% url "delete_personal_note" note.pk %}">
<i class="material-icons center">cancel</i>
</a>
</form>
{% if can_edit_personal_note %}
<form action="" method="post" class="hide-on-med-and-up">
{% csrf_token %}
{% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %}
<a class="btn-flat red-text" title="{% trans "Delete note" %}"
href="{% url "delete_personal_note" note.pk %}">
<i class="material-icons center">cancel</i>
</a>
</form>
{% endif %}
</li>
{% empty %}
<li class="collection-item flow-text">
{% trans "There are unexcused lessons." %}
<li class="collection-item avatar valign-wrapper">
<i class="material-icons left circle green white-text">check</i>
<span class="title">{% trans "There are no unexcused lessons." %}</span>
</li>
{% endfor %}
</ul>
<h5>{% trans "Statistics on absences, tardiness and remarks" %}</h5>
<ul class="collapsible">
{% for school_term, stat in stats %}
<li {% if forloop.first %}class="active"{% endif %}>
<div class="collapsible-header">
<i class="material-icons">date_range</i>{{ school_term }}</div>
<div class="collapsible-body">
<table>
<tr>
<th colspan="2">{% trans 'Absences' %}</th>
<td>{{ stat.absences_count }}</td>
</tr>
<tr>
<td rowspan="{{ excuse_types.count|add:2 }}" class="hide-on-small-only">{% trans "thereof" %}</td>
<td rowspan="{{ excuse_types.count|add:2 }}" class="hide-on-med-and-up"></td>
<th class="truncate">{% trans 'Excused' %}</th>
<td>{{ stat.excused }}</td>
</tr>
{% for excuse_type in excuse_types %}
<th>{{ excuse_type.name }}</th>
<td>{{ stat|get_dict:excuse_type.count_label }}</td>
{% endfor %}
<tr>
<th>{% trans 'Unexcused' %}</th>
<td>{{ stat.unexcused }}</td>
</tr>
<tr>
<th colspan="2">{% trans 'Tardiness' %}</th>
<td>{{ stat.tardiness }}'</td>
</tr>
{% for extra_mark in extra_marks %}
{% if stats %}
<h5>{% trans "Statistics on absences, tardiness and remarks" %}</h5>
<ul class="collapsible">
{% for school_term, stat in stats %}
<li {% if forloop.first %}class="active"{% endif %}>
<div class="collapsible-header">
<i class="material-icons">date_range</i>{{ school_term }}</div>
<div class="collapsible-body">
<table>
<tr>
<th colspan="2">{{ extra_mark.name }}</th>
<td>{{ stat|get_dict:extra_mark.count_label }}</td>
<th colspan="2">{% trans 'Absences' %}</th>
<td>{{ stat.absences_count }}</td>
</tr>
{% endfor %}
</table>
</div>
</li>
{% endfor %}
</ul>
<tr>
<td rowspan="{{ excuse_types.count|add:2 }}" class="hide-on-small-only">{% trans "thereof" %}</td>
<td rowspan="{{ excuse_types.count|add:2 }}" class="hide-on-med-and-up"></td>
<th class="truncate">{% trans 'Excused' %}</th>
<td>{{ stat.excused }}</td>
</tr>
{% for excuse_type in excuse_types %}
<th>{{ excuse_type.name }}</th>
<td>{{ stat|get_dict:excuse_type.count_label }}</td>
{% endfor %}
<tr>
<th>{% trans 'Unexcused' %}</th>
<td>{{ stat.unexcused }}</td>
</tr>
<tr>
<th colspan="2">{% trans 'Tardiness' %}</th>
<td>{{ stat.tardiness }}'/{{ stat.tardiness_count }} &times;</td>
</tr>
{% for extra_mark in extra_marks %}
<tr>
<th colspan="2">{{ extra_mark.name }}</th>
<td>{{ stat|get_dict:extra_mark.count_label }}</td>
</tr>
{% endfor %}
</table>
</div>
</li>
{% endfor %}
</ul>
{% endif %}
</div>
<div class="col s12 m12 l6">
<h5>{% trans "Relevant personal notes" %}</h5>
......@@ -121,21 +146,25 @@
{% weekday_to_date note.calendar_week note.lesson_period.period.weekday as note_date %}
{% ifchanged note_date %}
<li class="collection-item">
<form action="" method="post" class="right hide-on-small-only" style="margin-top: -7px;">
{% csrf_token %}
{% trans "Mark all as" %}
<input type="hidden" value="{{ note_date|date:"Y-m-d" }}" name="date">
{% include "alsijil/partials/mark_as_buttons.html" %}
</form>
{% if can_mark_all_as_excused %}
<form action="" method="post" class="right hide-on-small-only" style="margin-top: -7px;">
{% csrf_token %}
{% trans "Mark all as" %}
<input type="hidden" value="{{ note_date|date:"Y-m-d" }}" name="date">
{% include "alsijil/partials/mark_as_buttons.html" %}
</form>
{% endif %}
<i class="material-icons left">schedule</i>
{{ note_date }}
<form action="" method="post" class="hide-on-med-and-up">
{% csrf_token %}
{% trans "Mark all as" %}
<input type="hidden" value="{{ note_date|date:"Y-m-d" }}" name="date">
{% include "alsijil/partials/mark_as_buttons.html" %}
</form>
{% if can_mark_all_as_excused %}
<form action="" method="post" class="hide-on-med-and-up">
{% csrf_token %}
{% trans "Mark all as" %}
<input type="hidden" value="{{ note_date|date:"Y-m-d" }}" name="date">
{% include "alsijil/partials/mark_as_buttons.html" %}
</form>
{% endif %}
</li>
{% endifchanged %}
......@@ -154,7 +183,8 @@
</div>
<div class="col s12 m7 no-padding">
{% if note.absent and not note.excused %}
{% has_perm "alsijil.edit_personalnote" user note as can_edit_personal_note %}
{% if note.absent and not note.excused and can_edit_personal_note %}
<form action="" method="post" class="right hide-on-small-only" style="margin-top: -7px;">
{% csrf_token %}
{% trans "Mark as" %}
......@@ -165,6 +195,11 @@
<i class="material-icons center">cancel</i>
</a>
</form>
{% elif can_edit_personal_note %}
<a class="btn-flat red-text right hide-on-small-only" title="{% trans "Delete note" %}"
href="{% url "delete_personal_note" note.pk %}">
<i class="material-icons center">cancel</i>
</a>
{% endif %}
{% if note.absent %}
......@@ -196,7 +231,7 @@
</div>
<div class="col s12 hide-on-med-and-up">
{% if note.absent and not note.excused %}
{% if note.absent and not note.excused and can_edit_personal_note %}
<form action="" method="post">
{% csrf_token %}
{% trans "Mark as" %}
......@@ -207,6 +242,12 @@
<i class="material-icons center">cancel</i>
</a>
</form>
{% elif can_edit_personal_note %}
<a class="btn-flat red-text" title="{% trans "Delete note" %}"
href="{% url "delete_personal_note" note.pk %}">
<i class="material-icons left">cancel</i>
{% trans "Delete" %}
</a>
{% endif %}
</div>
</li>
......