diff --git a/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po
index 9b3363583bbfa59f7e4c85070f65c6dd3b6a6c55..461e0f3cec97715fef05f37eae2d09b466b6e984 100644
--- a/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po
+++ b/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-25 15:28+0200\n"
+"POT-Creation-Date: 2024-04-23 21:13+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -50,55 +50,55 @@ msgstr ""
 msgid "Ask teacher to check data"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:16
 msgid "Delete object"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:26
 msgid "Set current groups"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:37
 msgid "Reset personal note to defaults"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:49
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:50
 msgid "The personal note is related to a cancelled lesson."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:77
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:78
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:103
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:104
 msgid "The lesson documentation is on holidays."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:137
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:138
 msgid "The personal note is on holidays."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:166
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:167
 msgid "The personal note is marked as excused, but not as absent."
 msgstr ""
 
@@ -110,10 +110,10 @@ msgstr ""
 msgid "Before"
 msgstr ""
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349
-#: aleksis/apps/alsijil/tables.py:116
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371
+#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220
 msgid "Subject"
@@ -135,8 +135,8 @@ msgstr ""
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256
-#: aleksis/apps/alsijil/forms.py:348
+#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278
+#: aleksis/apps/alsijil/forms.py:370
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr ""
@@ -151,80 +151,80 @@ msgstr ""
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350
-#: aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27
+msgid "Person"
+msgstr ""
+
+#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372
+#: aleksis/apps/alsijil/models.py:730
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351
-#: aleksis/apps/alsijil/models.py:495
+#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373
+#: aleksis/apps/alsijil/models.py:734
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:194
+#: aleksis/apps/alsijil/forms.py:196
 msgid "Start period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:195
+#: aleksis/apps/alsijil/forms.py:197
 msgid "End period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117
-#: aleksis/apps/alsijil/tables.py:138
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623
+#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352
 msgid "Absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297
 msgid "Excused"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71
-#: aleksis/apps/alsijil/models.py:253
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73
+#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79
+#: aleksis/apps/alsijil/models.py:255
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72
 msgid "Excuse type"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:204
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94
+#: aleksis/apps/alsijil/forms.py:206
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354
 msgid "Remarks"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:269
-#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
-msgid "Person"
-msgstr ""
-
-#: aleksis/apps/alsijil/forms.py:346
+#: aleksis/apps/alsijil/forms.py:368
 msgid "School term"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:347
+#: aleksis/apps/alsijil/forms.py:369
 msgid "Has lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50
+#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455
@@ -232,69 +232,6 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
-msgid "Class register"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:16
-msgid "Current lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:27
-msgid "Current week"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:38
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
-msgid "My groups"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:49
-msgid "My overview"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:60
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
-msgid "My students"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:71
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
-msgid "Assign group role"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
-msgid "All lessons"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
-msgid "Excuse types"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258
-#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
-msgid "Extra marks"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:115
-msgid "Manage group roles"
-msgstr ""
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr ""
@@ -335,149 +272,244 @@ msgstr ""
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432
 msgid "Short name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431
-#: aleksis/apps/alsijil/models.py:455
+#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433
+#: aleksis/apps/alsijil/models.py:694
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:57
+#: aleksis/apps/alsijil/models.py:65
 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332
+#: aleksis/apps/alsijil/models.py:80
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
+msgid "Excuse types"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334
 msgid "Year"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:292
+#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/tables.py:120
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
+msgid "Extra marks"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:294
 msgid "Personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:293
+#: aleksis/apps/alsijil/models.py:295
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21
 msgid "Personal notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:344
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26
+#: aleksis/apps/alsijil/models.py:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:345
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34
+#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:346
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42
+#: aleksis/apps/alsijil/models.py:348
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41
 msgid "Group note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:396
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:398
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:397
+#: aleksis/apps/alsijil/models.py:399
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77
 msgid "Lesson documentations"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:442
+#: aleksis/apps/alsijil/models.py:435
+msgid "Foreground colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:436
+msgid "Background colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:438
+msgid "Show in coursebook"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:449
 msgid "Extra mark"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:456
+#: aleksis/apps/alsijil/models.py:467
+msgid "Course"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331
+msgid "Teachers"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:482
+msgid "Lesson Topic"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:484
+msgid "Group Note"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619
+#: aleksis/apps/alsijil/models.py:665
+msgid "Documentation"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:513
+msgid "Documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:612
+msgid "Groups of Person"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:625
+msgid "Absence Reason"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:634
+msgid "Base Absence"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642
+msgid "Participation Status"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:670
+msgid "Note"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:672
+msgid "Extra Mark"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:679
+msgid "Personal Note"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:680
+msgid "Personal Notes"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:695
 msgid "Icon"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:457
+#: aleksis/apps/alsijil/models.py:696
 msgid "Colour"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478
+#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:464
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:703
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 msgid "Group roles"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:468
+#: aleksis/apps/alsijil/models.py:704
 msgid "Can assign group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:484
+#: aleksis/apps/alsijil/models.py:723
 msgid "Assigned person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326
+#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321
 msgid "Groups"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:496
+#: aleksis/apps/alsijil/models.py:735
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:511
+#: aleksis/apps/alsijil/models.py:750
 msgid "Group role assignment"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:512
+#: aleksis/apps/alsijil/models.py:751
 msgid "Group role assignments"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:519
+#: aleksis/apps/alsijil/models.py:758
 msgid "Can view lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:520
+#: aleksis/apps/alsijil/models.py:759
 msgid "Can view week overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:521
+#: aleksis/apps/alsijil/models.py:760
 msgid "Can view full register"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:522
+#: aleksis/apps/alsijil/models.py:761
 msgid "Can register absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:523
+#: aleksis/apps/alsijil/models.py:762
 msgid "Can list all personal note filters"
 msgstr ""
 
+#: aleksis/apps/alsijil/preferences.py:9
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
+msgid "Class register"
+msgstr ""
+
 #: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr ""
@@ -558,6 +590,22 @@ msgstr ""
 msgid "Filter lessons by existence of their lesson documentation on default"
 msgstr ""
 
+#: aleksis/apps/alsijil/preferences.py:170
+msgid "Allow editing of all future documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:173
+msgid "Allow editing of all documentations up to and including those on the current day"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:178
+msgid "Allow editing of all documentations up to and including those on the current date and time"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:183
+msgid "Set time range for which documentations may be edited"
+msgstr ""
+
 #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47
 #: aleksis/apps/alsijil/tables.py:72
 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
@@ -570,24 +618,17 @@ msgid "Date"
 msgstr ""
 
 #: aleksis/apps/alsijil/tables.py:99
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122
 msgid "Period"
 msgstr ""
 
-#: aleksis/apps/alsijil/tables.py:111
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336
-msgid "Teachers"
-msgstr ""
-
 #: aleksis/apps/alsijil/tables.py:118
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323
 msgid "Tardiness"
 msgstr ""
@@ -598,14 +639,46 @@ msgstr ""
 
 #: aleksis/apps/alsijil/tables.py:156
 #, python-brace-format
-msgid "{value}' late"
+msgid "{value}' tardiness"
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:26
+msgid "Load data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:49
+msgid "Sort data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:64
+msgid "Load lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:104
+msgid "Sort lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:133
+msgid "Load statistics ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:173
+msgid "Generate template ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:179
+msgid "Generate PDF ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:185
+msgid "PDF generation failed"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140
 msgid "Register absence"
 msgstr ""
 
@@ -649,26 +722,36 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
+msgid "All lessons"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
+msgid "My groups"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59
 msgid "Students list"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19
 msgid "Week view"
 msgstr ""
 
@@ -683,8 +766,8 @@ msgstr ""
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66
 msgid "Generate printout"
 msgstr ""
 
@@ -701,39 +784,25 @@ msgstr ""
 msgid "Lesson"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83
 msgid "Persons"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45
 msgid "Seating plan"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32
 msgid "Previous"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63
 msgid "More"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93
-msgid "My previous lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104
-msgid "My next lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105
-msgid "Next"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
 msgid ""
 "\n"
 "                  This lesson overlaps with holidays and can't be edited.\n"
@@ -786,84 +855,89 @@ msgstr ""
 msgid "Filter results"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120
 msgid "Statistics on absences, tardiness and remarks"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291
 msgid "Absences"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302
 msgid "thereof"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141
 msgid "Without Excuse Type"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Unexcused"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
+msgid "My students"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12
 #, python-format
 msgid "Students list: %(group)s"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25
 msgid "Select"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 msgid "Toggle filters"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38
 #, python-format
 msgid ""
 "CW %(week)s:\n"
 "      %(instance)s"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
 msgid "Unfold"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355
 msgid "Visit lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393
 msgid "unexcused"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396
 msgid "Summed up tardiness"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126
 msgid "Count of tardiness"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431
 msgid "No lessons available"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
@@ -907,6 +981,11 @@ msgstr ""
 msgid "Assign group role for %(group)s"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
+msgid "Assign group role"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr ""
@@ -976,16 +1055,16 @@ msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139
 msgid "(e)"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143
 msgid "(u)"
 msgstr ""
@@ -1009,8 +1088,8 @@ msgid "Unexcused absences"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138
 msgid "Sum (e)"
 msgstr ""
@@ -1027,14 +1106,28 @@ msgstr ""
 msgid "Excuse types (not counted as absent)"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+msgid "My previous lesson"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42
+msgid "My next lesson"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43
+msgid "Next"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7
 #, python-format
 msgid "%(period)s. period"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80
 #, python-format
 msgid ""
 "\n"
@@ -1042,13 +1135,13 @@ msgid ""
 "          "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139
 msgid "Save"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20
 #, python-format
 msgid ""
 "\n"
@@ -1056,7 +1149,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31
 #, python-format
 msgid ""
 "\n"
@@ -1064,11 +1157,11 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11
 msgid "Change history"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58
 msgid "Tardiness (in m)"
 msgstr ""
 
@@ -1184,27 +1277,27 @@ msgid "No students available."
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
 msgid "Uncounted Absences"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
 msgid "Sum"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92
 msgid "Regular excused"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132
 msgid "Show more details"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133
 msgid "Details"
 msgstr ""
 
@@ -1375,78 +1468,98 @@ msgstr ""
 msgid "Notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:118
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:151
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:268
+#: aleksis/apps/alsijil/views.py:264
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:302
+#: aleksis/apps/alsijil/views.py:298
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1119
+#: aleksis/apps/alsijil/views.py:658
+msgid "Generate full register printout for {}"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:659
+msgid "Generate full register printout …"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:660
+msgid "The printout has been generated successfully."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:661
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:664
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1030
 msgid "The absence has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1140
+#: aleksis/apps/alsijil/views.py:1051
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1162
+#: aleksis/apps/alsijil/views.py:1074
 msgid "The extra mark has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1174
+#: aleksis/apps/alsijil/views.py:1086
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1185
+#: aleksis/apps/alsijil/views.py:1097
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1206
+#: aleksis/apps/alsijil/views.py:1119
 msgid "The excuse type has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1218
+#: aleksis/apps/alsijil/views.py:1131
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1229
+#: aleksis/apps/alsijil/views.py:1142
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1250
+#: aleksis/apps/alsijil/views.py:1164
 msgid "The group role has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1262
+#: aleksis/apps/alsijil/views.py:1176
 msgid "The group role has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1273
+#: aleksis/apps/alsijil/views.py:1187
 msgid "The group role has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338
+#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253
 msgid "The group role has been assigned."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1357
+#: aleksis/apps/alsijil/views.py:1272
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1378
+#: aleksis/apps/alsijil/views.py:1293
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1391
+#: aleksis/apps/alsijil/views.py:1306
 msgid "The group role assignment has been deleted."
 msgstr ""
diff --git a/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po
index 5c846bc0433997a8a2dfe7488705f1f836591e38..95e2c62508d2213718a6d6ad97fda65b7a4fd234 100644
--- a/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po
+++ b/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po
@@ -7,11 +7,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-25 15:28+0200\n"
+"POT-Creation-Date: 2024-04-23 21:13+0200\n"
 "PO-Revision-Date: 2022-06-25 13:53+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
-"Language-Team: German <https://translate.edugit.org/projects/aleksis/"
-"aleksis-app-alsijil/de/>\n"
+"Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/de/>\n"
 "Language: de_DE\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -51,55 +50,55 @@ msgstr "Wir haben erfolgreich Benachrichtigungen an {count_teachers} Personen f
 msgid "Ask teacher to check data"
 msgstr "Lehrkraft bitten, die Daten zu überprüfen"
 
-#: aleksis/apps/alsijil/data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:16
 msgid "Delete object"
 msgstr "Objekt löschen"
 
-#: aleksis/apps/alsijil/data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:26
 msgid "Set current groups"
 msgstr "Aktuelle Gruppen setzen"
 
-#: aleksis/apps/alsijil/data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:37
 msgid "Reset personal note to defaults"
 msgstr "Persönliche Notiz zurücksetzen"
 
-#: aleksis/apps/alsijil/data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:49
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr "Sicherstellen, dass es keine persönlichen Notizen in ausgefallenen Stunden gibt"
 
-#: aleksis/apps/alsijil/data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:50
 msgid "The personal note is related to a cancelled lesson."
 msgstr "Die persönliche Notiz ist einer ausgefallenen Stunde zugeordnet."
 
-#: aleksis/apps/alsijil/data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:77
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr "Sicherstellen, dass \"groups_of_person\" für alle persönlichen Notizen gesetzt ist"
 
-#: aleksis/apps/alsijil/data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:78
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr "Die persönliche Notiz hat keine Gruppe in \"groups_of_person\"."
 
-#: aleksis/apps/alsijil/data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:103
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr "Sicherstellen, dass es keine ausgefüllten Stundendokumentationen in den Ferien gibt"
 
-#: aleksis/apps/alsijil/data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:104
 msgid "The lesson documentation is on holidays."
 msgstr "Die Stundendokumentation ist in den Ferien."
 
-#: aleksis/apps/alsijil/data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:137
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr "Sicherstellen, dass es keine ausgefüllten persönlichen Notizen in den Ferien gibt"
 
-#: aleksis/apps/alsijil/data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:138
 msgid "The personal note is on holidays."
 msgstr "Die persönliche Notiz ist in den Ferien."
 
-#: aleksis/apps/alsijil/data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:166
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr "Sicherstellen, dass es keine entschuldigten persönlichen Notizen ohne eine Absenz gibt"
 
-#: aleksis/apps/alsijil/data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:167
 msgid "The personal note is marked as excused, but not as absent."
 msgstr "Die persönliche Notiz ist als entschuldigt, aber nicht als abwesend markiert."
 
@@ -111,10 +110,10 @@ msgstr "Nach"
 msgid "Before"
 msgstr "Bevor"
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349
-#: aleksis/apps/alsijil/tables.py:116
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371
+#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220
 msgid "Subject"
@@ -134,12 +133,10 @@ msgstr "Hausaufgabe zur nächsten Stunde"
 
 #: aleksis/apps/alsijil/forms.py:53
 msgid "Carry over data to all other lessons with the same subject in this week"
-msgstr ""
-"Daten zu allen weiteren Stunden mit dem gleichen Fach in dieser Woche "
-"übernehmen"
+msgstr "Daten zu allen weiteren Stunden mit dem gleichen Fach in dieser Woche übernehmen"
 
-#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256
-#: aleksis/apps/alsijil/forms.py:348
+#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278
+#: aleksis/apps/alsijil/forms.py:370
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr "Gruppe"
@@ -154,80 +151,80 @@ msgstr "Lehrkraft"
 msgid "You can't select a group and a teacher both."
 msgstr "Es kann nur entweder eine Gruppe oder eine Lehrkraft ausgewählt werden."
 
-#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350
-#: aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27
+msgid "Person"
+msgstr "Person"
+
+#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372
+#: aleksis/apps/alsijil/models.py:730
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr "Startdatum"
 
-#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351
-#: aleksis/apps/alsijil/models.py:495
+#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373
+#: aleksis/apps/alsijil/models.py:734
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr "Enddatum"
 
-#: aleksis/apps/alsijil/forms.py:194
+#: aleksis/apps/alsijil/forms.py:196
 msgid "Start period"
 msgstr "Startstunde"
 
-#: aleksis/apps/alsijil/forms.py:195
+#: aleksis/apps/alsijil/forms.py:197
 msgid "End period"
 msgstr "Endstunde"
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117
-#: aleksis/apps/alsijil/tables.py:138
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623
+#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352
 msgid "Absent"
 msgstr "Abwesend"
 
-#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297
 msgid "Excused"
 msgstr "Entschuldigt"
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71
-#: aleksis/apps/alsijil/models.py:253
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73
+#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79
+#: aleksis/apps/alsijil/models.py:255
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72
 msgid "Excuse type"
 msgstr "Entschuldigungsart"
 
-#: aleksis/apps/alsijil/forms.py:204
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94
+#: aleksis/apps/alsijil/forms.py:206
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354
 msgid "Remarks"
 msgstr "Bemerkungen"
 
-#: aleksis/apps/alsijil/forms.py:269
-#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
-msgid "Person"
-msgstr "Person"
-
-#: aleksis/apps/alsijil/forms.py:346
+#: aleksis/apps/alsijil/forms.py:368
 msgid "School term"
 msgstr "Schuljahr"
 
-#: aleksis/apps/alsijil/forms.py:347
+#: aleksis/apps/alsijil/forms.py:369
 msgid "Has lesson documentation"
 msgstr "Hat eine Stunden-Dokumentation"
 
-#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50
+#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455
@@ -235,69 +232,6 @@ msgstr "Hat eine Stunden-Dokumentation"
 msgid "Event"
 msgstr "Veranstaltung"
 
-#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
-msgid "Class register"
-msgstr "Klassenbuch"
-
-#: aleksis/apps/alsijil/menus.py:16
-msgid "Current lesson"
-msgstr "Aktuelle Unterrichtsstunde"
-
-#: aleksis/apps/alsijil/menus.py:27
-msgid "Current week"
-msgstr "Aktuelle Woche"
-
-#: aleksis/apps/alsijil/menus.py:38
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
-msgid "My groups"
-msgstr "Meine Gruppen"
-
-#: aleksis/apps/alsijil/menus.py:49
-msgid "My overview"
-msgstr "Meine Ãœbersicht"
-
-#: aleksis/apps/alsijil/menus.py:60
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
-msgid "My students"
-msgstr "Meine Schülerinnen und Schüler"
-
-#: aleksis/apps/alsijil/menus.py:71
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
-msgid "Assign group role"
-msgstr "Gruppenrolle zuweisen"
-
-#: aleksis/apps/alsijil/menus.py:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
-msgid "All lessons"
-msgstr "Alle Stunden"
-
-#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
-msgid "Excuse types"
-msgstr "Entschuldigungsarten"
-
-#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258
-#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
-msgid "Extra marks"
-msgstr "Zusätzliche Markierungen"
-
-#: aleksis/apps/alsijil/menus.py:115
-msgid "Manage group roles"
-msgstr "Gruppenrollen verwalten"
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr "Kann Wochenübersicht des Gruppenklassenbuches sehen"
@@ -338,152 +272,266 @@ msgstr "Kann eine Gruppenrolle für diese Gruppe zuweisen"
 msgid "Can register an absence for a person"
 msgstr "Kann eine Absenz für eine Person registrieren"
 
-#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432
 msgid "Short name"
 msgstr "Kurzname"
 
-#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431
-#: aleksis/apps/alsijil/models.py:455
+#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433
+#: aleksis/apps/alsijil/models.py:694
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Name"
 msgstr "Name"
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr "Als abwesend zählen"
 
-#: aleksis/apps/alsijil/models.py:57
+#: aleksis/apps/alsijil/models.py:65
 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report."
-msgstr ""
-"Wenn ausgewählt wird diese Entschuldigungsart als eine verpasste Stunde "
-"gezählt. Wenn nicht ausgewählt wird es nicht im Abwesenheitsbericht "
-"auftauchen."
+msgstr "Wenn ausgewählt wird diese Entschuldigungsart als eine verpasste Stunde gezählt. Wenn nicht ausgewählt wird es nicht im Abwesenheitsbericht auftauchen."
 
-#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332
+#: aleksis/apps/alsijil/models.py:80
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
+msgid "Excuse types"
+msgstr "Entschuldigungsarten"
+
+#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334
 msgid "Year"
 msgstr "Jahr"
 
-#: aleksis/apps/alsijil/models.py:292
+#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/tables.py:120
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
+msgid "Extra marks"
+msgstr "Zusätzliche Markierungen"
+
+#: aleksis/apps/alsijil/models.py:294
 msgid "Personal note"
 msgstr "Persönliche Notiz"
 
-#: aleksis/apps/alsijil/models.py:293
+#: aleksis/apps/alsijil/models.py:295
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21
 msgid "Personal notes"
 msgstr "Persönliche Notizen"
 
-#: aleksis/apps/alsijil/models.py:344
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26
+#: aleksis/apps/alsijil/models.py:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr "Stundenthema"
 
-#: aleksis/apps/alsijil/models.py:345
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34
+#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr "Hausaufgaben"
 
-#: aleksis/apps/alsijil/models.py:346
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42
+#: aleksis/apps/alsijil/models.py:348
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41
 msgid "Group note"
 msgstr "Gruppennotiz"
 
-#: aleksis/apps/alsijil/models.py:396
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:398
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr "Stunden-Dokumentation"
 
-#: aleksis/apps/alsijil/models.py:397
+#: aleksis/apps/alsijil/models.py:399
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77
 msgid "Lesson documentations"
 msgstr "Stunden-Dokumentationen"
 
-#: aleksis/apps/alsijil/models.py:442
+#: aleksis/apps/alsijil/models.py:435
+msgid "Foreground colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:436
+msgid "Background colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:438
+msgid "Show in coursebook"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:449
 msgid "Extra mark"
 msgstr "Zusätzliche Markierung"
 
-#: aleksis/apps/alsijil/models.py:456
+#: aleksis/apps/alsijil/models.py:467
+msgid "Course"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331
+msgid "Teachers"
+msgstr "Lehrkräfte"
+
+#: aleksis/apps/alsijil/models.py:482
+#, fuzzy
+#| msgid "Lesson topic"
+msgid "Lesson Topic"
+msgstr "Stundenthema"
+
+#: aleksis/apps/alsijil/models.py:484
+#, fuzzy
+#| msgid "Group note"
+msgid "Group Note"
+msgstr "Gruppennotiz"
+
+#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619
+#: aleksis/apps/alsijil/models.py:665
+#, fuzzy
+#| msgid "Lesson documentation"
+msgid "Documentation"
+msgstr "Stunden-Dokumentation"
+
+#: aleksis/apps/alsijil/models.py:513
+#, fuzzy
+#| msgid "Lesson documentations"
+msgid "Documentations"
+msgstr "Stunden-Dokumentationen"
+
+#: aleksis/apps/alsijil/models.py:612
+#, fuzzy
+#| msgid "Group roles"
+msgid "Groups of Person"
+msgstr "Gruppenrollen"
+
+#: aleksis/apps/alsijil/models.py:625
+#, fuzzy
+#| msgid "Absences"
+msgid "Absence Reason"
+msgstr "Fehlstunden"
+
+#: aleksis/apps/alsijil/models.py:634
+#, fuzzy
+#| msgid "Absences"
+msgid "Base Absence"
+msgstr "Fehlstunden"
+
+#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642
+msgid "Participation Status"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:670
+#, fuzzy
+#| msgid "Notes"
+msgid "Note"
+msgstr "Notizen"
+
+#: aleksis/apps/alsijil/models.py:672
+#, fuzzy
+#| msgid "Extra mark"
+msgid "Extra Mark"
+msgstr "Zusätzliche Markierung"
+
+#: aleksis/apps/alsijil/models.py:679
+#, fuzzy
+#| msgid "Personal note"
+msgid "Personal Note"
+msgstr "Persönliche Notiz"
+
+#: aleksis/apps/alsijil/models.py:680
+#, fuzzy
+#| msgid "Personal notes"
+msgid "Personal Notes"
+msgstr "Persönliche Notizen"
+
+#: aleksis/apps/alsijil/models.py:695
 msgid "Icon"
 msgstr "Symbol"
 
-#: aleksis/apps/alsijil/models.py:457
+#: aleksis/apps/alsijil/models.py:696
 msgid "Colour"
 msgstr "Farbe"
 
-#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478
+#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr "Gruppenrolle"
 
-#: aleksis/apps/alsijil/models.py:464
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:703
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 msgid "Group roles"
 msgstr "Gruppenrollen"
 
-#: aleksis/apps/alsijil/models.py:468
+#: aleksis/apps/alsijil/models.py:704
 msgid "Can assign group role"
 msgstr "Kann Gruppenrolle zuweisen"
 
-#: aleksis/apps/alsijil/models.py:484
+#: aleksis/apps/alsijil/models.py:723
 msgid "Assigned person"
 msgstr "Zugewiesene Person"
 
-#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326
+#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321
 msgid "Groups"
 msgstr "Gruppen"
 
-#: aleksis/apps/alsijil/models.py:496
+#: aleksis/apps/alsijil/models.py:735
 msgid "Can be left empty if end date is not clear yet"
 msgstr "Kann frei gelassen werden, wenn das Enddatum noch nicht feststeht"
 
-#: aleksis/apps/alsijil/models.py:511
+#: aleksis/apps/alsijil/models.py:750
 msgid "Group role assignment"
 msgstr "Zuweisung von Gruppenrollen"
 
-#: aleksis/apps/alsijil/models.py:512
+#: aleksis/apps/alsijil/models.py:751
 msgid "Group role assignments"
 msgstr "Zuweisungen von Gruppenrollen"
 
-#: aleksis/apps/alsijil/models.py:519
+#: aleksis/apps/alsijil/models.py:758
 msgid "Can view lesson overview"
 msgstr "Kann die Stundenübersicht sehen"
 
-#: aleksis/apps/alsijil/models.py:520
+#: aleksis/apps/alsijil/models.py:759
 msgid "Can view week overview"
 msgstr "Kann die Wochenübersicht sehen"
 
-#: aleksis/apps/alsijil/models.py:521
+#: aleksis/apps/alsijil/models.py:760
 msgid "Can view full register"
 msgstr "Kann komplettes Klassenbuch sehen"
 
-#: aleksis/apps/alsijil/models.py:522
+#: aleksis/apps/alsijil/models.py:761
 msgid "Can register absence"
 msgstr "Kann eine Absenz registrieren"
 
-#: aleksis/apps/alsijil/models.py:523
+#: aleksis/apps/alsijil/models.py:762
 msgid "Can list all personal note filters"
 msgstr "Kann alle Filter für persönliche Notizen anzeigen"
 
+#: aleksis/apps/alsijil/preferences.py:9
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
+msgid "Class register"
+msgstr "Klassenbuch"
+
 #: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr "Blockiere das Hinzufügen von persönlichen Notizen für ausgefallene Stunden"
@@ -498,9 +546,7 @@ msgstr "Erlaube Primärgruppeninhabern Absenzen in der Zukunft für Mitglieder i
 
 #: aleksis/apps/alsijil/preferences.py:44
 msgid "Grant the owner of a parent group the same privileges as the owners of the respective child groups"
-msgstr ""
-"Gebe dem Besitzer einer Elterngruppe die gleichen Rechte wie den Besitzern "
-"der entsprechenden Kindgruppen"
+msgstr "Gebe dem Besitzer einer Elterngruppe die gleichen Rechte wie den Besitzern der entsprechenden Kindgruppen"
 
 #: aleksis/apps/alsijil/preferences.py:54
 msgid "Allow original teachers to edit their lessons although they are substituted"
@@ -516,15 +562,11 @@ msgstr "Dies wird die Daten nur übernehmen, wenn die Daten in den Folgestunden
 
 #: aleksis/apps/alsijil/preferences.py:75
 msgid "Allow carrying over data from any lesson period to all other lesson                 periods with the same lesson and in the same week"
-msgstr ""
-"Erlaube das Ãœbernehmen von Daten von einer Stunde zu allen weiteren Stunden "
-"mit dem gleichen Unterricht in der gleichen Woche"
+msgstr "Erlaube das Ãœbernehmen von Daten von einer Stunde zu allen weiteren Stunden mit dem gleichen Unterricht in der gleichen Woche"
 
 #: aleksis/apps/alsijil/preferences.py:79
 msgid "This will carry over data only if the data in the aforementioned periods are empty."
-msgstr ""
-"Dies wird die Daten nur übernehmen, wenn die Daten in den eben genannten "
-"Stunden leer sind."
+msgstr "Dies wird die Daten nur übernehmen, wenn die Daten in den eben genannten Stunden leer sind."
 
 #: aleksis/apps/alsijil/preferences.py:88
 msgid "Carry over personal notes to all following lesson periods on the same day."
@@ -570,6 +612,22 @@ msgstr "Jede Seite muss mindestens einen Eintrag anzeigen."
 msgid "Filter lessons by existence of their lesson documentation on default"
 msgstr "Stunden standardmäßig anhand der Existenz ihrer Stundendokumentation filtern"
 
+#: aleksis/apps/alsijil/preferences.py:170
+msgid "Allow editing of all future documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:173
+msgid "Allow editing of all documentations up to and including those on the current day"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:178
+msgid "Allow editing of all documentations up to and including those on the current date and time"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:183
+msgid "Set time range for which documentations may be edited"
+msgstr ""
+
 #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47
 #: aleksis/apps/alsijil/tables.py:72
 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
@@ -582,24 +640,17 @@ msgid "Date"
 msgstr "Datum"
 
 #: aleksis/apps/alsijil/tables.py:99
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122
 msgid "Period"
 msgstr "Stunde"
 
-#: aleksis/apps/alsijil/tables.py:111
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336
-msgid "Teachers"
-msgstr "Lehrkräfte"
-
 #: aleksis/apps/alsijil/tables.py:118
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323
 msgid "Tardiness"
 msgstr "Verspätung"
@@ -609,15 +660,52 @@ msgid "Excuse"
 msgstr "Entschuldigen"
 
 #: aleksis/apps/alsijil/tables.py:156
-#, python-brace-format
-msgid "{value}' late"
+#, fuzzy, python-brace-format
+#| msgid "{value}' late"
+msgid "{value}' tardiness"
 msgstr "{value}' verspätet"
 
+#: aleksis/apps/alsijil/tasks.py:26
+msgid "Load data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:49
+#, fuzzy
+#| msgid "Start date"
+msgid "Sort data ..."
+msgstr "Startdatum"
+
+#: aleksis/apps/alsijil/tasks.py:64
+msgid "Load lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:104
+msgid "Sort lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:133
+#, fuzzy
+#| msgid "Statistics"
+msgid "Load statistics ..."
+msgstr "Statistiken"
+
+#: aleksis/apps/alsijil/tasks.py:173
+msgid "Generate template ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:179
+msgid "Generate PDF ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:185
+msgid "PDF generation failed"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140
 msgid "Register absence"
 msgstr "Abwesenheit eintragen"
 
@@ -671,26 +759,36 @@ msgstr "Status auf \"nicht abwesend\" zurücksetzen"
 msgid "Cancel"
 msgstr "Abbrechen"
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
+msgid "All lessons"
+msgstr "Alle Stunden"
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
+msgid "My groups"
+msgstr "Meine Gruppen"
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr "Schülerinnen und Schüler"
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59
 msgid "Students list"
 msgstr "Liste der Schülerinnen und Schüler"
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19
 msgid "Week view"
 msgstr "Wochenansicht"
 
@@ -705,8 +803,8 @@ msgstr "Rollen"
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66
 msgid "Generate printout"
 msgstr "Ausdruck generieren"
 
@@ -723,39 +821,25 @@ msgstr "Schülerinnen und Schüler"
 msgid "Lesson"
 msgstr "Unterrichtsstunde"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83
 msgid "Persons"
 msgstr "Personen"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45
 msgid "Seating plan"
 msgstr "Sitzplan"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32
 msgid "Previous"
 msgstr "Vorherige"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63
 msgid "More"
 msgstr "Mehr"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93
-msgid "My previous lesson"
-msgstr "Meine vorherige Stunde"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104
-msgid "My next lesson"
-msgstr "Meine nächste Stunde"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105
-msgid "Next"
-msgstr "Nächste"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
 msgid ""
 "\n"
 "                  This lesson overlaps with holidays and can't be edited.\n"
@@ -814,52 +898,57 @@ msgstr "Filtern"
 msgid "Filter results"
 msgstr "Ergebnisse filtern"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120
 msgid "Statistics on absences, tardiness and remarks"
 msgstr "Statistiken zu Fehlzeiten, Verspätungen und Bemerkungen"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291
 msgid "Absences"
 msgstr "Fehlstunden"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302
 msgid "thereof"
 msgstr "davon"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141
 msgid "Without Excuse Type"
 msgstr "Ohne Entschuldigungsart"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Unexcused"
 msgstr "Unentschuldigt"
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
+msgid "My students"
+msgstr "Meine Schülerinnen und Schüler"
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12
 #, python-format
 msgid "Students list: %(group)s"
 msgstr "Liste der Schülerinnen und Schüler: %(group)s"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25
 msgid "Select"
 msgstr "Auswählen"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 msgid "Toggle filters"
 msgstr "Filter umschalten"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38
 #, python-format
 msgid ""
 "CW %(week)s:\n"
@@ -868,32 +957,32 @@ msgstr ""
 "KW %(week)s: \n"
 "%(instance)s"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
 msgid "Unfold"
 msgstr "Ausklappen"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355
 msgid "Visit lesson overview"
 msgstr "Stundenübersicht besuchen"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393
 msgid "unexcused"
 msgstr "unentschuldigt"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396
 msgid "Summed up tardiness"
 msgstr "Summierte Verspätung"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126
 msgid "Count of tardiness"
 msgstr "Anzahl der Verspätungen"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431
 msgid "No lessons available"
 msgstr "Keine Stunden verfügbar"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
@@ -944,6 +1033,11 @@ msgstr "Zusätzliche Markierung bearbeiten"
 msgid "Assign group role for %(group)s"
 msgstr "Gruppenrolle für %(group)s zuweisen"
 
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
+msgid "Assign group role"
+msgstr "Gruppenrolle zuweisen"
+
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr "Zuweisen"
@@ -1017,16 +1111,16 @@ msgstr "Bitte prüfen Sie, ob die folgenden Klassenbucheinträge komplett und ri
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139
 msgid "(e)"
 msgstr "(e)"
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143
 msgid "(u)"
 msgstr "(u)"
@@ -1050,8 +1144,8 @@ msgid "Unexcused absences"
 msgstr "Unentschuldigte Fehlzeiten"
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138
 msgid "Sum (e)"
 msgstr "Summe (e)"
@@ -1068,14 +1162,28 @@ msgstr "Normal entschuldigte Fehlzeiten"
 msgid "Excuse types (not counted as absent)"
 msgstr "Entschuldigungsarten (nicht als abwesend gezählt)"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+msgid "My previous lesson"
+msgstr "Meine vorherige Stunde"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42
+msgid "My next lesson"
+msgstr "Meine nächste Stunde"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43
+msgid "Next"
+msgstr "Nächste"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7
 #, python-format
 msgid "%(period)s. period"
 msgstr "%(period)s. Stunde"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80
 #, python-format
 msgid ""
 "\n"
@@ -1086,13 +1194,13 @@ msgstr ""
 "            %(period_from)s.–%(period_to)s.  Stunde\n"
 "          "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139
 msgid "Save"
 msgstr "Speichern"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20
 #, python-format
 msgid ""
 "\n"
@@ -1103,7 +1211,7 @@ msgstr ""
 "        Vorherige %(subject)s Stunde\n"
 "      "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31
 #, python-format
 msgid ""
 "\n"
@@ -1114,11 +1222,11 @@ msgstr ""
 "        Nächste %(subject)s Stunde\n"
 "      "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11
 msgid "Change history"
 msgstr "Veränderungen"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58
 msgid "Tardiness (in m)"
 msgstr "Verspätung (in m)"
 
@@ -1164,10 +1272,8 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Dieser Sitzplan wurde von der Elterngruppe von %(child_group)s "
-"übernommen.\n"
-"Wenn Sie wollen, können Sie ihn für Ihre Gruppe übernehmen und dann anpassen."
-"\n"
+"            Dieser Sitzplan wurde von der Elterngruppe von %(child_group)s übernommen.\n"
+"Wenn Sie wollen, können Sie ihn für Ihre Gruppe übernehmen und dann anpassen.\n"
 "          "
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/seating_plan.html:30
@@ -1190,8 +1296,7 @@ msgid ""
 "                "
 msgstr ""
 "\n"
-"                  Einen neuen Sitzplan für %(group)s (%(subject)s) in %(room)"
-"s erstellen\n"
+"                  Einen neuen Sitzplan für %(group)s (%(subject)s) in %(room)s erstellen\n"
 "                "
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/seating_plan.html:78
@@ -1202,8 +1307,7 @@ msgid ""
 "                  "
 msgstr ""
 "\n"
-"                    Einen neuen Sitzplan für %(group)s in %(room)s "
-"erstellen\n"
+"                    Einen neuen Sitzplan für %(group)s in %(room)s erstellen\n"
 "                  "
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:6
@@ -1250,27 +1354,27 @@ msgid "No students available."
 msgstr "Keine Schülerinnen und Schüler verfügbar."
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
 msgid "Primary group"
 msgstr "Primärgruppe"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
 msgid "Uncounted Absences"
 msgstr "Ungezählte Fehlzeiten"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
 msgid "Sum"
 msgstr "Summe"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92
 msgid "Regular excused"
 msgstr "Normal entschuldigt"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132
 msgid "Show more details"
 msgstr "Mehr Details anzeigen"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133
 msgid "Details"
 msgstr "Details"
 
@@ -1455,84 +1559,122 @@ msgstr "KW"
 msgid "Notes"
 msgstr "Notizen"
 
-#: aleksis/apps/alsijil/views.py:118
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 "Sie haben eine ungültige Stunde ausgewählt oder es\n"
 "      läuft momentan keine Stunde."
 
-#: aleksis/apps/alsijil/views.py:151
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr "Ihnen ist es nicht erlaubt, eine Eintragung für eine Unterrichtsstunde in der Zukunft vorzunehmen."
 
-#: aleksis/apps/alsijil/views.py:268
+#: aleksis/apps/alsijil/views.py:264
 msgid "The lesson documentation has been saved."
 msgstr "Die Stunden-Dokumentation wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:302
+#: aleksis/apps/alsijil/views.py:298
 msgid "The personal notes have been saved."
 msgstr "Die persönlichen Notizen wurden gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1119
+#: aleksis/apps/alsijil/views.py:658
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout for {}"
+msgstr "Ausdruck generieren"
+
+#: aleksis/apps/alsijil/views.py:659
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout …"
+msgstr "Ausdruck generieren"
+
+#: aleksis/apps/alsijil/views.py:660
+#, fuzzy
+#| msgid "The personal note has been deleted."
+msgid "The printout has been generated successfully."
+msgstr "Die persönliche Notiz wurde gelöscht."
+
+#: aleksis/apps/alsijil/views.py:661
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:664
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1030
 msgid "The absence has been saved."
 msgstr "Die Abwesenheit wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1140
+#: aleksis/apps/alsijil/views.py:1051
 msgid "The personal note has been deleted."
 msgstr "Die persönliche Notiz wurde gelöscht."
 
-#: aleksis/apps/alsijil/views.py:1162
+#: aleksis/apps/alsijil/views.py:1074
 msgid "The extra mark has been created."
 msgstr "Die zusätzliche Markierung wurde erstellt."
 
-#: aleksis/apps/alsijil/views.py:1174
+#: aleksis/apps/alsijil/views.py:1086
 msgid "The extra mark has been saved."
 msgstr "Die zusätzliche Markierung wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1185
+#: aleksis/apps/alsijil/views.py:1097
 msgid "The extra mark has been deleted."
 msgstr "Die zusätzliche Markierung wurde gelöscht."
 
-#: aleksis/apps/alsijil/views.py:1206
+#: aleksis/apps/alsijil/views.py:1119
 msgid "The excuse type has been created."
 msgstr "Die Entschuldigungsart wurde erstellt."
 
-#: aleksis/apps/alsijil/views.py:1218
+#: aleksis/apps/alsijil/views.py:1131
 msgid "The excuse type has been saved."
 msgstr "Die Entschuldigunsart wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1229
+#: aleksis/apps/alsijil/views.py:1142
 msgid "The excuse type has been deleted."
 msgstr "Die Entschuldigungsart wurde gelöscht."
 
-#: aleksis/apps/alsijil/views.py:1250
+#: aleksis/apps/alsijil/views.py:1164
 msgid "The group role has been created."
 msgstr "Die Gruppenrolle wurde erstellt."
 
-#: aleksis/apps/alsijil/views.py:1262
+#: aleksis/apps/alsijil/views.py:1176
 msgid "The group role has been saved."
 msgstr "Die Gruppenrolle wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1273
+#: aleksis/apps/alsijil/views.py:1187
 msgid "The group role has been deleted."
 msgstr "Die Gruppenrolle wurde gelöscht."
 
-#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338
+#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253
 msgid "The group role has been assigned."
 msgstr "Die Gruppenrolle wurde zugewiesen."
 
-#: aleksis/apps/alsijil/views.py:1357
+#: aleksis/apps/alsijil/views.py:1272
 msgid "The group role assignment has been saved."
 msgstr "Die Gruppenrollenzuweisung wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1378
+#: aleksis/apps/alsijil/views.py:1293
 msgid "The group role assignment has been stopped."
 msgstr "Die Gruppenrollenzuweisung wurde beendet."
 
-#: aleksis/apps/alsijil/views.py:1391
+#: aleksis/apps/alsijil/views.py:1306
 msgid "The group role assignment has been deleted."
 msgstr "Die Gruppenrollenzuweisung wurde gelöscht."
 
+#~ msgid "Current lesson"
+#~ msgstr "Aktuelle Unterrichtsstunde"
+
+#~ msgid "Current week"
+#~ msgstr "Aktuelle Woche"
+
+#~ msgid "My overview"
+#~ msgstr "Meine Ãœbersicht"
+
+#~ msgid "Manage group roles"
+#~ msgstr "Gruppenrollen verwalten"
+
 #~ msgid "Excused absences"
 #~ msgstr "Entschuldigte Fehlzeiten"
 
diff --git a/aleksis/apps/alsijil/locale/fr/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/fr/LC_MESSAGES/django.po
index e1a4b25dc5ebd5a6090ead1f0a1eee38d3e07ab3..e283f3797931d09214dbc06954730515b45eda92 100644
--- a/aleksis/apps/alsijil/locale/fr/LC_MESSAGES/django.po
+++ b/aleksis/apps/alsijil/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-25 15:28+0200\n"
+"POT-Creation-Date: 2024-04-23 21:13+0200\n"
 "PO-Revision-Date: 2021-06-16 11:59+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
 "Language-Team: French <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/fr/>\n"
@@ -52,63 +52,63 @@ msgstr ""
 msgid "Ask teacher to check data"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:16
 msgid "Delete object"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:26
 msgid "Set current groups"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:37
 #, fuzzy
 #| msgid "Relevant personal notes"
 msgid "Reset personal note to defaults"
 msgstr "Notes personnelles importantes"
 
-#: aleksis/apps/alsijil/data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:49
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:50
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The personal note is related to a cancelled lesson."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:77
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:78
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:103
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:104
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The lesson documentation is on holidays."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:137
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:138
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The personal note is on holidays."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:166
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:167
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The personal note is marked as excused, but not as absent."
@@ -122,10 +122,10 @@ msgstr ""
 msgid "Before"
 msgstr ""
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349
-#: aleksis/apps/alsijil/tables.py:116
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371
+#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220
 msgid "Subject"
@@ -151,8 +151,8 @@ msgstr ""
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256
-#: aleksis/apps/alsijil/forms.py:348
+#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278
+#: aleksis/apps/alsijil/forms.py:370
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr "groupe"
@@ -167,88 +167,88 @@ msgstr "prof"
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350
-#: aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27
+msgid "Person"
+msgstr "Personne"
+
+#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372
+#: aleksis/apps/alsijil/models.py:730
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr "Date de début"
 
-#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351
-#: aleksis/apps/alsijil/models.py:495
+#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373
+#: aleksis/apps/alsijil/models.py:734
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr "Date de fin"
 
-#: aleksis/apps/alsijil/forms.py:194
+#: aleksis/apps/alsijil/forms.py:196
 #, fuzzy
 #| msgid "From period"
 msgid "Start period"
 msgstr "De la période"
 
-#: aleksis/apps/alsijil/forms.py:195
+#: aleksis/apps/alsijil/forms.py:197
 #, fuzzy
 #| msgid "From period"
 msgid "End period"
 msgstr "De la période"
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117
-#: aleksis/apps/alsijil/tables.py:138
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623
+#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352
 msgid "Absent"
 msgstr "Absent(e)"
 
-#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297
 msgid "Excused"
 msgstr "Excusé"
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71
-#: aleksis/apps/alsijil/models.py:253
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73
+#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79
+#: aleksis/apps/alsijil/models.py:255
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72
 #, fuzzy
 #| msgid "Excused"
 msgid "Excuse type"
 msgstr "Excusé"
 
-#: aleksis/apps/alsijil/forms.py:204
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94
+#: aleksis/apps/alsijil/forms.py:206
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354
 msgid "Remarks"
 msgstr "Remarque"
 
-#: aleksis/apps/alsijil/forms.py:269
-#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
-msgid "Person"
-msgstr "Personne"
-
-#: aleksis/apps/alsijil/forms.py:346
+#: aleksis/apps/alsijil/forms.py:368
 msgid "School term"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:347
+#: aleksis/apps/alsijil/forms.py:369
 #, fuzzy
 #| msgid "Lesson documentation"
 msgid "Has lesson documentation"
 msgstr "Documentation de cours"
 
-#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50
+#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455
@@ -256,77 +256,6 @@ msgstr "Documentation de cours"
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
-msgid "Class register"
-msgstr "Registre de la classe"
-
-#: aleksis/apps/alsijil/menus.py:16
-msgid "Current lesson"
-msgstr "Lecon actuelle"
-
-#: aleksis/apps/alsijil/menus.py:27
-msgid "Current week"
-msgstr "Semaine actuelle"
-
-#: aleksis/apps/alsijil/menus.py:38
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
-#, fuzzy
-#| msgid "Group"
-msgid "My groups"
-msgstr "Groupe"
-
-#: aleksis/apps/alsijil/menus.py:49
-#, fuzzy
-#| msgid "Personal overview"
-msgid "My overview"
-msgstr "Vue d'ensemble personnelle"
-
-#: aleksis/apps/alsijil/menus.py:60
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
-msgid "My students"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:71
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
-#, fuzzy
-#| msgid "Persons in group"
-msgid "Assign group role"
-msgstr "Personnes en groupe"
-
-#: aleksis/apps/alsijil/menus.py:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
-msgid "All lessons"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
-#, fuzzy
-#| msgid "Excused"
-msgid "Excuse types"
-msgstr "Excusé"
-
-#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258
-#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
-msgid "Extra marks"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:115
-msgid "Manage group roles"
-msgstr ""
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr ""
@@ -377,107 +306,219 @@ msgstr ""
 msgid "Can register an absence for a person"
 msgstr "Registre de la classe"
 
-#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432
 #, fuzzy
 #| msgid "First name"
 msgid "Short name"
 msgstr "Prénom"
 
-#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431
-#: aleksis/apps/alsijil/models.py:455
+#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433
+#: aleksis/apps/alsijil/models.py:694
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:57
+#: aleksis/apps/alsijil/models.py:65
 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332
+#: aleksis/apps/alsijil/models.py:80
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
+#, fuzzy
+#| msgid "Excused"
+msgid "Excuse types"
+msgstr "Excusé"
+
+#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334
 msgid "Year"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:292
+#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/tables.py:120
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
+msgid "Extra marks"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:294
 #, fuzzy
 #| msgid "Personal notes"
 msgid "Personal note"
 msgstr "Notes personnelles"
 
-#: aleksis/apps/alsijil/models.py:293
+#: aleksis/apps/alsijil/models.py:295
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21
 msgid "Personal notes"
 msgstr "Notes personnelles"
 
-#: aleksis/apps/alsijil/models.py:344
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26
+#: aleksis/apps/alsijil/models.py:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr "Sujet de cours"
 
-#: aleksis/apps/alsijil/models.py:345
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34
+#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr "Devoirs"
 
-#: aleksis/apps/alsijil/models.py:346
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42
+#: aleksis/apps/alsijil/models.py:348
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41
 #, fuzzy
 #| msgid "Group"
 msgid "Group note"
 msgstr "Groupe"
 
-#: aleksis/apps/alsijil/models.py:396
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:398
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr "Documentation de cours"
 
-#: aleksis/apps/alsijil/models.py:397
+#: aleksis/apps/alsijil/models.py:399
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77
 #, fuzzy
 #| msgid "Lesson documentation"
 msgid "Lesson documentations"
 msgstr "Documentation de cours"
 
-#: aleksis/apps/alsijil/models.py:442
+#: aleksis/apps/alsijil/models.py:435
+msgid "Foreground colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:436
+msgid "Background colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:438
+msgid "Show in coursebook"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:449
 msgid "Extra mark"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:456
+#: aleksis/apps/alsijil/models.py:467
+msgid "Course"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331
+msgid "Teachers"
+msgstr "Profs"
+
+#: aleksis/apps/alsijil/models.py:482
+#, fuzzy
+#| msgid "Lesson topic"
+msgid "Lesson Topic"
+msgstr "Sujet de cours"
+
+#: aleksis/apps/alsijil/models.py:484
+#, fuzzy
+#| msgid "Group"
+msgid "Group Note"
+msgstr "Groupe"
+
+#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619
+#: aleksis/apps/alsijil/models.py:665
+#, fuzzy
+#| msgid "Lesson documentation"
+msgid "Documentation"
+msgstr "Documentation de cours"
+
+#: aleksis/apps/alsijil/models.py:513
+#, fuzzy
+#| msgid "Lesson documentation"
+msgid "Documentations"
+msgstr "Documentation de cours"
+
+#: aleksis/apps/alsijil/models.py:612
+#, fuzzy
+#| msgid "Group"
+msgid "Groups of Person"
+msgstr "Groupe"
+
+#: aleksis/apps/alsijil/models.py:625
+#, fuzzy
+#| msgid "Absences"
+msgid "Absence Reason"
+msgstr "Absences"
+
+#: aleksis/apps/alsijil/models.py:634
+#, fuzzy
+#| msgid "Absences"
+msgid "Base Absence"
+msgstr "Absences"
+
+#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642
+msgid "Participation Status"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:670
+#, fuzzy
+#| msgid "Notes"
+msgid "Note"
+msgstr "Notes"
+
+#: aleksis/apps/alsijil/models.py:672
+msgid "Extra Mark"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:679
+#, fuzzy
+#| msgid "Personal notes"
+msgid "Personal Note"
+msgstr "Notes personnelles"
+
+#: aleksis/apps/alsijil/models.py:680
+#, fuzzy
+#| msgid "Personal notes"
+msgid "Personal Notes"
+msgstr "Notes personnelles"
+
+#: aleksis/apps/alsijil/models.py:695
 msgid "Icon"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:457
+#: aleksis/apps/alsijil/models.py:696
 msgid "Colour"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478
+#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 #, fuzzy
 #| msgid "Group"
 msgid "Group role"
 msgstr "Groupe"
 
-#: aleksis/apps/alsijil/models.py:464
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:703
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 #, fuzzy
@@ -485,67 +526,72 @@ msgstr "Groupe"
 msgid "Group roles"
 msgstr "Groupe"
 
-#: aleksis/apps/alsijil/models.py:468
+#: aleksis/apps/alsijil/models.py:704
 #, fuzzy
 #| msgid "Persons in group"
 msgid "Can assign group role"
 msgstr "Personnes en groupe"
 
-#: aleksis/apps/alsijil/models.py:484
+#: aleksis/apps/alsijil/models.py:723
 #, fuzzy
 #| msgid "Absences"
 msgid "Assigned person"
 msgstr "Absences"
 
-#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326
+#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321
 #, fuzzy
 #| msgid "Group"
 msgid "Groups"
 msgstr "Groupe"
 
-#: aleksis/apps/alsijil/models.py:496
+#: aleksis/apps/alsijil/models.py:735
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:511
+#: aleksis/apps/alsijil/models.py:750
 msgid "Group role assignment"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:512
+#: aleksis/apps/alsijil/models.py:751
 msgid "Group role assignments"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:519
+#: aleksis/apps/alsijil/models.py:758
 #, fuzzy
 #| msgid "Personal overview"
 msgid "Can view lesson overview"
 msgstr "Vue d'ensemble personnelle"
 
-#: aleksis/apps/alsijil/models.py:520
+#: aleksis/apps/alsijil/models.py:759
 msgid "Can view week overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:521
+#: aleksis/apps/alsijil/models.py:760
 #, fuzzy
 #| msgid "Class register"
 msgid "Can view full register"
 msgstr "Registre de la classe"
 
-#: aleksis/apps/alsijil/models.py:522
+#: aleksis/apps/alsijil/models.py:761
 #, fuzzy
 #| msgid "Register absence"
 msgid "Can register absence"
 msgstr "Registre de Absence"
 
-#: aleksis/apps/alsijil/models.py:523
+#: aleksis/apps/alsijil/models.py:762
 #, fuzzy
 #| msgid "List of all personal note filters"
 msgid "Can list all personal note filters"
 msgstr "Liste de filtres de notes personnelles"
 
+#: aleksis/apps/alsijil/preferences.py:9
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
+msgid "Class register"
+msgstr "Registre de la classe"
+
 #: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr ""
@@ -628,6 +674,22 @@ msgstr ""
 msgid "Filter lessons by existence of their lesson documentation on default"
 msgstr ""
 
+#: aleksis/apps/alsijil/preferences.py:170
+msgid "Allow editing of all future documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:173
+msgid "Allow editing of all documentations up to and including those on the current day"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:178
+msgid "Allow editing of all documentations up to and including those on the current date and time"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:183
+msgid "Set time range for which documentations may be edited"
+msgstr ""
+
 #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47
 #: aleksis/apps/alsijil/tables.py:72
 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
@@ -640,24 +702,17 @@ msgid "Date"
 msgstr "Date"
 
 #: aleksis/apps/alsijil/tables.py:99
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122
 msgid "Period"
 msgstr "Période"
 
-#: aleksis/apps/alsijil/tables.py:111
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336
-msgid "Teachers"
-msgstr "Profs"
-
 #: aleksis/apps/alsijil/tables.py:118
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323
 msgid "Tardiness"
 msgstr "Retard"
@@ -669,15 +724,50 @@ msgid "Excuse"
 msgstr "Excusé"
 
 #: aleksis/apps/alsijil/tables.py:156
-#, python-brace-format
-msgid "{value}' late"
+#, fuzzy, python-brace-format
+#| msgid "Summed up tardiness"
+msgid "{value}' tardiness"
+msgstr "Résumé des retards"
+
+#: aleksis/apps/alsijil/tasks.py:26
+msgid "Load data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:49
+#, fuzzy
+#| msgid "Start date"
+msgid "Sort data ..."
+msgstr "Date de début"
+
+#: aleksis/apps/alsijil/tasks.py:64
+msgid "Load lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:104
+msgid "Sort lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:133
+msgid "Load statistics ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:173
+msgid "Generate template ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:179
+msgid "Generate PDF ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:185
+msgid "PDF generation failed"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140
 msgid "Register absence"
 msgstr "Registre de Absence"
 
@@ -731,26 +821,38 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
+msgid "All lessons"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
+#, fuzzy
+#| msgid "Group"
+msgid "My groups"
+msgstr "Groupe"
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59
 msgid "Students list"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19
 msgid "Week view"
 msgstr "Vue de semaine"
 
@@ -765,8 +867,8 @@ msgstr ""
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66
 msgid "Generate printout"
 msgstr ""
 
@@ -783,47 +885,29 @@ msgstr ""
 msgid "Lesson"
 msgstr "Cours"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83
 #, fuzzy
 #| msgid "Person"
 msgid "Persons"
 msgstr "Personne"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45
 msgid "Seating plan"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32
 #, fuzzy
 #| msgid "Current lesson"
 msgid "Previous"
 msgstr "Lecon actuelle"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63
 msgid "More"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93
-#, fuzzy
-#| msgid "Current lesson"
-msgid "My previous lesson"
-msgstr "Lecon actuelle"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104
-#, fuzzy
-#| msgid "Current lesson"
-msgid "My next lesson"
-msgstr "Lecon actuelle"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105
-msgid "Next"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
 #, fuzzy
 #| msgid ""
 #| "\n"
@@ -892,92 +976,97 @@ msgstr ""
 msgid "Filter results"
 msgstr "Notes personnelles importantes"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120
 msgid "Statistics on absences, tardiness and remarks"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291
 msgid "Absences"
 msgstr "Absences"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302
 msgid "thereof"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141
 #, fuzzy
 #| msgid "Excused"
 msgid "Without Excuse Type"
 msgstr "Excusé"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Unexcused"
 msgstr "injustifié(e)"
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
+msgid "My students"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12
 #, python-format
 msgid "Students list: %(group)s"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25
 msgid "Select"
 msgstr "Sélectionner"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 #, fuzzy
 #| msgid "Personal note filters"
 msgid "Toggle filters"
 msgstr "Filtres de notes personnelles"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38
 #, python-format
 msgid ""
 "CW %(week)s:\n"
 "      %(instance)s"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
 msgid "Unfold"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355
 #, fuzzy
 #| msgid "Personal overview"
 msgid "Visit lesson overview"
 msgstr "Vue d'ensemble personnelle"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393
 msgid "unexcused"
 msgstr "Injustifié(e)"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396
 msgid "Summed up tardiness"
 msgstr "Résumé des retards"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126
 #, fuzzy
 #| msgid "Summed up tardiness"
 msgid "Count of tardiness"
 msgstr "Résumé des retards"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431
 msgid "No lessons available"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434
 #, fuzzy
 #| msgid ""
 #| "\n"
@@ -1029,6 +1118,13 @@ msgstr ""
 msgid "Assign group role for %(group)s"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
+#, fuzzy
+#| msgid "Persons in group"
+msgid "Assign group role"
+msgstr "Personnes en groupe"
+
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr ""
@@ -1102,16 +1198,16 @@ msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139
 msgid "(e)"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143
 msgid "(u)"
 msgstr ""
@@ -1137,8 +1233,8 @@ msgid "Unexcused absences"
 msgstr "injustifié(e)"
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138
 msgid "Sum (e)"
 msgstr ""
@@ -1159,15 +1255,33 @@ msgstr "injustifié(e)"
 msgid "Excuse types (not counted as absent)"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+#, fuzzy
+#| msgid "Current lesson"
+msgid "My previous lesson"
+msgstr "Lecon actuelle"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42
+#, fuzzy
+#| msgid "Current lesson"
+msgid "My next lesson"
+msgstr "Lecon actuelle"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43
+msgid "Next"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7
 #, fuzzy, python-format
 #| msgid "From period"
 msgid "%(period)s. period"
 msgstr "De la période"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80
 #, python-format
 msgid ""
 "\n"
@@ -1175,13 +1289,13 @@ msgid ""
 "          "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139
 msgid "Save"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20
 #, python-format
 msgid ""
 "\n"
@@ -1189,7 +1303,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31
 #, python-format
 msgid ""
 "\n"
@@ -1197,11 +1311,11 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11
 msgid "Change history"
 msgstr "Changement d' histoire"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58
 #, fuzzy
 #| msgid "Tardiness"
 msgid "Tardiness (in m)"
@@ -1327,33 +1441,33 @@ msgid "No students available."
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
 #, fuzzy
 #| msgid "Group"
 msgid "Primary group"
 msgstr "Groupe"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
 #, fuzzy
 #| msgid "Unexcused"
 msgid "Uncounted Absences"
 msgstr "injustifié(e)"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
 msgid "Sum"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92
 #, fuzzy
 #| msgid "unexcused"
 msgid "Regular excused"
 msgstr "Injustifié(e)"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132
 msgid "Show more details"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133
 msgid "Details"
 msgstr ""
 
@@ -1532,104 +1646,137 @@ msgstr "Vue de semaine"
 msgid "Notes"
 msgstr "Notes"
 
-#: aleksis/apps/alsijil/views.py:118
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:151
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:268
+#: aleksis/apps/alsijil/views.py:264
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The lesson documentation has been saved."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:302
+#: aleksis/apps/alsijil/views.py:298
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1119
+#: aleksis/apps/alsijil/views.py:658
+msgid "Generate full register printout for {}"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:659
+msgid "Generate full register printout …"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:660
+#, fuzzy
+#| msgid "Lesson documentation for calendar week"
+msgid "The printout has been generated successfully."
+msgstr "Documentation de cours pour la semaine calendrier"
+
+#: aleksis/apps/alsijil/views.py:661
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:664
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1030
 msgid "The absence has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1140
+#: aleksis/apps/alsijil/views.py:1051
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The personal note has been deleted."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1162
+#: aleksis/apps/alsijil/views.py:1074
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The extra mark has been created."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1174
+#: aleksis/apps/alsijil/views.py:1086
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The extra mark has been saved."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1185
+#: aleksis/apps/alsijil/views.py:1097
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1206
+#: aleksis/apps/alsijil/views.py:1119
 msgid "The excuse type has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1218
+#: aleksis/apps/alsijil/views.py:1131
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1229
+#: aleksis/apps/alsijil/views.py:1142
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1250
+#: aleksis/apps/alsijil/views.py:1164
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role has been created."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1262
+#: aleksis/apps/alsijil/views.py:1176
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role has been saved."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1273
+#: aleksis/apps/alsijil/views.py:1187
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role has been deleted."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338
+#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role has been assigned."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1357
+#: aleksis/apps/alsijil/views.py:1272
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role assignment has been saved."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1378
+#: aleksis/apps/alsijil/views.py:1293
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role assignment has been stopped."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1391
+#: aleksis/apps/alsijil/views.py:1306
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role assignment has been deleted."
 msgstr "Documentation de cours pour la semaine calendrier"
 
+#~ msgid "Current lesson"
+#~ msgstr "Lecon actuelle"
+
+#~ msgid "Current week"
+#~ msgstr "Semaine actuelle"
+
+#, fuzzy
+#~| msgid "Personal overview"
+#~ msgid "My overview"
+#~ msgstr "Vue d'ensemble personnelle"
+
 #, fuzzy
 #~| msgid "Unexcused"
 #~ msgid "Excused absences"
diff --git a/aleksis/apps/alsijil/locale/la/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/la/LC_MESSAGES/django.po
index 482b187e4b662d5dae6984428bf834aeb086c7eb..a3ca7ecd62424293afd0f457fe4b67c95cbeb5af 100644
--- a/aleksis/apps/alsijil/locale/la/LC_MESSAGES/django.po
+++ b/aleksis/apps/alsijil/locale/la/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-25 15:28+0200\n"
+"POT-Creation-Date: 2024-04-23 21:13+0200\n"
 "PO-Revision-Date: 2020-07-26 14:08+0000\n"
 "Last-Translator: Julian <leuckerj@gmail.com>\n"
 "Language-Team: Latin <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/la/>\n"
@@ -50,55 +50,55 @@ msgstr ""
 msgid "Ask teacher to check data"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:16
 msgid "Delete object"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:26
 msgid "Set current groups"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:37
 msgid "Reset personal note to defaults"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:49
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:50
 msgid "The personal note is related to a cancelled lesson."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:77
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:78
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:103
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:104
 msgid "The lesson documentation is on holidays."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:137
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:138
 msgid "The personal note is on holidays."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:166
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:167
 msgid "The personal note is marked as excused, but not as absent."
 msgstr ""
 
@@ -110,10 +110,10 @@ msgstr ""
 msgid "Before"
 msgstr ""
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349
-#: aleksis/apps/alsijil/tables.py:116
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371
+#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220
 msgid "Subject"
@@ -135,8 +135,8 @@ msgstr ""
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256
-#: aleksis/apps/alsijil/forms.py:348
+#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278
+#: aleksis/apps/alsijil/forms.py:370
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr "Grex"
@@ -151,80 +151,80 @@ msgstr ""
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350
-#: aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27
+msgid "Person"
+msgstr "Persona"
+
+#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372
+#: aleksis/apps/alsijil/models.py:730
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351
-#: aleksis/apps/alsijil/models.py:495
+#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373
+#: aleksis/apps/alsijil/models.py:734
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:194
+#: aleksis/apps/alsijil/forms.py:196
 msgid "Start period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:195
+#: aleksis/apps/alsijil/forms.py:197
 msgid "End period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117
-#: aleksis/apps/alsijil/tables.py:138
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623
+#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352
 msgid "Absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297
 msgid "Excused"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71
-#: aleksis/apps/alsijil/models.py:253
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73
+#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79
+#: aleksis/apps/alsijil/models.py:255
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72
 msgid "Excuse type"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:204
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94
+#: aleksis/apps/alsijil/forms.py:206
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354
 msgid "Remarks"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:269
-#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
-msgid "Person"
-msgstr "Persona"
-
-#: aleksis/apps/alsijil/forms.py:346
+#: aleksis/apps/alsijil/forms.py:368
 msgid "School term"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:347
+#: aleksis/apps/alsijil/forms.py:369
 msgid "Has lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50
+#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455
@@ -232,71 +232,6 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
-msgid "Class register"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:16
-msgid "Current lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:27
-msgid "Current week"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:38
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
-#, fuzzy
-#| msgid "Group"
-msgid "My groups"
-msgstr "Grex"
-
-#: aleksis/apps/alsijil/menus.py:49
-msgid "My overview"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:60
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
-msgid "My students"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:71
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
-msgid "Assign group role"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
-msgid "All lessons"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
-msgid "Excuse types"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258
-#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
-msgid "Extra marks"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:115
-msgid "Manage group roles"
-msgstr ""
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr ""
@@ -337,105 +272,203 @@ msgstr ""
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432
 #, fuzzy
 #| msgid "First name"
 msgid "Short name"
 msgstr "Primus nomen"
 
-#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431
-#: aleksis/apps/alsijil/models.py:455
+#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433
+#: aleksis/apps/alsijil/models.py:694
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:57
+#: aleksis/apps/alsijil/models.py:65
 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332
+#: aleksis/apps/alsijil/models.py:80
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
+msgid "Excuse types"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334
 msgid "Year"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:292
+#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/tables.py:120
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
+msgid "Extra marks"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:294
 #, fuzzy
 #| msgid "Person"
 msgid "Personal note"
 msgstr "Persona"
 
-#: aleksis/apps/alsijil/models.py:293
+#: aleksis/apps/alsijil/models.py:295
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21
 msgid "Personal notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:344
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26
+#: aleksis/apps/alsijil/models.py:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:345
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34
+#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:346
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42
+#: aleksis/apps/alsijil/models.py:348
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41
 #, fuzzy
 #| msgid "Group"
 msgid "Group note"
 msgstr "Grex"
 
-#: aleksis/apps/alsijil/models.py:396
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:398
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:397
+#: aleksis/apps/alsijil/models.py:399
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77
 msgid "Lesson documentations"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:442
+#: aleksis/apps/alsijil/models.py:435
+msgid "Foreground colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:436
+msgid "Background colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:438
+msgid "Show in coursebook"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:449
 msgid "Extra mark"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:456
+#: aleksis/apps/alsijil/models.py:467
+msgid "Course"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331
+msgid "Teachers"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:482
+msgid "Lesson Topic"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:484
+#, fuzzy
+#| msgid "Group"
+msgid "Group Note"
+msgstr "Grex"
+
+#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619
+#: aleksis/apps/alsijil/models.py:665
+msgid "Documentation"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:513
+msgid "Documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:612
+#, fuzzy
+#| msgid "Group"
+msgid "Groups of Person"
+msgstr "Grex"
+
+#: aleksis/apps/alsijil/models.py:625
+msgid "Absence Reason"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:634
+msgid "Base Absence"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642
+msgid "Participation Status"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:670
+msgid "Note"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:672
+msgid "Extra Mark"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:679
+#, fuzzy
+#| msgid "Person"
+msgid "Personal Note"
+msgstr "Persona"
+
+#: aleksis/apps/alsijil/models.py:680
+#, fuzzy
+#| msgid "Person"
+msgid "Personal Notes"
+msgstr "Persona"
+
+#: aleksis/apps/alsijil/models.py:695
 msgid "Icon"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:457
+#: aleksis/apps/alsijil/models.py:696
 msgid "Colour"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478
+#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 #, fuzzy
 #| msgid "Group"
 msgid "Group role"
 msgstr "Grex"
 
-#: aleksis/apps/alsijil/models.py:464
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:703
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 #, fuzzy
@@ -443,55 +476,60 @@ msgstr "Grex"
 msgid "Group roles"
 msgstr "Grex"
 
-#: aleksis/apps/alsijil/models.py:468
+#: aleksis/apps/alsijil/models.py:704
 msgid "Can assign group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:484
+#: aleksis/apps/alsijil/models.py:723
 msgid "Assigned person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326
+#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321
 #, fuzzy
 #| msgid "Group"
 msgid "Groups"
 msgstr "Grex"
 
-#: aleksis/apps/alsijil/models.py:496
+#: aleksis/apps/alsijil/models.py:735
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:511
+#: aleksis/apps/alsijil/models.py:750
 msgid "Group role assignment"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:512
+#: aleksis/apps/alsijil/models.py:751
 msgid "Group role assignments"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:519
+#: aleksis/apps/alsijil/models.py:758
 msgid "Can view lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:520
+#: aleksis/apps/alsijil/models.py:759
 msgid "Can view week overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:521
+#: aleksis/apps/alsijil/models.py:760
 msgid "Can view full register"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:522
+#: aleksis/apps/alsijil/models.py:761
 msgid "Can register absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:523
+#: aleksis/apps/alsijil/models.py:762
 msgid "Can list all personal note filters"
 msgstr ""
 
+#: aleksis/apps/alsijil/preferences.py:9
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
+msgid "Class register"
+msgstr ""
+
 #: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr ""
@@ -572,6 +610,22 @@ msgstr ""
 msgid "Filter lessons by existence of their lesson documentation on default"
 msgstr ""
 
+#: aleksis/apps/alsijil/preferences.py:170
+msgid "Allow editing of all future documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:173
+msgid "Allow editing of all documentations up to and including those on the current day"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:178
+msgid "Allow editing of all documentations up to and including those on the current date and time"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:183
+msgid "Set time range for which documentations may be edited"
+msgstr ""
+
 #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47
 #: aleksis/apps/alsijil/tables.py:72
 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
@@ -584,24 +638,17 @@ msgid "Date"
 msgstr "dies"
 
 #: aleksis/apps/alsijil/tables.py:99
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122
 msgid "Period"
 msgstr ""
 
-#: aleksis/apps/alsijil/tables.py:111
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336
-msgid "Teachers"
-msgstr ""
-
 #: aleksis/apps/alsijil/tables.py:118
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323
 msgid "Tardiness"
 msgstr ""
@@ -612,14 +659,46 @@ msgstr ""
 
 #: aleksis/apps/alsijil/tables.py:156
 #, python-brace-format
-msgid "{value}' late"
+msgid "{value}' tardiness"
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:26
+msgid "Load data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:49
+msgid "Sort data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:64
+msgid "Load lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:104
+msgid "Sort lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:133
+msgid "Load statistics ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:173
+msgid "Generate template ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:179
+msgid "Generate PDF ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:185
+msgid "PDF generation failed"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140
 msgid "Register absence"
 msgstr ""
 
@@ -663,26 +742,38 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
+msgid "All lessons"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
+#, fuzzy
+#| msgid "Group"
+msgid "My groups"
+msgstr "Grex"
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59
 msgid "Students list"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19
 msgid "Week view"
 msgstr ""
 
@@ -697,8 +788,8 @@ msgstr ""
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66
 msgid "Generate printout"
 msgstr ""
 
@@ -715,41 +806,27 @@ msgstr ""
 msgid "Lesson"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83
 #, fuzzy
 #| msgid "Person"
 msgid "Persons"
 msgstr "Persona"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45
 msgid "Seating plan"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32
 msgid "Previous"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63
 msgid "More"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93
-msgid "My previous lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104
-msgid "My next lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105
-msgid "Next"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
 msgid ""
 "\n"
 "                  This lesson overlaps with holidays and can't be edited.\n"
@@ -806,84 +883,89 @@ msgstr ""
 msgid "Filter results"
 msgstr "Persona"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120
 msgid "Statistics on absences, tardiness and remarks"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291
 msgid "Absences"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302
 msgid "thereof"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141
 msgid "Without Excuse Type"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Unexcused"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
+msgid "My students"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12
 #, python-format
 msgid "Students list: %(group)s"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25
 msgid "Select"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 msgid "Toggle filters"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38
 #, python-format
 msgid ""
 "CW %(week)s:\n"
 "      %(instance)s"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
 msgid "Unfold"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355
 msgid "Visit lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393
 msgid "unexcused"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396
 msgid "Summed up tardiness"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126
 msgid "Count of tardiness"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431
 msgid "No lessons available"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
@@ -927,6 +1009,11 @@ msgstr ""
 msgid "Assign group role for %(group)s"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
+msgid "Assign group role"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr ""
@@ -998,16 +1085,16 @@ msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139
 msgid "(e)"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143
 msgid "(u)"
 msgstr ""
@@ -1031,8 +1118,8 @@ msgid "Unexcused absences"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138
 msgid "Sum (e)"
 msgstr ""
@@ -1049,14 +1136,28 @@ msgstr ""
 msgid "Excuse types (not counted as absent)"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+msgid "My previous lesson"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42
+msgid "My next lesson"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43
+msgid "Next"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7
 #, python-format
 msgid "%(period)s. period"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80
 #, python-format
 msgid ""
 "\n"
@@ -1064,13 +1165,13 @@ msgid ""
 "          "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139
 msgid "Save"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20
 #, python-format
 msgid ""
 "\n"
@@ -1078,7 +1179,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31
 #, python-format
 msgid ""
 "\n"
@@ -1086,11 +1187,11 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11
 msgid "Change history"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58
 msgid "Tardiness (in m)"
 msgstr ""
 
@@ -1206,29 +1307,29 @@ msgid "No students available."
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
 #, fuzzy
 #| msgid "Group"
 msgid "Primary group"
 msgstr "Grex"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
 msgid "Uncounted Absences"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
 msgid "Sum"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92
 msgid "Regular excused"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132
 msgid "Show more details"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133
 msgid "Details"
 msgstr ""
 
@@ -1399,79 +1500,99 @@ msgstr ""
 msgid "Notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:118
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:151
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:268
+#: aleksis/apps/alsijil/views.py:264
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:302
+#: aleksis/apps/alsijil/views.py:298
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1119
+#: aleksis/apps/alsijil/views.py:658
+msgid "Generate full register printout for {}"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:659
+msgid "Generate full register printout …"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:660
+msgid "The printout has been generated successfully."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:661
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:664
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1030
 msgid "The absence has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1140
+#: aleksis/apps/alsijil/views.py:1051
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1162
+#: aleksis/apps/alsijil/views.py:1074
 msgid "The extra mark has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1174
+#: aleksis/apps/alsijil/views.py:1086
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1185
+#: aleksis/apps/alsijil/views.py:1097
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1206
+#: aleksis/apps/alsijil/views.py:1119
 msgid "The excuse type has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1218
+#: aleksis/apps/alsijil/views.py:1131
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1229
+#: aleksis/apps/alsijil/views.py:1142
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1250
+#: aleksis/apps/alsijil/views.py:1164
 msgid "The group role has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1262
+#: aleksis/apps/alsijil/views.py:1176
 msgid "The group role has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1273
+#: aleksis/apps/alsijil/views.py:1187
 msgid "The group role has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338
+#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253
 msgid "The group role has been assigned."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1357
+#: aleksis/apps/alsijil/views.py:1272
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1378
+#: aleksis/apps/alsijil/views.py:1293
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1391
+#: aleksis/apps/alsijil/views.py:1306
 msgid "The group role assignment has been deleted."
 msgstr ""
 
diff --git a/aleksis/apps/alsijil/locale/nb_NO/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/nb_NO/LC_MESSAGES/django.po
index 90e59955ce06421fc74620937eb7c06cce05da2b..4a23675366e43a10b5190e5dfd31b46a442dd86f 100644
--- a/aleksis/apps/alsijil/locale/nb_NO/LC_MESSAGES/django.po
+++ b/aleksis/apps/alsijil/locale/nb_NO/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-25 15:28+0200\n"
+"POT-Creation-Date: 2024-04-23 21:13+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -49,55 +49,55 @@ msgstr ""
 msgid "Ask teacher to check data"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:16
 msgid "Delete object"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:26
 msgid "Set current groups"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:37
 msgid "Reset personal note to defaults"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:49
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:50
 msgid "The personal note is related to a cancelled lesson."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:77
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:78
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:103
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:104
 msgid "The lesson documentation is on holidays."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:137
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:138
 msgid "The personal note is on holidays."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:166
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:167
 msgid "The personal note is marked as excused, but not as absent."
 msgstr ""
 
@@ -109,10 +109,10 @@ msgstr ""
 msgid "Before"
 msgstr ""
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349
-#: aleksis/apps/alsijil/tables.py:116
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371
+#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220
 msgid "Subject"
@@ -134,8 +134,8 @@ msgstr ""
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256
-#: aleksis/apps/alsijil/forms.py:348
+#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278
+#: aleksis/apps/alsijil/forms.py:370
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr ""
@@ -150,80 +150,80 @@ msgstr ""
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350
-#: aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27
+msgid "Person"
+msgstr ""
+
+#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372
+#: aleksis/apps/alsijil/models.py:730
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351
-#: aleksis/apps/alsijil/models.py:495
+#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373
+#: aleksis/apps/alsijil/models.py:734
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:194
+#: aleksis/apps/alsijil/forms.py:196
 msgid "Start period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:195
+#: aleksis/apps/alsijil/forms.py:197
 msgid "End period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117
-#: aleksis/apps/alsijil/tables.py:138
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623
+#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352
 msgid "Absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297
 msgid "Excused"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71
-#: aleksis/apps/alsijil/models.py:253
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73
+#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79
+#: aleksis/apps/alsijil/models.py:255
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72
 msgid "Excuse type"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:204
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94
+#: aleksis/apps/alsijil/forms.py:206
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354
 msgid "Remarks"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:269
-#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
-msgid "Person"
-msgstr ""
-
-#: aleksis/apps/alsijil/forms.py:346
+#: aleksis/apps/alsijil/forms.py:368
 msgid "School term"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:347
+#: aleksis/apps/alsijil/forms.py:369
 msgid "Has lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50
+#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455
@@ -231,69 +231,6 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
-msgid "Class register"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:16
-msgid "Current lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:27
-msgid "Current week"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:38
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
-msgid "My groups"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:49
-msgid "My overview"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:60
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
-msgid "My students"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:71
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
-msgid "Assign group role"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
-msgid "All lessons"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
-msgid "Excuse types"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258
-#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
-msgid "Extra marks"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:115
-msgid "Manage group roles"
-msgstr ""
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr ""
@@ -334,149 +271,244 @@ msgstr ""
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432
 msgid "Short name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431
-#: aleksis/apps/alsijil/models.py:455
+#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433
+#: aleksis/apps/alsijil/models.py:694
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:57
+#: aleksis/apps/alsijil/models.py:65
 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332
+#: aleksis/apps/alsijil/models.py:80
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
+msgid "Excuse types"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334
 msgid "Year"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:292
+#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/tables.py:120
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
+msgid "Extra marks"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:294
 msgid "Personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:293
+#: aleksis/apps/alsijil/models.py:295
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21
 msgid "Personal notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:344
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26
+#: aleksis/apps/alsijil/models.py:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:345
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34
+#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:346
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42
+#: aleksis/apps/alsijil/models.py:348
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41
 msgid "Group note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:396
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:398
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:397
+#: aleksis/apps/alsijil/models.py:399
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77
 msgid "Lesson documentations"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:442
+#: aleksis/apps/alsijil/models.py:435
+msgid "Foreground colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:436
+msgid "Background colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:438
+msgid "Show in coursebook"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:449
 msgid "Extra mark"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:456
+#: aleksis/apps/alsijil/models.py:467
+msgid "Course"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331
+msgid "Teachers"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:482
+msgid "Lesson Topic"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:484
+msgid "Group Note"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619
+#: aleksis/apps/alsijil/models.py:665
+msgid "Documentation"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:513
+msgid "Documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:612
+msgid "Groups of Person"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:625
+msgid "Absence Reason"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:634
+msgid "Base Absence"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642
+msgid "Participation Status"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:670
+msgid "Note"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:672
+msgid "Extra Mark"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:679
+msgid "Personal Note"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:680
+msgid "Personal Notes"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:695
 msgid "Icon"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:457
+#: aleksis/apps/alsijil/models.py:696
 msgid "Colour"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478
+#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:464
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:703
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 msgid "Group roles"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:468
+#: aleksis/apps/alsijil/models.py:704
 msgid "Can assign group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:484
+#: aleksis/apps/alsijil/models.py:723
 msgid "Assigned person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326
+#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321
 msgid "Groups"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:496
+#: aleksis/apps/alsijil/models.py:735
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:511
+#: aleksis/apps/alsijil/models.py:750
 msgid "Group role assignment"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:512
+#: aleksis/apps/alsijil/models.py:751
 msgid "Group role assignments"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:519
+#: aleksis/apps/alsijil/models.py:758
 msgid "Can view lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:520
+#: aleksis/apps/alsijil/models.py:759
 msgid "Can view week overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:521
+#: aleksis/apps/alsijil/models.py:760
 msgid "Can view full register"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:522
+#: aleksis/apps/alsijil/models.py:761
 msgid "Can register absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:523
+#: aleksis/apps/alsijil/models.py:762
 msgid "Can list all personal note filters"
 msgstr ""
 
+#: aleksis/apps/alsijil/preferences.py:9
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
+msgid "Class register"
+msgstr ""
+
 #: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr ""
@@ -557,6 +589,22 @@ msgstr ""
 msgid "Filter lessons by existence of their lesson documentation on default"
 msgstr ""
 
+#: aleksis/apps/alsijil/preferences.py:170
+msgid "Allow editing of all future documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:173
+msgid "Allow editing of all documentations up to and including those on the current day"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:178
+msgid "Allow editing of all documentations up to and including those on the current date and time"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:183
+msgid "Set time range for which documentations may be edited"
+msgstr ""
+
 #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47
 #: aleksis/apps/alsijil/tables.py:72
 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
@@ -569,24 +617,17 @@ msgid "Date"
 msgstr ""
 
 #: aleksis/apps/alsijil/tables.py:99
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122
 msgid "Period"
 msgstr ""
 
-#: aleksis/apps/alsijil/tables.py:111
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336
-msgid "Teachers"
-msgstr ""
-
 #: aleksis/apps/alsijil/tables.py:118
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323
 msgid "Tardiness"
 msgstr ""
@@ -597,14 +638,46 @@ msgstr ""
 
 #: aleksis/apps/alsijil/tables.py:156
 #, python-brace-format
-msgid "{value}' late"
+msgid "{value}' tardiness"
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:26
+msgid "Load data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:49
+msgid "Sort data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:64
+msgid "Load lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:104
+msgid "Sort lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:133
+msgid "Load statistics ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:173
+msgid "Generate template ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:179
+msgid "Generate PDF ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:185
+msgid "PDF generation failed"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140
 msgid "Register absence"
 msgstr ""
 
@@ -648,26 +721,36 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
+msgid "All lessons"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
+msgid "My groups"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59
 msgid "Students list"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19
 msgid "Week view"
 msgstr ""
 
@@ -682,8 +765,8 @@ msgstr ""
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66
 msgid "Generate printout"
 msgstr ""
 
@@ -700,39 +783,25 @@ msgstr ""
 msgid "Lesson"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83
 msgid "Persons"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45
 msgid "Seating plan"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32
 msgid "Previous"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63
 msgid "More"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93
-msgid "My previous lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104
-msgid "My next lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105
-msgid "Next"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
 msgid ""
 "\n"
 "                  This lesson overlaps with holidays and can't be edited.\n"
@@ -785,84 +854,89 @@ msgstr ""
 msgid "Filter results"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120
 msgid "Statistics on absences, tardiness and remarks"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291
 msgid "Absences"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302
 msgid "thereof"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141
 msgid "Without Excuse Type"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Unexcused"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
+msgid "My students"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12
 #, python-format
 msgid "Students list: %(group)s"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25
 msgid "Select"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 msgid "Toggle filters"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38
 #, python-format
 msgid ""
 "CW %(week)s:\n"
 "      %(instance)s"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
 msgid "Unfold"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355
 msgid "Visit lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393
 msgid "unexcused"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396
 msgid "Summed up tardiness"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126
 msgid "Count of tardiness"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431
 msgid "No lessons available"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
@@ -906,6 +980,11 @@ msgstr ""
 msgid "Assign group role for %(group)s"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
+msgid "Assign group role"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr ""
@@ -975,16 +1054,16 @@ msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139
 msgid "(e)"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143
 msgid "(u)"
 msgstr ""
@@ -1008,8 +1087,8 @@ msgid "Unexcused absences"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138
 msgid "Sum (e)"
 msgstr ""
@@ -1026,14 +1105,28 @@ msgstr ""
 msgid "Excuse types (not counted as absent)"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+msgid "My previous lesson"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42
+msgid "My next lesson"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43
+msgid "Next"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7
 #, python-format
 msgid "%(period)s. period"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80
 #, python-format
 msgid ""
 "\n"
@@ -1041,13 +1134,13 @@ msgid ""
 "          "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139
 msgid "Save"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20
 #, python-format
 msgid ""
 "\n"
@@ -1055,7 +1148,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31
 #, python-format
 msgid ""
 "\n"
@@ -1063,11 +1156,11 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11
 msgid "Change history"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58
 msgid "Tardiness (in m)"
 msgstr ""
 
@@ -1183,27 +1276,27 @@ msgid "No students available."
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
 msgid "Uncounted Absences"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
 msgid "Sum"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92
 msgid "Regular excused"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132
 msgid "Show more details"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133
 msgid "Details"
 msgstr ""
 
@@ -1374,78 +1467,98 @@ msgstr ""
 msgid "Notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:118
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:151
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:268
+#: aleksis/apps/alsijil/views.py:264
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:302
+#: aleksis/apps/alsijil/views.py:298
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1119
+#: aleksis/apps/alsijil/views.py:658
+msgid "Generate full register printout for {}"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:659
+msgid "Generate full register printout …"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:660
+msgid "The printout has been generated successfully."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:661
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:664
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1030
 msgid "The absence has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1140
+#: aleksis/apps/alsijil/views.py:1051
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1162
+#: aleksis/apps/alsijil/views.py:1074
 msgid "The extra mark has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1174
+#: aleksis/apps/alsijil/views.py:1086
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1185
+#: aleksis/apps/alsijil/views.py:1097
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1206
+#: aleksis/apps/alsijil/views.py:1119
 msgid "The excuse type has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1218
+#: aleksis/apps/alsijil/views.py:1131
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1229
+#: aleksis/apps/alsijil/views.py:1142
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1250
+#: aleksis/apps/alsijil/views.py:1164
 msgid "The group role has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1262
+#: aleksis/apps/alsijil/views.py:1176
 msgid "The group role has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1273
+#: aleksis/apps/alsijil/views.py:1187
 msgid "The group role has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338
+#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253
 msgid "The group role has been assigned."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1357
+#: aleksis/apps/alsijil/views.py:1272
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1378
+#: aleksis/apps/alsijil/views.py:1293
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1391
+#: aleksis/apps/alsijil/views.py:1306
 msgid "The group role assignment has been deleted."
 msgstr ""
diff --git a/aleksis/apps/alsijil/locale/ru/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/ru/LC_MESSAGES/django.po
index f7d4d6e925786bb72d7a37b62d5629aec7f4989c..e1467925c5f0b0d1b4d9eebf9a8eea986c3785f3 100644
--- a/aleksis/apps/alsijil/locale/ru/LC_MESSAGES/django.po
+++ b/aleksis/apps/alsijil/locale/ru/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-25 15:28+0200\n"
+"POT-Creation-Date: 2024-04-23 21:13+0200\n"
 "PO-Revision-Date: 2023-05-26 04:38+0000\n"
 "Last-Translator: Serhii Horichenko <m@sgg.im>\n"
 "Language-Team: Russian <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/ru/>\n"
@@ -50,55 +50,55 @@ msgstr "Мы отправили уведомление для {count_teachers} 
 msgid "Ask teacher to check data"
 msgstr "Попросить учителя проверить данные"
 
-#: aleksis/apps/alsijil/data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:16
 msgid "Delete object"
 msgstr "Удалить объект"
 
-#: aleksis/apps/alsijil/data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:26
 msgid "Set current groups"
 msgstr "Установить текущие группы"
 
-#: aleksis/apps/alsijil/data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:37
 msgid "Reset personal note to defaults"
 msgstr "Сбросить личные заметки на типовые"
 
-#: aleksis/apps/alsijil/data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:49
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr "Убедитесь, чтобы в отмененных уроках не было личных заметок"
 
-#: aleksis/apps/alsijil/data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:50
 msgid "The personal note is related to a cancelled lesson."
 msgstr "У отмененного урока есть связанные личные заметки."
 
-#: aleksis/apps/alsijil/data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:77
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr "Убедитесь, что для каждой личной заметки установлены \"группы_лиц\""
 
-#: aleksis/apps/alsijil/data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:78
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr "Эта личная заметка без группы в \"группах_лиц\"."
 
-#: aleksis/apps/alsijil/data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:103
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr "Убедитесь, что на выходные нет заполненного учебного материала"
 
-#: aleksis/apps/alsijil/data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:104
 msgid "The lesson documentation is on holidays."
 msgstr "На выходные есть учебный материал."
 
-#: aleksis/apps/alsijil/data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:137
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr "Убедитесь, что на выходные нет заполненных личных заметок"
 
-#: aleksis/apps/alsijil/data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:138
 msgid "The personal note is on holidays."
 msgstr "На выходные есть личные заметки."
 
-#: aleksis/apps/alsijil/data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:166
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr "Убедитесь, что нет личных заметок с пояснениями без отсутствия"
 
-#: aleksis/apps/alsijil/data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:167
 msgid "The personal note is marked as excused, but not as absent."
 msgstr "Эта личная заметка отмечена как пояснительная, но нет отсутствия."
 
@@ -110,10 +110,10 @@ msgstr "После"
 msgid "Before"
 msgstr "До"
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349
-#: aleksis/apps/alsijil/tables.py:116
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371
+#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220
 msgid "Subject"
@@ -135,8 +135,8 @@ msgstr "Домашняя работа на следующий урок"
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr "Перенести данные на все другие уроки с тем же предметом на этой неделе"
 
-#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256
-#: aleksis/apps/alsijil/forms.py:348
+#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278
+#: aleksis/apps/alsijil/forms.py:370
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr "Группа"
@@ -151,80 +151,80 @@ msgstr "Преподаватель"
 msgid "You can't select a group and a teacher both."
 msgstr "Вы не можете одновременно выбрать группу и преподавателя."
 
-#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350
-#: aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27
+msgid "Person"
+msgstr "Физлицо"
+
+#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372
+#: aleksis/apps/alsijil/models.py:730
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr "Дата начала"
 
-#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351
-#: aleksis/apps/alsijil/models.py:495
+#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373
+#: aleksis/apps/alsijil/models.py:734
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr "Дата окончания"
 
-#: aleksis/apps/alsijil/forms.py:194
+#: aleksis/apps/alsijil/forms.py:196
 msgid "Start period"
 msgstr "Начало уроков"
 
-#: aleksis/apps/alsijil/forms.py:195
+#: aleksis/apps/alsijil/forms.py:197
 msgid "End period"
 msgstr "Окончание уроков"
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117
-#: aleksis/apps/alsijil/tables.py:138
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623
+#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352
 msgid "Absent"
 msgstr "Отсутствует"
 
-#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297
 msgid "Excused"
 msgstr "Уважительно"
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71
-#: aleksis/apps/alsijil/models.py:253
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73
+#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79
+#: aleksis/apps/alsijil/models.py:255
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72
 msgid "Excuse type"
 msgstr "Тип объяснительной записки"
 
-#: aleksis/apps/alsijil/forms.py:204
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94
+#: aleksis/apps/alsijil/forms.py:206
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354
 msgid "Remarks"
 msgstr "Замечания"
 
-#: aleksis/apps/alsijil/forms.py:269
-#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
-msgid "Person"
-msgstr "Физлицо"
-
-#: aleksis/apps/alsijil/forms.py:346
+#: aleksis/apps/alsijil/forms.py:368
 msgid "School term"
 msgstr "Учебный год"
 
-#: aleksis/apps/alsijil/forms.py:347
+#: aleksis/apps/alsijil/forms.py:369
 msgid "Has lesson documentation"
 msgstr "Имеет в наличии учебный материал"
 
-#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50
+#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455
@@ -232,69 +232,6 @@ msgstr "Имеет в наличии учебный материал"
 msgid "Event"
 msgstr "Событие"
 
-#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
-msgid "Class register"
-msgstr "Классный журнал"
-
-#: aleksis/apps/alsijil/menus.py:16
-msgid "Current lesson"
-msgstr "Текущий урок"
-
-#: aleksis/apps/alsijil/menus.py:27
-msgid "Current week"
-msgstr "Текущая неделя"
-
-#: aleksis/apps/alsijil/menus.py:38
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
-msgid "My groups"
-msgstr "Мои группы"
-
-#: aleksis/apps/alsijil/menus.py:49
-msgid "My overview"
-msgstr "Мой обзор"
-
-#: aleksis/apps/alsijil/menus.py:60
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
-msgid "My students"
-msgstr "Мои студенты"
-
-#: aleksis/apps/alsijil/menus.py:71
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
-msgid "Assign group role"
-msgstr "Назначить роль группы"
-
-#: aleksis/apps/alsijil/menus.py:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
-msgid "All lessons"
-msgstr "Все уроки"
-
-#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
-msgid "Excuse types"
-msgstr "Типы объяснительных"
-
-#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258
-#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
-msgid "Extra marks"
-msgstr "Дополнительные отметки"
-
-#: aleksis/apps/alsijil/menus.py:115
-msgid "Manage group roles"
-msgstr "Управление ролями групп"
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr "Может просматривать классный журнал группы за неделю"
@@ -335,149 +272,266 @@ msgstr "Может назначать роль группы для этой гр
 msgid "Can register an absence for a person"
 msgstr "Может регистрировать отсутствия"
 
-#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432
 msgid "Short name"
 msgstr "Короткое имя"
 
-#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431
-#: aleksis/apps/alsijil/models.py:455
+#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433
+#: aleksis/apps/alsijil/models.py:694
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Name"
 msgstr "Полное имя"
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr "Количество отсутствующих"
 
-#: aleksis/apps/alsijil/models.py:57
+#: aleksis/apps/alsijil/models.py:65
 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report."
 msgstr "Если отмечено, этот тип объяснительной будет засчитан как пропущенный урок. Если не отмечено, то без записи в отчет о пропусках."
 
-#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332
+#: aleksis/apps/alsijil/models.py:80
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
+msgid "Excuse types"
+msgstr "Типы объяснительных"
+
+#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334
 msgid "Year"
 msgstr "Год"
 
-#: aleksis/apps/alsijil/models.py:292
+#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/tables.py:120
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
+msgid "Extra marks"
+msgstr "Дополнительные отметки"
+
+#: aleksis/apps/alsijil/models.py:294
 msgid "Personal note"
 msgstr "Личная заметка"
 
-#: aleksis/apps/alsijil/models.py:293
+#: aleksis/apps/alsijil/models.py:295
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21
 msgid "Personal notes"
 msgstr "Личные заметки"
 
-#: aleksis/apps/alsijil/models.py:344
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26
+#: aleksis/apps/alsijil/models.py:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr "Тема урока"
 
-#: aleksis/apps/alsijil/models.py:345
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34
+#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr "Домашняя работа"
 
-#: aleksis/apps/alsijil/models.py:346
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42
+#: aleksis/apps/alsijil/models.py:348
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41
 msgid "Group note"
 msgstr "Групповая заметка"
 
-#: aleksis/apps/alsijil/models.py:396
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:398
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr "Учебный материал"
 
-#: aleksis/apps/alsijil/models.py:397
+#: aleksis/apps/alsijil/models.py:399
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77
 msgid "Lesson documentations"
 msgstr "Учебные материалы"
 
-#: aleksis/apps/alsijil/models.py:442
+#: aleksis/apps/alsijil/models.py:435
+msgid "Foreground colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:436
+msgid "Background colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:438
+msgid "Show in coursebook"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:449
 msgid "Extra mark"
 msgstr "Дополнительная отметка"
 
-#: aleksis/apps/alsijil/models.py:456
+#: aleksis/apps/alsijil/models.py:467
+msgid "Course"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331
+msgid "Teachers"
+msgstr "Преподаватели"
+
+#: aleksis/apps/alsijil/models.py:482
+#, fuzzy
+#| msgid "Lesson topic"
+msgid "Lesson Topic"
+msgstr "Тема урока"
+
+#: aleksis/apps/alsijil/models.py:484
+#, fuzzy
+#| msgid "Group note"
+msgid "Group Note"
+msgstr "Групповая заметка"
+
+#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619
+#: aleksis/apps/alsijil/models.py:665
+#, fuzzy
+#| msgid "Lesson documentation"
+msgid "Documentation"
+msgstr "Учебный материал"
+
+#: aleksis/apps/alsijil/models.py:513
+#, fuzzy
+#| msgid "Lesson documentations"
+msgid "Documentations"
+msgstr "Учебные материалы"
+
+#: aleksis/apps/alsijil/models.py:612
+#, fuzzy
+#| msgid "Group roles"
+msgid "Groups of Person"
+msgstr "Роли групп"
+
+#: aleksis/apps/alsijil/models.py:625
+#, fuzzy
+#| msgid "Absences"
+msgid "Absence Reason"
+msgstr "Пропуски"
+
+#: aleksis/apps/alsijil/models.py:634
+#, fuzzy
+#| msgid "Absences"
+msgid "Base Absence"
+msgstr "Пропуски"
+
+#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642
+msgid "Participation Status"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:670
+#, fuzzy
+#| msgid "Notes"
+msgid "Note"
+msgstr "Заметки"
+
+#: aleksis/apps/alsijil/models.py:672
+#, fuzzy
+#| msgid "Extra mark"
+msgid "Extra Mark"
+msgstr "Дополнительная отметка"
+
+#: aleksis/apps/alsijil/models.py:679
+#, fuzzy
+#| msgid "Personal note"
+msgid "Personal Note"
+msgstr "Личная заметка"
+
+#: aleksis/apps/alsijil/models.py:680
+#, fuzzy
+#| msgid "Personal notes"
+msgid "Personal Notes"
+msgstr "Личные заметки"
+
+#: aleksis/apps/alsijil/models.py:695
 msgid "Icon"
 msgstr "Иконка"
 
-#: aleksis/apps/alsijil/models.py:457
+#: aleksis/apps/alsijil/models.py:696
 msgid "Colour"
 msgstr "Цвет"
 
-#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478
+#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr "Роль группы"
 
-#: aleksis/apps/alsijil/models.py:464
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:703
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 msgid "Group roles"
 msgstr "Роли групп"
 
-#: aleksis/apps/alsijil/models.py:468
+#: aleksis/apps/alsijil/models.py:704
 msgid "Can assign group role"
 msgstr "Может назначать роль группы"
 
-#: aleksis/apps/alsijil/models.py:484
+#: aleksis/apps/alsijil/models.py:723
 msgid "Assigned person"
 msgstr "Назначенное физлицо"
 
-#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326
+#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321
 msgid "Groups"
 msgstr "Группы"
 
-#: aleksis/apps/alsijil/models.py:496
+#: aleksis/apps/alsijil/models.py:735
 msgid "Can be left empty if end date is not clear yet"
 msgstr "Если нет точной конечной даты, можно оставить незаполненным"
 
-#: aleksis/apps/alsijil/models.py:511
+#: aleksis/apps/alsijil/models.py:750
 msgid "Group role assignment"
 msgstr "Назначение роли группы"
 
-#: aleksis/apps/alsijil/models.py:512
+#: aleksis/apps/alsijil/models.py:751
 msgid "Group role assignments"
 msgstr "Назначение ролей групп"
 
-#: aleksis/apps/alsijil/models.py:519
+#: aleksis/apps/alsijil/models.py:758
 msgid "Can view lesson overview"
 msgstr "Может просматривать обзор урока"
 
-#: aleksis/apps/alsijil/models.py:520
+#: aleksis/apps/alsijil/models.py:759
 msgid "Can view week overview"
 msgstr "Может просматривать недельный обзор"
 
-#: aleksis/apps/alsijil/models.py:521
+#: aleksis/apps/alsijil/models.py:760
 msgid "Can view full register"
 msgstr "Может просматривать весь журнал"
 
-#: aleksis/apps/alsijil/models.py:522
+#: aleksis/apps/alsijil/models.py:761
 msgid "Can register absence"
 msgstr "Может регистрировать отсутствие"
 
-#: aleksis/apps/alsijil/models.py:523
+#: aleksis/apps/alsijil/models.py:762
 msgid "Can list all personal note filters"
 msgstr "Может просматривать все фильтры личных заметок"
 
+#: aleksis/apps/alsijil/preferences.py:9
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
+msgid "Class register"
+msgstr "Классный журнал"
+
 #: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr "Блокировать добавление личных заметок к отмененным урокам"
@@ -492,9 +546,7 @@ msgstr "Разрешить владельцам основных групп ре
 
 #: aleksis/apps/alsijil/preferences.py:44
 msgid "Grant the owner of a parent group the same privileges as the owners of the respective child groups"
-msgstr ""
-"Наделить владельца родительской группы такими же правами, как у владельца "
-"соответствующих дочерних групп"
+msgstr "Наделить владельца родительской группы такими же правами, как у владельца соответствующих дочерних групп"
 
 #: aleksis/apps/alsijil/preferences.py:54
 msgid "Allow original teachers to edit their lessons although they are substituted"
@@ -510,15 +562,11 @@ msgstr "Это перенесёт данные только в случае от
 
 #: aleksis/apps/alsijil/preferences.py:75
 msgid "Allow carrying over data from any lesson period to all other lesson                 periods with the same lesson and in the same week"
-msgstr ""
-"Разрешить перенос данных с любого урока на все такие же "
-"уроки                 с таким же номером в расписании на той же неделе"
+msgstr "Разрешить перенос данных с любого урока на все такие же уроки                 с таким же номером в расписании на той же неделе"
 
 #: aleksis/apps/alsijil/preferences.py:79
 msgid "This will carry over data only if the data in the aforementioned periods are empty."
-msgstr ""
-"Это перенесёт данные только если в упомянутых выше уроках данные не "
-"заполнены."
+msgstr "Это перенесёт данные только если в упомянутых выше уроках данные не заполнены."
 
 #: aleksis/apps/alsijil/preferences.py:88
 msgid "Carry over personal notes to all following lesson periods on the same day."
@@ -564,6 +612,22 @@ msgstr "Каждая страница должна содержать хотя 
 msgid "Filter lessons by existence of their lesson documentation on default"
 msgstr "По-умолчанию фильтровать уроки по наличию в них учебного материала"
 
+#: aleksis/apps/alsijil/preferences.py:170
+msgid "Allow editing of all future documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:173
+msgid "Allow editing of all documentations up to and including those on the current day"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:178
+msgid "Allow editing of all documentations up to and including those on the current date and time"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:183
+msgid "Set time range for which documentations may be edited"
+msgstr ""
+
 #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47
 #: aleksis/apps/alsijil/tables.py:72
 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
@@ -576,24 +640,17 @@ msgid "Date"
 msgstr "Дата"
 
 #: aleksis/apps/alsijil/tables.py:99
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122
 msgid "Period"
 msgstr "Урок"
 
-#: aleksis/apps/alsijil/tables.py:111
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336
-msgid "Teachers"
-msgstr "Преподаватели"
-
 #: aleksis/apps/alsijil/tables.py:118
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323
 msgid "Tardiness"
 msgstr "Опоздание"
@@ -603,15 +660,52 @@ msgid "Excuse"
 msgstr "Объяснительная"
 
 #: aleksis/apps/alsijil/tables.py:156
-#, python-brace-format
-msgid "{value}' late"
+#, fuzzy, python-brace-format
+#| msgid "{value}' late"
+msgid "{value}' tardiness"
 msgstr "{value}' задержка"
 
+#: aleksis/apps/alsijil/tasks.py:26
+msgid "Load data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:49
+#, fuzzy
+#| msgid "Start date"
+msgid "Sort data ..."
+msgstr "Дата начала"
+
+#: aleksis/apps/alsijil/tasks.py:64
+msgid "Load lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:104
+msgid "Sort lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:133
+#, fuzzy
+#| msgid "Statistics"
+msgid "Load statistics ..."
+msgstr "Статистика"
+
+#: aleksis/apps/alsijil/tasks.py:173
+msgid "Generate template ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:179
+msgid "Generate PDF ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:185
+msgid "PDF generation failed"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140
 msgid "Register absence"
 msgstr "Регистрация отсутствия"
 
@@ -665,26 +759,36 @@ msgstr "Сбросить статус на 'не отсутствует'"
 msgid "Cancel"
 msgstr "Отменить"
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
+msgid "All lessons"
+msgstr "Все уроки"
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
+msgid "My groups"
+msgstr "Мои группы"
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr "Студенты"
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59
 msgid "Students list"
 msgstr "Список студентов"
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19
 msgid "Week view"
 msgstr "Недельный обзор"
 
@@ -699,8 +803,8 @@ msgstr "Роли"
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66
 msgid "Generate printout"
 msgstr "Подготовить к печати"
 
@@ -717,39 +821,25 @@ msgstr "студенты"
 msgid "Lesson"
 msgstr "Урок"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83
 msgid "Persons"
 msgstr "Люди"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45
 msgid "Seating plan"
 msgstr "План рассадки"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32
 msgid "Previous"
 msgstr "Предыдущий"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63
 msgid "More"
 msgstr "Ещё"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93
-msgid "My previous lesson"
-msgstr "Мой предыдущий урок"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104
-msgid "My next lesson"
-msgstr "Мой следующий урок"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105
-msgid "Next"
-msgstr "Следующий"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
 msgid ""
 "\n"
 "                  This lesson overlaps with holidays and can't be edited.\n"
@@ -808,52 +898,57 @@ msgstr "Фильтры"
 msgid "Filter results"
 msgstr "Результат фильтров"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120
 msgid "Statistics on absences, tardiness and remarks"
 msgstr "Статистика пропусков, опозданий и замечаний"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291
 msgid "Absences"
 msgstr "Пропуски"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302
 msgid "thereof"
 msgstr "итак"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141
 msgid "Without Excuse Type"
 msgstr "Без типа объяснительной"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Unexcused"
 msgstr "Без пояснений"
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
+msgid "My students"
+msgstr "Мои студенты"
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12
 #, python-format
 msgid "Students list: %(group)s"
 msgstr "Список студентов: %(group)s"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25
 msgid "Select"
 msgstr "Отметить"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 msgid "Toggle filters"
 msgstr "Переключить фильтры"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38
 #, python-format
 msgid ""
 "CW %(week)s:\n"
@@ -862,32 +957,32 @@ msgstr ""
 "НД %(week)s:\n"
 "      %(instance)s"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
 msgid "Unfold"
 msgstr "Развернуть"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355
 msgid "Visit lesson overview"
 msgstr "Обзор посещений урока"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393
 msgid "unexcused"
 msgstr "без пояснений"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396
 msgid "Summed up tardiness"
 msgstr "Суммированные опоздания"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126
 msgid "Count of tardiness"
 msgstr "Количество опозданий"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431
 msgid "No lessons available"
 msgstr "Нет доступных уроков"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
@@ -938,6 +1033,11 @@ msgstr "Редактировать дополнительную отметку"
 msgid "Assign group role for %(group)s"
 msgstr "Назначить роль группы для %(group)s"
 
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
+msgid "Assign group role"
+msgstr "Назначить роль группы"
+
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr "Назначить"
@@ -1011,16 +1111,16 @@ msgstr "Проверьте, пожалуйста, эти записи в кла
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139
 msgid "(e)"
 msgstr "(о)"
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143
 msgid "(u)"
 msgstr "(н)"
@@ -1044,8 +1144,8 @@ msgid "Unexcused absences"
 msgstr "Отсутствие без пояснений"
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138
 msgid "Sum (e)"
 msgstr "Сумма (п)"
@@ -1062,14 +1162,28 @@ msgstr "Регулярные обоснованные пропуски"
 msgid "Excuse types (not counted as absent)"
 msgstr "Типы объяснительных (не учитываются как пропуски)"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+msgid "My previous lesson"
+msgstr "Мой предыдущий урок"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42
+msgid "My next lesson"
+msgstr "Мой следующий урок"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43
+msgid "Next"
+msgstr "Следующий"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7
 #, python-format
 msgid "%(period)s. period"
 msgstr "%(period)s. урок"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80
 #, python-format
 msgid ""
 "\n"
@@ -1080,13 +1194,13 @@ msgstr ""
 "            %(period_from)s.–%(period_to)s.  уроки\n"
 "          "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139
 msgid "Save"
 msgstr "Сохранить"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20
 #, python-format
 msgid ""
 "\n"
@@ -1097,7 +1211,7 @@ msgstr ""
 "        Предыдущий урок %(subject)s\n"
 "      "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31
 #, python-format
 msgid ""
 "\n"
@@ -1108,11 +1222,11 @@ msgstr ""
 "        Следующий урок %(subject)s\n"
 "      "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11
 msgid "Change history"
 msgstr "Изменить историю"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58
 msgid "Tardiness (in m)"
 msgstr "Опоздания (мин)"
 
@@ -1182,8 +1296,7 @@ msgid ""
 "                "
 msgstr ""
 "\n"
-"                  Создать новый план рассадки %(group)s (%(subject)s) в "
-"%(room)s\n"
+"                  Создать новый план рассадки %(group)s (%(subject)s) в %(room)s\n"
 "                "
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/seating_plan.html:78
@@ -1241,27 +1354,27 @@ msgid "No students available."
 msgstr "Нет доступных студентов."
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
 msgid "Primary group"
 msgstr "Основная группа"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
 msgid "Uncounted Absences"
 msgstr "Неучтённые пропуски"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
 msgid "Sum"
 msgstr "Сумма"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92
 msgid "Regular excused"
 msgstr "Регулярные обоснования"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132
 msgid "Show more details"
 msgstr "Показать более детально"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133
 msgid "Details"
 msgstr "Детали"
 
@@ -1446,78 +1559,116 @@ msgstr "Неделя"
 msgid "Notes"
 msgstr "Заметки"
 
-#: aleksis/apps/alsijil/views.py:118
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr "Вы или выбрали неправильный урок, или сейчас урока нет."
 
-#: aleksis/apps/alsijil/views.py:151
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr "Вам нельзя создавать учебные материалы для уроков в будущем."
 
-#: aleksis/apps/alsijil/views.py:268
+#: aleksis/apps/alsijil/views.py:264
 msgid "The lesson documentation has been saved."
 msgstr "Учебный материал сохранён."
 
-#: aleksis/apps/alsijil/views.py:302
+#: aleksis/apps/alsijil/views.py:298
 msgid "The personal notes have been saved."
 msgstr "Личные заметки сохранены."
 
-#: aleksis/apps/alsijil/views.py:1119
+#: aleksis/apps/alsijil/views.py:658
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout for {}"
+msgstr "Подготовить к печати"
+
+#: aleksis/apps/alsijil/views.py:659
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout …"
+msgstr "Подготовить к печати"
+
+#: aleksis/apps/alsijil/views.py:660
+#, fuzzy
+#| msgid "The personal note has been deleted."
+msgid "The printout has been generated successfully."
+msgstr "Личная заметка удалена."
+
+#: aleksis/apps/alsijil/views.py:661
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:664
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1030
 msgid "The absence has been saved."
 msgstr "Отсутствие сохранено."
 
-#: aleksis/apps/alsijil/views.py:1140
+#: aleksis/apps/alsijil/views.py:1051
 msgid "The personal note has been deleted."
 msgstr "Личная заметка удалена."
 
-#: aleksis/apps/alsijil/views.py:1162
+#: aleksis/apps/alsijil/views.py:1074
 msgid "The extra mark has been created."
 msgstr "Дополнительная отметка создана."
 
-#: aleksis/apps/alsijil/views.py:1174
+#: aleksis/apps/alsijil/views.py:1086
 msgid "The extra mark has been saved."
 msgstr "Дополнительная отметка сохранена."
 
-#: aleksis/apps/alsijil/views.py:1185
+#: aleksis/apps/alsijil/views.py:1097
 msgid "The extra mark has been deleted."
 msgstr "Дополнительная отметка удалена."
 
-#: aleksis/apps/alsijil/views.py:1206
+#: aleksis/apps/alsijil/views.py:1119
 msgid "The excuse type has been created."
 msgstr "Тип объяснительной создан."
 
-#: aleksis/apps/alsijil/views.py:1218
+#: aleksis/apps/alsijil/views.py:1131
 msgid "The excuse type has been saved."
 msgstr "Тип объяснительной сохранён."
 
-#: aleksis/apps/alsijil/views.py:1229
+#: aleksis/apps/alsijil/views.py:1142
 msgid "The excuse type has been deleted."
 msgstr "Тип объяснительной удалён."
 
-#: aleksis/apps/alsijil/views.py:1250
+#: aleksis/apps/alsijil/views.py:1164
 msgid "The group role has been created."
 msgstr "Роль группы создана."
 
-#: aleksis/apps/alsijil/views.py:1262
+#: aleksis/apps/alsijil/views.py:1176
 msgid "The group role has been saved."
 msgstr "Роль группы сохранена."
 
-#: aleksis/apps/alsijil/views.py:1273
+#: aleksis/apps/alsijil/views.py:1187
 msgid "The group role has been deleted."
 msgstr "Роль группы удалена."
 
-#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338
+#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253
 msgid "The group role has been assigned."
 msgstr "Роль группы назначена."
 
-#: aleksis/apps/alsijil/views.py:1357
+#: aleksis/apps/alsijil/views.py:1272
 msgid "The group role assignment has been saved."
 msgstr "Назначение роли группы сохранено."
 
-#: aleksis/apps/alsijil/views.py:1378
+#: aleksis/apps/alsijil/views.py:1293
 msgid "The group role assignment has been stopped."
 msgstr "Назначение роли группы остановлено."
 
-#: aleksis/apps/alsijil/views.py:1391
+#: aleksis/apps/alsijil/views.py:1306
 msgid "The group role assignment has been deleted."
 msgstr "Назначение роли группы удалено."
+
+#~ msgid "Current lesson"
+#~ msgstr "Текущий урок"
+
+#~ msgid "Current week"
+#~ msgstr "Текущая неделя"
+
+#~ msgid "My overview"
+#~ msgstr "Мой обзор"
+
+#~ msgid "Manage group roles"
+#~ msgstr "Управление ролями групп"
diff --git a/aleksis/apps/alsijil/locale/tr_TR/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/tr_TR/LC_MESSAGES/django.po
index 90e59955ce06421fc74620937eb7c06cce05da2b..4a23675366e43a10b5190e5dfd31b46a442dd86f 100644
--- a/aleksis/apps/alsijil/locale/tr_TR/LC_MESSAGES/django.po
+++ b/aleksis/apps/alsijil/locale/tr_TR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-25 15:28+0200\n"
+"POT-Creation-Date: 2024-04-23 21:13+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -49,55 +49,55 @@ msgstr ""
 msgid "Ask teacher to check data"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:16
 msgid "Delete object"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:26
 msgid "Set current groups"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:37
 msgid "Reset personal note to defaults"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:49
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:50
 msgid "The personal note is related to a cancelled lesson."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:77
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:78
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:103
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:104
 msgid "The lesson documentation is on holidays."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:137
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:138
 msgid "The personal note is on holidays."
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:166
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:167
 msgid "The personal note is marked as excused, but not as absent."
 msgstr ""
 
@@ -109,10 +109,10 @@ msgstr ""
 msgid "Before"
 msgstr ""
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349
-#: aleksis/apps/alsijil/tables.py:116
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371
+#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220
 msgid "Subject"
@@ -134,8 +134,8 @@ msgstr ""
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256
-#: aleksis/apps/alsijil/forms.py:348
+#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278
+#: aleksis/apps/alsijil/forms.py:370
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr ""
@@ -150,80 +150,80 @@ msgstr ""
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350
-#: aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27
+msgid "Person"
+msgstr ""
+
+#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372
+#: aleksis/apps/alsijil/models.py:730
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351
-#: aleksis/apps/alsijil/models.py:495
+#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373
+#: aleksis/apps/alsijil/models.py:734
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:194
+#: aleksis/apps/alsijil/forms.py:196
 msgid "Start period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:195
+#: aleksis/apps/alsijil/forms.py:197
 msgid "End period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117
-#: aleksis/apps/alsijil/tables.py:138
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623
+#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352
 msgid "Absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297
 msgid "Excused"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71
-#: aleksis/apps/alsijil/models.py:253
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73
+#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79
+#: aleksis/apps/alsijil/models.py:255
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72
 msgid "Excuse type"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:204
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94
+#: aleksis/apps/alsijil/forms.py:206
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354
 msgid "Remarks"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:269
-#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
-msgid "Person"
-msgstr ""
-
-#: aleksis/apps/alsijil/forms.py:346
+#: aleksis/apps/alsijil/forms.py:368
 msgid "School term"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:347
+#: aleksis/apps/alsijil/forms.py:369
 msgid "Has lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50
+#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455
@@ -231,69 +231,6 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
-msgid "Class register"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:16
-msgid "Current lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:27
-msgid "Current week"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:38
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
-msgid "My groups"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:49
-msgid "My overview"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:60
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
-msgid "My students"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:71
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
-msgid "Assign group role"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
-msgid "All lessons"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
-msgid "Excuse types"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258
-#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
-msgid "Extra marks"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:115
-msgid "Manage group roles"
-msgstr ""
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr ""
@@ -334,149 +271,244 @@ msgstr ""
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432
 msgid "Short name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431
-#: aleksis/apps/alsijil/models.py:455
+#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433
+#: aleksis/apps/alsijil/models.py:694
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:57
+#: aleksis/apps/alsijil/models.py:65
 msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332
+#: aleksis/apps/alsijil/models.py:80
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
+msgid "Excuse types"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334
 msgid "Year"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:292
+#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/tables.py:120
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
+msgid "Extra marks"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:294
 msgid "Personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:293
+#: aleksis/apps/alsijil/models.py:295
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21
 msgid "Personal notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:344
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26
+#: aleksis/apps/alsijil/models.py:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:345
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34
+#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:346
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42
+#: aleksis/apps/alsijil/models.py:348
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41
 msgid "Group note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:396
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:398
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:397
+#: aleksis/apps/alsijil/models.py:399
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77
 msgid "Lesson documentations"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:442
+#: aleksis/apps/alsijil/models.py:435
+msgid "Foreground colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:436
+msgid "Background colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:438
+msgid "Show in coursebook"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:449
 msgid "Extra mark"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:456
+#: aleksis/apps/alsijil/models.py:467
+msgid "Course"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331
+msgid "Teachers"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:482
+msgid "Lesson Topic"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:484
+msgid "Group Note"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619
+#: aleksis/apps/alsijil/models.py:665
+msgid "Documentation"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:513
+msgid "Documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:612
+msgid "Groups of Person"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:625
+msgid "Absence Reason"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:634
+msgid "Base Absence"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642
+msgid "Participation Status"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:670
+msgid "Note"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:672
+msgid "Extra Mark"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:679
+msgid "Personal Note"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:680
+msgid "Personal Notes"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:695
 msgid "Icon"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:457
+#: aleksis/apps/alsijil/models.py:696
 msgid "Colour"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478
+#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:464
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:703
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 msgid "Group roles"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:468
+#: aleksis/apps/alsijil/models.py:704
 msgid "Can assign group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:484
+#: aleksis/apps/alsijil/models.py:723
 msgid "Assigned person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326
+#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321
 msgid "Groups"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:496
+#: aleksis/apps/alsijil/models.py:735
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:511
+#: aleksis/apps/alsijil/models.py:750
 msgid "Group role assignment"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:512
+#: aleksis/apps/alsijil/models.py:751
 msgid "Group role assignments"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:519
+#: aleksis/apps/alsijil/models.py:758
 msgid "Can view lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:520
+#: aleksis/apps/alsijil/models.py:759
 msgid "Can view week overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:521
+#: aleksis/apps/alsijil/models.py:760
 msgid "Can view full register"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:522
+#: aleksis/apps/alsijil/models.py:761
 msgid "Can register absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:523
+#: aleksis/apps/alsijil/models.py:762
 msgid "Can list all personal note filters"
 msgstr ""
 
+#: aleksis/apps/alsijil/preferences.py:9
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
+msgid "Class register"
+msgstr ""
+
 #: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr ""
@@ -557,6 +589,22 @@ msgstr ""
 msgid "Filter lessons by existence of their lesson documentation on default"
 msgstr ""
 
+#: aleksis/apps/alsijil/preferences.py:170
+msgid "Allow editing of all future documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:173
+msgid "Allow editing of all documentations up to and including those on the current day"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:178
+msgid "Allow editing of all documentations up to and including those on the current date and time"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:183
+msgid "Set time range for which documentations may be edited"
+msgstr ""
+
 #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47
 #: aleksis/apps/alsijil/tables.py:72
 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
@@ -569,24 +617,17 @@ msgid "Date"
 msgstr ""
 
 #: aleksis/apps/alsijil/tables.py:99
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122
 msgid "Period"
 msgstr ""
 
-#: aleksis/apps/alsijil/tables.py:111
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336
-msgid "Teachers"
-msgstr ""
-
 #: aleksis/apps/alsijil/tables.py:118
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323
 msgid "Tardiness"
 msgstr ""
@@ -597,14 +638,46 @@ msgstr ""
 
 #: aleksis/apps/alsijil/tables.py:156
 #, python-brace-format
-msgid "{value}' late"
+msgid "{value}' tardiness"
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:26
+msgid "Load data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:49
+msgid "Sort data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:64
+msgid "Load lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:104
+msgid "Sort lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:133
+msgid "Load statistics ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:173
+msgid "Generate template ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:179
+msgid "Generate PDF ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:185
+msgid "PDF generation failed"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140
 msgid "Register absence"
 msgstr ""
 
@@ -648,26 +721,36 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
+msgid "All lessons"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
+msgid "My groups"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59
 msgid "Students list"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19
 msgid "Week view"
 msgstr ""
 
@@ -682,8 +765,8 @@ msgstr ""
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66
 msgid "Generate printout"
 msgstr ""
 
@@ -700,39 +783,25 @@ msgstr ""
 msgid "Lesson"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83
 msgid "Persons"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45
 msgid "Seating plan"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32
 msgid "Previous"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63
 msgid "More"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93
-msgid "My previous lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104
-msgid "My next lesson"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105
-msgid "Next"
-msgstr ""
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
 msgid ""
 "\n"
 "                  This lesson overlaps with holidays and can't be edited.\n"
@@ -785,84 +854,89 @@ msgstr ""
 msgid "Filter results"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120
 msgid "Statistics on absences, tardiness and remarks"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291
 msgid "Absences"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302
 msgid "thereof"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141
 msgid "Without Excuse Type"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Unexcused"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
+msgid "My students"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12
 #, python-format
 msgid "Students list: %(group)s"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25
 msgid "Select"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 msgid "Toggle filters"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38
 #, python-format
 msgid ""
 "CW %(week)s:\n"
 "      %(instance)s"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
 msgid "Unfold"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355
 msgid "Visit lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393
 msgid "unexcused"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396
 msgid "Summed up tardiness"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126
 msgid "Count of tardiness"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431
 msgid "No lessons available"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
@@ -906,6 +980,11 @@ msgstr ""
 msgid "Assign group role for %(group)s"
 msgstr ""
 
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
+msgid "Assign group role"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr ""
@@ -975,16 +1054,16 @@ msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139
 msgid "(e)"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143
 msgid "(u)"
 msgstr ""
@@ -1008,8 +1087,8 @@ msgid "Unexcused absences"
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138
 msgid "Sum (e)"
 msgstr ""
@@ -1026,14 +1105,28 @@ msgstr ""
 msgid "Excuse types (not counted as absent)"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+msgid "My previous lesson"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42
+msgid "My next lesson"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43
+msgid "Next"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7
 #, python-format
 msgid "%(period)s. period"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80
 #, python-format
 msgid ""
 "\n"
@@ -1041,13 +1134,13 @@ msgid ""
 "          "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139
 msgid "Save"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20
 #, python-format
 msgid ""
 "\n"
@@ -1055,7 +1148,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31
 #, python-format
 msgid ""
 "\n"
@@ -1063,11 +1156,11 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11
 msgid "Change history"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58
 msgid "Tardiness (in m)"
 msgstr ""
 
@@ -1183,27 +1276,27 @@ msgid "No students available."
 msgstr ""
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
 msgid "Uncounted Absences"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
 msgid "Sum"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92
 msgid "Regular excused"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132
 msgid "Show more details"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133
 msgid "Details"
 msgstr ""
 
@@ -1374,78 +1467,98 @@ msgstr ""
 msgid "Notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:118
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:151
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:268
+#: aleksis/apps/alsijil/views.py:264
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:302
+#: aleksis/apps/alsijil/views.py:298
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1119
+#: aleksis/apps/alsijil/views.py:658
+msgid "Generate full register printout for {}"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:659
+msgid "Generate full register printout …"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:660
+msgid "The printout has been generated successfully."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:661
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:664
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1030
 msgid "The absence has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1140
+#: aleksis/apps/alsijil/views.py:1051
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1162
+#: aleksis/apps/alsijil/views.py:1074
 msgid "The extra mark has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1174
+#: aleksis/apps/alsijil/views.py:1086
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1185
+#: aleksis/apps/alsijil/views.py:1097
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1206
+#: aleksis/apps/alsijil/views.py:1119
 msgid "The excuse type has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1218
+#: aleksis/apps/alsijil/views.py:1131
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1229
+#: aleksis/apps/alsijil/views.py:1142
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1250
+#: aleksis/apps/alsijil/views.py:1164
 msgid "The group role has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1262
+#: aleksis/apps/alsijil/views.py:1176
 msgid "The group role has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1273
+#: aleksis/apps/alsijil/views.py:1187
 msgid "The group role has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338
+#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253
 msgid "The group role has been assigned."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1357
+#: aleksis/apps/alsijil/views.py:1272
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1378
+#: aleksis/apps/alsijil/views.py:1293
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1391
+#: aleksis/apps/alsijil/views.py:1306
 msgid "The group role assignment has been deleted."
 msgstr ""
diff --git a/aleksis/apps/alsijil/locale/uk/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/uk/LC_MESSAGES/django.po
index 4d42b8750e5d3f189681038046bb0137c9aba0ff..6353e21e708c593793b756827d3f056ba5edb008 100644
--- a/aleksis/apps/alsijil/locale/uk/LC_MESSAGES/django.po
+++ b/aleksis/apps/alsijil/locale/uk/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-25 15:28+0200\n"
+"POT-Creation-Date: 2024-04-23 21:13+0200\n"
 "PO-Revision-Date: 2023-01-25 05:58+0000\n"
 "Last-Translator: Serhii Horichenko <m@sgg.im>\n"
 "Language-Team: Ukrainian <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/uk/>\n"
@@ -43,67 +43,62 @@ msgstr "{} просить Вас перевірити деякі записи к
 
 #: aleksis/apps/alsijil/actions.py:86
 #, python-brace-format
-msgid ""
-"We have successfully sent notifications to {count_teachers} persons for "
-"{count_items} lessons."
-msgstr ""
-"Ми надіслали сповіщення для {count_teachers} осіб щодо {count_items} уроків."
+msgid "We have successfully sent notifications to {count_teachers} persons for {count_items} lessons."
+msgstr "Ми надіслали сповіщення для {count_teachers} осіб щодо {count_items} уроків."
 
 #: aleksis/apps/alsijil/actions.py:92
 msgid "Ask teacher to check data"
 msgstr "Попросити вчителя перевірити дані"
 
-#: aleksis/apps/alsijil/data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:16
 msgid "Delete object"
 msgstr "Видалити об'єкт"
 
-#: aleksis/apps/alsijil/data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:26
 msgid "Set current groups"
 msgstr "Встановити поточні групи"
 
-#: aleksis/apps/alsijil/data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:37
 msgid "Reset personal note to defaults"
 msgstr "Скинути персональні нотатки на типові"
 
-#: aleksis/apps/alsijil/data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:49
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr "Переконайтеся, щоб у скасованих уроках не було особистих нотаток"
 
-#: aleksis/apps/alsijil/data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:50
 msgid "The personal note is related to a cancelled lesson."
 msgstr "У скасованого уроку є пов'язані особисті нотатки."
 
-#: aleksis/apps/alsijil/data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:77
 msgid "Ensure that 'groups_of_person' is set for every personal note"
-msgstr ""
-"Переконайтеся, що для кожної особистої нотатки установлені \"групи_осіб\""
+msgstr "Переконайтеся, що для кожної особистої нотатки установлені \"групи_осіб\""
 
-#: aleksis/apps/alsijil/data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:78
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr "Ця особиста нотатка не має групи у \"групах_осіб\"."
 
-#: aleksis/apps/alsijil/data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:103
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr "Переконайтеся, що на вихідні немає заповненого учбового матеріалу"
 
-#: aleksis/apps/alsijil/data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:104
 msgid "The lesson documentation is on holidays."
 msgstr "На вихідних є учбовий матеріал."
 
-#: aleksis/apps/alsijil/data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:137
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr "Переконайтеся, що на вихідні немає заповнених особистих нотаток"
 
-#: aleksis/apps/alsijil/data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:138
 msgid "The personal note is on holidays."
 msgstr "Ці особисті нотатки є на вихідних."
 
-#: aleksis/apps/alsijil/data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:166
 msgid "Ensure that there are no excused personal notes without an absence"
-msgstr ""
-"Переконайтеся, що немає особистих нотаток щодо пояснення без відсутності"
+msgstr "Переконайтеся, що немає особистих нотаток щодо пояснення без відсутності"
 
-#: aleksis/apps/alsijil/data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:167
 msgid "The personal note is marked as excused, but not as absent."
 msgstr "Ця персональна нотатка відмічена як пояснення, але не як пропуск."
 
@@ -115,13 +110,12 @@ msgstr "Після"
 msgid "Before"
 msgstr "Перед"
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:349
-#: aleksis/apps/alsijil/tables.py:116
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:227
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:371
+#: aleksis/apps/alsijil/models.py:471 aleksis/apps/alsijil/tables.py:116
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:223
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:189
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:220
-#: aleksis/apps/alsijil/forms.py:302
 msgid "Subject"
 msgstr "Предмет"
 
@@ -141,389 +135,403 @@ msgstr "Домашня робота на наступний урок"
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr "Перенести дані на усі інші уроки з таким самим предметом на цьому тижні"
 
-#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:256
-#: aleksis/apps/alsijil/forms.py:348
+#: aleksis/apps/alsijil/forms.py:98 aleksis/apps/alsijil/forms.py:278
+#: aleksis/apps/alsijil/forms.py:370
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
-#: aleksis/apps/alsijil/forms.py:73 aleksis/apps/alsijil/forms.py:214
-#: aleksis/apps/alsijil/forms.py:301
 msgid "Group"
 msgstr "Група"
 
 #: aleksis/apps/alsijil/forms.py:104
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:190
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:221
-#: aleksis/apps/alsijil/forms.py:79
 msgid "Teacher"
 msgstr "Викладач"
 
-#: aleksis/apps/alsijil/forms.py:121 aleksis/apps/alsijil/forms.py:96
+#: aleksis/apps/alsijil/forms.py:121
 msgid "You can't select a group and a teacher both."
 msgstr "Ви не можете обрати одночасно групу та викладача."
 
-#: aleksis/apps/alsijil/forms.py:192 aleksis/apps/alsijil/forms.py:350
-#: aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/models.py:609 aleksis/apps/alsijil/models.py:658
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:27
+msgid "Person"
+msgstr "Особа"
+
+#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:372
+#: aleksis/apps/alsijil/models.py:730
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
-#: aleksis/apps/alsijil/forms.py:150 aleksis/apps/alsijil/forms.py:303
-#: aleksis/apps/alsijil/models.py:480
 msgid "Start date"
 msgstr "Дата початку"
 
-#: aleksis/apps/alsijil/forms.py:193 aleksis/apps/alsijil/forms.py:351
-#: aleksis/apps/alsijil/models.py:495
+#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:373
+#: aleksis/apps/alsijil/models.py:734
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
-#: aleksis/apps/alsijil/forms.py:151 aleksis/apps/alsijil/forms.py:304
-#: aleksis/apps/alsijil/models.py:484
 msgid "End date"
 msgstr "Дата закінчення"
 
-#: aleksis/apps/alsijil/forms.py:194 aleksis/apps/alsijil/forms.py:152
+#: aleksis/apps/alsijil/forms.py:196
 msgid "Start period"
 msgstr "Початок уроків"
 
-#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:153
+#: aleksis/apps/alsijil/forms.py:197
 msgid "End period"
 msgstr "Закінчення уроків"
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/tables.py:117
-#: aleksis/apps/alsijil/tables.py:138
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/models.py:623
+#: aleksis/apps/alsijil/tables.py:117 aleksis/apps/alsijil/tables.py:138
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:50
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:397
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:392
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:352
-#: aleksis/apps/alsijil/forms.py:154
 msgid "Absent"
 msgstr "Відсутній(-я)"
 
-#: aleksis/apps/alsijil/forms.py:197 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:146
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:54
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:135
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:87
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:297
-#: aleksis/apps/alsijil/forms.py:155
 msgid "Excused"
 msgstr "Пояснено"
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/models.py:71
-#: aleksis/apps/alsijil/models.py:253
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:73
-#: aleksis/apps/alsijil/forms.py:157 aleksis/apps/alsijil/models.py:245
+#: aleksis/apps/alsijil/forms.py:201 aleksis/apps/alsijil/models.py:79
+#: aleksis/apps/alsijil/models.py:255
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:72
 msgid "Excuse type"
 msgstr "Тип пояснення"
 
-#: aleksis/apps/alsijil/forms.py:204
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:34
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:94
+#: aleksis/apps/alsijil/forms.py:206
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:93
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:354
-#: aleksis/apps/alsijil/forms.py:162
 msgid "Remarks"
 msgstr "Зауваження"
 
-#: aleksis/apps/alsijil/forms.py:269
-#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:28
-#: aleksis/apps/alsijil/forms.py:227
-msgid "Person"
-msgstr "Особа"
-
-#: aleksis/apps/alsijil/forms.py:346 aleksis/apps/alsijil/forms.py:299
+#: aleksis/apps/alsijil/forms.py:368
 msgid "School term"
 msgstr "Навчальний рік"
 
-#: aleksis/apps/alsijil/forms.py:347 aleksis/apps/alsijil/forms.py:300
+#: aleksis/apps/alsijil/forms.py:369
 msgid "Has lesson documentation"
 msgstr "Має учбовий матеріал"
 
-#: aleksis/apps/alsijil/managers.py:88 aleksis/apps/alsijil/tables.py:130
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:176
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:240
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:316
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:50
+#: aleksis/apps/alsijil/managers.py:91 aleksis/apps/alsijil/tables.py:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:172
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:236
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:311
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:99
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status.html:21
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:375
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:455
 #: aleksis/apps/alsijil/util/alsijil_helpers.py:330
-#: aleksis/apps/alsijil/util/alsijil_helpers.py:315
 msgid "Event"
 msgstr "Подія"
 
-#: aleksis/apps/alsijil/menus.py:6 aleksis/apps/alsijil/preferences.py:9
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
-msgid "Class register"
-msgstr "Класний журнал"
-
-#: aleksis/apps/alsijil/menus.py:16
-msgid "Current lesson"
-msgstr "Поточний урок"
-
-#: aleksis/apps/alsijil/menus.py:27
-msgid "Current week"
-msgstr "Поточний тиждень"
-
-#: aleksis/apps/alsijil/menus.py:38
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
-msgid "My groups"
-msgstr "Мої групи"
-
-#: aleksis/apps/alsijil/menus.py:49
-msgid "My overview"
-msgstr "Мій огляд"
-
-#: aleksis/apps/alsijil/menus.py:60
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
-msgid "My students"
-msgstr "Мої студенти"
-
-#: aleksis/apps/alsijil/menus.py:71
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
-#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
-msgid "Assign group role"
-msgstr "Призначити роль групи"
-
-#: aleksis/apps/alsijil/menus.py:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
-#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
-msgid "All lessons"
-msgstr "Усі уроки"
-
-#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:72
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
-msgid "Excuse types"
-msgstr "Типи пояснень"
-
-#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:258
-#: aleksis/apps/alsijil/models.py:443 aleksis/apps/alsijil/tables.py:120
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
-#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:18
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
-#: aleksis/apps/alsijil/models.py:250 aleksis/apps/alsijil/models.py:432
-msgid "Extra marks"
-msgstr "Додаткові відмітки"
-
-#: aleksis/apps/alsijil/menus.py:115
-msgid "Manage group roles"
-msgstr "Керування ролями групи"
-
 #: aleksis/apps/alsijil/model_extensions.py:191
-#: aleksis/apps/alsijil/model_extensions.py:190
 msgid "Can view week overview of group class register"
 msgstr "Може бачити класний журнал групи за тиждень"
 
 #: aleksis/apps/alsijil/model_extensions.py:195
-#: aleksis/apps/alsijil/model_extensions.py:194
 msgid "Can view lesson overview of group class register"
 msgstr "Може бачити класний журнал групи за урок"
 
 #: aleksis/apps/alsijil/model_extensions.py:197
-#: aleksis/apps/alsijil/model_extensions.py:196
 msgid "Can view all personal notes of a group"
 msgstr "Може бачити усі особисті нотатки групи"
 
 #: aleksis/apps/alsijil/model_extensions.py:198
-#: aleksis/apps/alsijil/model_extensions.py:197
 msgid "Can edit all personal notes of a group"
 msgstr "Може редагувати усі особисті нотатки групи"
 
 #: aleksis/apps/alsijil/model_extensions.py:200
-#: aleksis/apps/alsijil/model_extensions.py:199
 msgid "Can view all lesson documentation of a group"
 msgstr "Може бачити увесь учбовий матеріал групи"
 
 #: aleksis/apps/alsijil/model_extensions.py:203
-#: aleksis/apps/alsijil/model_extensions.py:202
 msgid "Can edit all lesson documentation of a group"
 msgstr "Може редагувати увесь учбовий матеріал групи"
 
 #: aleksis/apps/alsijil/model_extensions.py:205
-#: aleksis/apps/alsijil/model_extensions.py:204
 msgid "Can view full register of a group"
 msgstr "Може бачити класний журнал групи без обмежень"
 
 #: aleksis/apps/alsijil/model_extensions.py:207
-#: aleksis/apps/alsijil/model_extensions.py:206
 msgid "Can register an absence for all members of a group"
 msgstr "Може реєструвати пропуски для усіх учасників групи"
 
 #: aleksis/apps/alsijil/model_extensions.py:209
-#: aleksis/apps/alsijil/model_extensions.py:208
 msgid "Can assign a group role for this group"
 msgstr "Може призначати роль групи для цієї групи"
 
 #: aleksis/apps/alsijil/model_extensions.py:210
-#: aleksis/apps/alsijil/model_extensions.py:209
 msgid "Can register an absence for a person"
 msgstr "Може реєструвати відсутність особи"
 
-#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:430
-#: aleksis/apps/alsijil/models.py:419
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:432
 msgid "Short name"
 msgstr "Коротке ім'я"
 
-#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:431
-#: aleksis/apps/alsijil/models.py:455
+#: aleksis/apps/alsijil/models.py:59 aleksis/apps/alsijil/models.py:433
+#: aleksis/apps/alsijil/models.py:694
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:12
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:23
-#: aleksis/apps/alsijil/models.py:420 aleksis/apps/alsijil/models.py:444
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Name"
 msgstr "Повне ім'я"
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:63 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr "Кількість відсутніх"
 
-#: aleksis/apps/alsijil/models.py:57
-msgid ""
-"If checked, this excuse type will be counted as a missed lesson. If not "
-"checked,it won't show up in the absence report."
-msgstr ""
-"Якщо відмічено, цей тип пояснення буде зарахований як пропущений урок. Якщо "
-"не відмічено, то без запису у звіт відсутності."
+#: aleksis/apps/alsijil/models.py:65
+msgid "If checked, this excuse type will be counted as a missed lesson. If not checked,it won't show up in the absence report."
+msgstr "Якщо відмічено, цей тип пояснення буде зарахований як пропущений урок. Якщо не відмічено, то без запису у звіт відсутності."
+
+#: aleksis/apps/alsijil/models.py:80
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:30
+msgid "Excuse types"
+msgstr "Типи пояснень"
 
-#: aleksis/apps/alsijil/models.py:233 aleksis/apps/alsijil/models.py:332
-#: aleksis/apps/alsijil/models.py:225 aleksis/apps/alsijil/models.py:324
+#: aleksis/apps/alsijil/models.py:235 aleksis/apps/alsijil/models.py:334
 msgid "Year"
 msgstr "Рік"
 
-#: aleksis/apps/alsijil/models.py:292 aleksis/apps/alsijil/models.py:284
+#: aleksis/apps/alsijil/models.py:260 aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/tables.py:120
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:57
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:32
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:331
+msgid "Extra marks"
+msgstr "Додаткові відмітки"
+
+#: aleksis/apps/alsijil/models.py:294
 msgid "Personal note"
 msgstr "Особиста нотатка"
 
-#: aleksis/apps/alsijil/models.py:293
+#: aleksis/apps/alsijil/models.py:295
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:375
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:22
-#: aleksis/apps/alsijil/models.py:285
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:370
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:21
 msgid "Personal notes"
 msgstr "Особисті нотатки"
 
-#: aleksis/apps/alsijil/models.py:344
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:263
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:26
+#: aleksis/apps/alsijil/models.py:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:259
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:337
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:25
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
-#: aleksis/apps/alsijil/models.py:336
 msgid "Lesson topic"
 msgstr "Тема уроку"
 
-#: aleksis/apps/alsijil/models.py:345
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:133
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:269
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:347
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:34
+#: aleksis/apps/alsijil/models.py:347 aleksis/apps/alsijil/models.py:483
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:129
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:342
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:33
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
-#: aleksis/apps/alsijil/models.py:337
 msgid "Homework"
 msgstr "Домашня робота"
 
-#: aleksis/apps/alsijil/models.py:346
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:134
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:275
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:351
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:42
-#: aleksis/apps/alsijil/models.py:338
+#: aleksis/apps/alsijil/models.py:348
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:130
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:271
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:41
 msgid "Group note"
 msgstr "Групова нотатка"
 
-#: aleksis/apps/alsijil/models.py:396
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
-#: aleksis/apps/alsijil/models.py:385
+#: aleksis/apps/alsijil/models.py:398
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr "Учбовий матеріал"
 
-#: aleksis/apps/alsijil/models.py:397
+#: aleksis/apps/alsijil/models.py:399
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:21
-#: aleksis/apps/alsijil/models.py:386
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:77
 msgid "Lesson documentations"
 msgstr "Учбові матеріали"
 
-#: aleksis/apps/alsijil/models.py:442 aleksis/apps/alsijil/models.py:431
+#: aleksis/apps/alsijil/models.py:435
+msgid "Foreground colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:436
+msgid "Background colour"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:438
+msgid "Show in coursebook"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:449
 msgid "Extra mark"
 msgstr "Додаткова відмітка"
 
-#: aleksis/apps/alsijil/models.py:456 aleksis/apps/alsijil/models.py:445
+#: aleksis/apps/alsijil/models.py:467
+msgid "Course"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:479 aleksis/apps/alsijil/tables.py:111
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:331
+msgid "Teachers"
+msgstr "Викладачі"
+
+#: aleksis/apps/alsijil/models.py:482
+#, fuzzy
+#| msgid "Lesson topic"
+msgid "Lesson Topic"
+msgstr "Тема уроку"
+
+#: aleksis/apps/alsijil/models.py:484
+#, fuzzy
+#| msgid "Group note"
+msgid "Group Note"
+msgstr "Групова нотатка"
+
+#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:619
+#: aleksis/apps/alsijil/models.py:665
+#, fuzzy
+#| msgid "Lesson documentation"
+msgid "Documentation"
+msgstr "Учбовий матеріал"
+
+#: aleksis/apps/alsijil/models.py:513
+#, fuzzy
+#| msgid "Lesson documentations"
+msgid "Documentations"
+msgstr "Учбові матеріали"
+
+#: aleksis/apps/alsijil/models.py:612
+#, fuzzy
+#| msgid "Group roles"
+msgid "Groups of Person"
+msgstr "Ролі груп"
+
+#: aleksis/apps/alsijil/models.py:625
+#, fuzzy
+#| msgid "Absences"
+msgid "Absence Reason"
+msgstr "Відсутності"
+
+#: aleksis/apps/alsijil/models.py:634
+#, fuzzy
+#| msgid "Absences"
+msgid "Base Absence"
+msgstr "Відсутності"
+
+#: aleksis/apps/alsijil/models.py:641 aleksis/apps/alsijil/models.py:642
+msgid "Participation Status"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:670
+#, fuzzy
+#| msgid "Notes"
+msgid "Note"
+msgstr "Нотатки"
+
+#: aleksis/apps/alsijil/models.py:672
+#, fuzzy
+#| msgid "Extra mark"
+msgid "Extra Mark"
+msgstr "Додаткова відмітка"
+
+#: aleksis/apps/alsijil/models.py:679
+#, fuzzy
+#| msgid "Personal note"
+msgid "Personal Note"
+msgstr "Особиста нотатка"
+
+#: aleksis/apps/alsijil/models.py:680
+#, fuzzy
+#| msgid "Personal notes"
+msgid "Personal Notes"
+msgstr "Особисті нотатки"
+
+#: aleksis/apps/alsijil/models.py:695
 msgid "Icon"
 msgstr "Піктограма"
 
-#: aleksis/apps/alsijil/models.py:457 aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/models.py:696
 msgid "Colour"
 msgstr "Колір"
 
-#: aleksis/apps/alsijil/models.py:463 aleksis/apps/alsijil/models.py:478
+#: aleksis/apps/alsijil/models.py:702 aleksis/apps/alsijil/models.py:717
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
-#: aleksis/apps/alsijil/models.py:452 aleksis/apps/alsijil/models.py:467
 msgid "Group role"
 msgstr "Роль групи"
 
-#: aleksis/apps/alsijil/models.py:464
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:703
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
 #: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
-#: aleksis/apps/alsijil/models.py:453
 msgid "Group roles"
 msgstr "Ролі груп"
 
-#: aleksis/apps/alsijil/models.py:468 aleksis/apps/alsijil/models.py:457
+#: aleksis/apps/alsijil/models.py:704
 msgid "Can assign group role"
 msgstr "Може призначати роль групи"
 
-#: aleksis/apps/alsijil/models.py:484 aleksis/apps/alsijil/models.py:473
+#: aleksis/apps/alsijil/models.py:723
 msgid "Assigned person"
 msgstr "Призначена особа"
 
-#: aleksis/apps/alsijil/models.py:489 aleksis/apps/alsijil/tables.py:105
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:128
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:246
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:326
-#: aleksis/apps/alsijil/models.py:478
+#: aleksis/apps/alsijil/models.py:728 aleksis/apps/alsijil/tables.py:105
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:124
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:242
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:321
 msgid "Groups"
 msgstr "Групи"
 
-#: aleksis/apps/alsijil/models.py:496 aleksis/apps/alsijil/models.py:485
+#: aleksis/apps/alsijil/models.py:735
 msgid "Can be left empty if end date is not clear yet"
 msgstr "Якщо немає точної кінцевої дати, можна залишити порожнім"
 
-#: aleksis/apps/alsijil/models.py:511 aleksis/apps/alsijil/models.py:500
+#: aleksis/apps/alsijil/models.py:750
 msgid "Group role assignment"
 msgstr "Призначення ролі групи"
 
-#: aleksis/apps/alsijil/models.py:512 aleksis/apps/alsijil/models.py:501
+#: aleksis/apps/alsijil/models.py:751
 msgid "Group role assignments"
 msgstr "Призначення ролі групи"
 
-#: aleksis/apps/alsijil/models.py:519 aleksis/apps/alsijil/models.py:508
+#: aleksis/apps/alsijil/models.py:758
 msgid "Can view lesson overview"
 msgstr "Може бачити огляд уроку"
 
-#: aleksis/apps/alsijil/models.py:520 aleksis/apps/alsijil/models.py:509
+#: aleksis/apps/alsijil/models.py:759
 msgid "Can view week overview"
 msgstr "Може бачити огляд тижня"
 
-#: aleksis/apps/alsijil/models.py:521 aleksis/apps/alsijil/models.py:510
+#: aleksis/apps/alsijil/models.py:760
 msgid "Can view full register"
 msgstr "Може бачити весь журнал"
 
-#: aleksis/apps/alsijil/models.py:522 aleksis/apps/alsijil/models.py:511
+#: aleksis/apps/alsijil/models.py:761
 msgid "Can register absence"
 msgstr "Може реєструвати пропуск"
 
-#: aleksis/apps/alsijil/models.py:523 aleksis/apps/alsijil/models.py:512
+#: aleksis/apps/alsijil/models.py:762
 msgid "Can list all personal note filters"
 msgstr "Може бачити усі фільтри особистих нотаток"
 
+#: aleksis/apps/alsijil/preferences.py:9
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:16
+msgid "Class register"
+msgstr "Класний журнал"
+
 #: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr "Блокувати додавання особистих нотаток до скасованих уроків"
@@ -533,127 +541,93 @@ msgid "Allow users to view their own personal notes"
 msgstr "Дозволити користувачам переглядати власні особисті нотатки"
 
 #: aleksis/apps/alsijil/preferences.py:34
-msgid ""
-"Allow primary group owners to register future absences for students in their "
-"groups"
-msgstr ""
-"Дозволити власникам основних груп реєструвати майбутні пропуски студентів у "
-"своїх групах"
+msgid "Allow primary group owners to register future absences for students in their groups"
+msgstr "Дозволити власникам основних груп реєструвати майбутні пропуски студентів у своїх групах"
 
 #: aleksis/apps/alsijil/preferences.py:44
-msgid ""
-"Grant the owner of a parent group the same privileges as the owners of the "
-"respective child groups"
-msgstr ""
-"Надати власнику батьківської групи такі самі повноваження, як і власникам "
-"відповідних підлеглих груп"
+msgid "Grant the owner of a parent group the same privileges as the owners of the respective child groups"
+msgstr "Надати власнику батьківської групи такі самі повноваження, як і власникам відповідних підлеглих груп"
 
 #: aleksis/apps/alsijil/preferences.py:54
-#: aleksis/apps/alsijil/preferences.py:43
-msgid ""
-"Allow original teachers to edit their lessons although they are substituted"
-msgstr ""
-"Дозволити початковим викладачам редагувати свої уроки навіть після їх заміни"
+msgid "Allow original teachers to edit their lessons although they are substituted"
+msgstr "Дозволити початковим викладачам редагувати свої уроки навіть після їх заміни"
 
 #: aleksis/apps/alsijil/preferences.py:63
-#: aleksis/apps/alsijil/preferences.py:52
-msgid ""
-"Carry over data from first lesson period to the following lesson periods in "
-"lessons over multiple periods"
-msgstr ""
-"Переносити дані з першого уроку в розкладі на поточні уроки через декілька "
-"уроків"
+msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
+msgstr "Переносити дані з першого уроку в розкладі на поточні уроки через декілька уроків"
 
 #: aleksis/apps/alsijil/preferences.py:66
-#: aleksis/apps/alsijil/preferences.py:55
-msgid ""
-"This will carry over data only if the data in the following periods are "
-"empty."
+msgid "This will carry over data only if the data in the following periods are empty."
 msgstr "Це перенесе дані лише в тому разі, коли в поточних уроках даних немає."
 
 #: aleksis/apps/alsijil/preferences.py:75
-msgid ""
-"Allow carrying over data from any lesson period to all other "
-"lesson                 periods with the same lesson and in the same week"
-msgstr ""
-"Дозволити переносити дані з будь-якого уроку на усі інші                 "
-"уроки з таким самим номером урока на тому самому тижні"
+msgid "Allow carrying over data from any lesson period to all other lesson                 periods with the same lesson and in the same week"
+msgstr "Дозволити переносити дані з будь-якого уроку на усі інші                 уроки з таким самим номером урока на тому самому тижні"
 
 #: aleksis/apps/alsijil/preferences.py:79
-msgid ""
-"This will carry over data only if the data in the aforementioned periods are "
-"empty."
-msgstr ""
-"Це перенесе дані лише в тому разі, коли у вищезгаданих уроках даних немає."
+msgid "This will carry over data only if the data in the aforementioned periods are empty."
+msgstr "Це перенесе дані лише в тому разі, коли у вищезгаданих уроках даних немає."
 
 #: aleksis/apps/alsijil/preferences.py:88
-#: aleksis/apps/alsijil/preferences.py:63
-msgid ""
-"Carry over personal notes to all following lesson periods on the same day."
+msgid "Carry over personal notes to all following lesson periods on the same day."
 msgstr "Переносити особисті нотатки до всіх наступних уроків того ж дня."
 
 #: aleksis/apps/alsijil/preferences.py:97
-#: aleksis/apps/alsijil/preferences.py:72
-msgid ""
-"Allow teachers to open lesson periods on the same day and not just at the "
-"beginning of the period"
-msgstr ""
-"Дозволити викладачам відкривати уроки того самого дня і не лише на початку "
-"уроків"
+msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
+msgstr "Дозволити викладачам відкривати уроки того самого дня і не лише на початку уроків"
 
 #: aleksis/apps/alsijil/preferences.py:101
-#: aleksis/apps/alsijil/preferences.py:76
-msgid ""
-"Lessons in the past are not affected by this setting, you can open them "
-"whenever you want."
-msgstr ""
-"Ці налаштування не впливають на минулі уроки. Ви можете відкривати їх будь-"
-"коли."
+msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
+msgstr "Ці налаштування не впливають на минулі уроки. Ви можете відкривати їх будь-коли."
 
 #: aleksis/apps/alsijil/preferences.py:110
-#: aleksis/apps/alsijil/preferences.py:85
 msgid "Allow teachers to add data for lessons in holidays"
-msgstr ""
-"Дозволити викладачам додавати навчальний матеріал (дані для уроків) на "
-"вихідних"
+msgstr "Дозволити викладачам додавати навчальний матеріал (дані для уроків) на вихідних"
 
 #: aleksis/apps/alsijil/preferences.py:119
-#: aleksis/apps/alsijil/preferences.py:94
-msgid ""
-"Allow group owners to assign group roles to the parents of the group's "
-"members"
+msgid "Allow group owners to assign group roles to the parents of the group's members"
 msgstr "Дозволити власникам груп призначати ролі груп батькам учасників груп"
 
 #: aleksis/apps/alsijil/preferences.py:128
-#: aleksis/apps/alsijil/preferences.py:103
 msgid "Show assigned group roles in week view"
 msgstr "Показати призначені ролі груп у тижневому огляді"
 
 #: aleksis/apps/alsijil/preferences.py:129
-#: aleksis/apps/alsijil/preferences.py:104
 msgid "Only week view of groups"
 msgstr "Лише тижневі огляди груп"
 
 #: aleksis/apps/alsijil/preferences.py:137
-#: aleksis/apps/alsijil/preferences.py:112
 msgid "Show assigned group roles in lesson view"
 msgstr "Показати призначені ролі груп в огляді уроку"
 
 #: aleksis/apps/alsijil/preferences.py:147
-#: aleksis/apps/alsijil/preferences.py:122
 msgid "Items per page in lessons table"
 msgstr "Кількість записів у розкладі на сторінку"
 
 #: aleksis/apps/alsijil/preferences.py:151
-#: aleksis/apps/alsijil/preferences.py:126
 msgid "Each page must show at least one item."
 msgstr "Кожна сторінка повинна мати принаймні один запис."
 
 #: aleksis/apps/alsijil/preferences.py:159
-#: aleksis/apps/alsijil/preferences.py:134
 msgid "Filter lessons by existence of their lesson documentation on default"
 msgstr "Типово фільтувати уроки за наявністю у них учбового матеріалу"
 
+#: aleksis/apps/alsijil/preferences.py:170
+msgid "Allow editing of all future documentations"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:173
+msgid "Allow editing of all documentations up to and including those on the current day"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:178
+msgid "Allow editing of all documentations up to and including those on the current date and time"
+msgstr ""
+
+#: aleksis/apps/alsijil/preferences.py:183
+msgid "Set time range for which documentations may be edited"
+msgstr ""
+
 #: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:47
 #: aleksis/apps/alsijil/tables.py:72
 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
@@ -666,24 +640,17 @@ msgid "Date"
 msgstr "Дата"
 
 #: aleksis/apps/alsijil/tables.py:99
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:21
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:126
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:30
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:122
 msgid "Period"
 msgstr "Урок"
 
-#: aleksis/apps/alsijil/tables.py:111
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:131
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:257
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:336
-msgid "Teachers"
-msgstr "Викладачі"
-
 #: aleksis/apps/alsijil/tables.py:118
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:160
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:30
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:39
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:161
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:21
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:46
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:123
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:323
 msgid "Tardiness"
 msgstr "Запізнення"
@@ -693,15 +660,52 @@ msgid "Excuse"
 msgstr "Пояснення"
 
 #: aleksis/apps/alsijil/tables.py:156
-#, python-brace-format
-msgid "{value}' late"
+#, fuzzy, python-brace-format
+#| msgid "{value}' late"
+msgid "{value}' tardiness"
 msgstr "{value}' затримка"
 
+#: aleksis/apps/alsijil/tasks.py:26
+msgid "Load data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:49
+#, fuzzy
+#| msgid "Start date"
+msgid "Sort data ..."
+msgstr "Дата початку"
+
+#: aleksis/apps/alsijil/tasks.py:64
+msgid "Load lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:104
+msgid "Sort lesson data ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:133
+#, fuzzy
+#| msgid "Statistics"
+msgid "Load statistics ..."
+msgstr "Статистика"
+
+#: aleksis/apps/alsijil/tasks.py:173
+msgid "Generate template ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:179
+msgid "Generate PDF ..."
+msgstr ""
+
+#: aleksis/apps/alsijil/tasks.py:185
+msgid "PDF generation failed"
+msgstr ""
+
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:5
 #: aleksis/apps/alsijil/templates/alsijil/absences/register.html:6
 #: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:30
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:385
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:380
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:140
 msgid "Register absence"
 msgstr "Реєстрація відсутності"
 
@@ -740,13 +744,11 @@ msgstr " %(count)s залежних уроків "
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:40
 msgid ""
 "\n"
-"                  There are no affected lessons. Registering this absence "
-"won't have any effect.\n"
+"                  There are no affected lessons. Registering this absence won't have any effect.\n"
 "                "
 msgstr ""
 "\n"
-"                  Залежних уроків немає. Реєстрація пропуску ні на що не "
-"впливає.\n"
+"                  Залежних уроків немає. Реєстрація пропуску ні на що не впливає.\n"
 "                "
 
 #: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:57
@@ -757,26 +759,36 @@ msgstr "Скинути статус на 'не відсутній'"
 msgid "Cancel"
 msgstr "Скасувати"
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
+msgid "All lessons"
+msgstr "Усі уроки"
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:8
+msgid "My groups"
+msgstr "Мої групи"
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr "Студенти"
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:76
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:78
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:59
 msgid "Students list"
 msgstr "Список студентів"
 
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:39
 #: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:72
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:81
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:27
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:43
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:16
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:35
 #: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:19
 msgid "Week view"
 msgstr "Тижневий огляд"
 
@@ -791,8 +803,8 @@ msgstr "Ролі"
 #: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:50
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:20
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:42
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:82
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:97
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:66
 msgid "Generate printout"
 msgstr "Підготувати для друку"
 
@@ -809,39 +821,25 @@ msgstr "студенти"
 msgid "Lesson"
 msgstr "Урок"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:28
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:27
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:37
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:83
 msgid "Persons"
 msgstr "Особи"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:36
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:45
 msgid "Seating plan"
 msgstr "План розсадження"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:46
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:55
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:32
 msgid "Previous"
 msgstr "Попередній"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:63
 msgid "More"
 msgstr "Ще"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:87
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:93
-msgid "My previous lesson"
-msgstr "Мій попередній урок"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:98
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:104
-msgid "My next lesson"
-msgstr "Мій наступний урок"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:105
-msgid "Next"
-msgstr "Наступний"
-
-#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:161
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
 msgid ""
 "\n"
 "                  This lesson overlaps with holidays and can't be edited.\n"
@@ -900,52 +898,57 @@ msgstr "Фільтри"
 msgid "Filter results"
 msgstr "Результат фільтрів"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:120
 msgid "Statistics on absences, tardiness and remarks"
 msgstr "Статистика пропусків, запізнень та зауважень"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:129
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:80
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:82
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:291
 msgid "Absences"
 msgstr "Відсутності"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:138
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:133
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:139
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:296
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:302
 msgid "thereof"
 msgstr "отже"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:140
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:141
 msgid "Without Excuse Type"
 msgstr "Без Типу Пояснення"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:150
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:102
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:151
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:104
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Unexcused"
 msgstr "Необґрунтоване"
 
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:9
+msgid "My students"
+msgstr "Мої студенти"
+
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:5
 #: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:12
 #, python-format
 msgid "Students list: %(group)s"
 msgstr "Список студентів: %(group)s"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:54
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:25
 msgid "Select"
 msgstr "Обрати"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:62
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 msgid "Toggle filters"
 msgstr "Перемикнути фільтри"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:69
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:38
 #, python-format
 msgid ""
 "CW %(week)s:\n"
@@ -954,36 +957,35 @@ msgstr ""
 "ТЖ %(week)s:\n"
 "      %(instance)s"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:293
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
 msgid "Unfold"
 msgstr "Розгорнути"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:360
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:355
 msgid "Visit lesson overview"
 msgstr "Перегляд відвідування уроку"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:398
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:393
 msgid "unexcused"
 msgstr "непояснене"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:396
 msgid "Summed up tardiness"
 msgstr "Сумарні запізнення"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:404
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:117
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:399
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:126
 msgid "Count of tardiness"
 msgstr "Кількість запізень"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:436
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:431
 msgid "No lessons available"
 msgstr "Немає доступних уроків"
 
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:439
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:434
 msgid ""
 "\n"
-"            There are no lessons for the selected group or teacher in this "
-"week.\n"
+"            There are no lessons for the selected group or teacher in this week.\n"
 "          "
 msgstr ""
 "\n"
@@ -1005,17 +1007,13 @@ msgstr "Редагувати тип пояснення"
 #: aleksis/apps/alsijil/templates/alsijil/group_role/warning.html:4
 msgid ""
 "\n"
-"    This function should only be used to define alternatives to the default "
-"excuse which also will be counted extra.\n"
-"    Don't use this to create a default excuse or if you don't divide between "
-"different types of excuse.\n"
+"    This function should only be used to define alternatives to the default excuse which also will be counted extra.\n"
+"    Don't use this to create a default excuse or if you don't divide between different types of excuse.\n"
 "  "
 msgstr ""
 "\n"
-"    Ця функція використовується лише для визначення альтернатив до типового "
-"пояснення, яке додатково буде враховане.\n"
-"    Не користуйтеся цим для створення типового пояснення або якщо не "
-"розділяєте на типи пояснень.\n"
+"    Ця функція використовується лише для визначення альтернатив до типового пояснення, яке додатково буде враховане.\n"
+"    Не користуйтеся цим для створення типового пояснення або якщо не розділяєте на типи пояснень.\n"
 "  "
 
 #: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:6
@@ -1035,6 +1033,11 @@ msgstr "Редагувати додаткову позначку"
 msgid "Assign group role for %(group)s"
 msgstr "Призначити роль групи для %(group)s"
 
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
+msgid "Assign group role"
+msgstr "Призначити роль групи"
+
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr "Призначити"
@@ -1089,14 +1092,12 @@ msgstr "Ніхто не призначений."
 #: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:41
 msgid ""
 "\n"
-"    You can get some additional actions for each group role assignment if "
-"you click on the name of the\n"
+"    You can get some additional actions for each group role assignment if you click on the name of the\n"
 "    corresponding person.\n"
 "  "
 msgstr ""
 "\n"
-"    Ви можете отримати деякі додаткові дії для кожного призначення ролі "
-"групи після кліку\n"
+"    Ви можете отримати деякі додаткові дії для кожного призначення ролі групи після кліку\n"
 "     на ім'я відповідної особи.\n"
 "  "
 
@@ -1105,24 +1106,21 @@ msgid "Stop"
 msgstr "Стоп"
 
 #: aleksis/apps/alsijil/templates/alsijil/notifications/check.html:1
-msgid ""
-"Please check if the following class register entries are complete and "
-"correct:"
-msgstr ""
-"Перевірте, будь ласка, чи ці записи класного журналу повні та правильні:"
+msgid "Please check if the following class register entries are complete and correct:"
+msgstr "Перевірте, будь ласка, чи ці записи класного журналу повні та правильні:"
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:22
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:52
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:139
 msgid "(e)"
 msgstr "(п)"
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:56
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:35
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:58
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:143
 msgid "(u)"
 msgstr "(н)"
@@ -1146,8 +1144,8 @@ msgid "Unexcused absences"
 msgstr "Необґрунтовані пропуски"
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:49
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:51
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:138
 msgid "Sum (e)"
 msgstr "Сума (п)"
@@ -1164,14 +1162,28 @@ msgstr "Регулярні пояснення пропусків"
 msgid "Excuse types (not counted as absent)"
 msgstr "Типи пояснень (не враховані як пропуски)"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:28
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+msgid "My previous lesson"
+msgstr "Мій попередній урок"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:36
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:42
+msgid "My next lesson"
+msgstr "Мій наступний урок"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:43
+msgid "Next"
+msgstr "Наступний"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:77
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:91
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/previous_lesson.html:7
 #, python-format
 msgid "%(period)s. period"
 msgstr "%(period)s. урок"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/heading.html:80
 #, python-format
 msgid ""
 "\n"
@@ -1182,13 +1194,13 @@ msgstr ""
 "            %(period_from)s.–%(period_to)s.  уроки\n"
 "          "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:10
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:136
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:139
 msgid "Save"
 msgstr "Зберегти"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:19
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:20
 #, python-format
 msgid ""
 "\n"
@@ -1199,7 +1211,7 @@ msgstr ""
 "        Попередній урок %(subject)s\n"
 "      "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:30
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/prev_next.html:31
 #, python-format
 msgid ""
 "\n"
@@ -1210,11 +1222,11 @@ msgstr ""
 "        Наступний урок %(subject)s\n"
 "      "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:13
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/more.html:11
 msgid "Change history"
 msgstr "Змінити історію"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:59
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/notes.html:58
 msgid "Tardiness (in m)"
 msgstr "Запізнення (хв)"
 
@@ -1255,15 +1267,12 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"            This seating plan is taken from the parent group of "
-"%(child_group)s.\n"
-"            If you want, you can take it over for your group and then "
-"customize it.\n"
+"            This seating plan is taken from the parent group of %(child_group)s.\n"
+"            If you want, you can take it over for your group and then customize it.\n"
 "          "
 msgstr ""
 "\n"
-"            Цей план розсадження взятий із батьківської групи "
-"%(child_group)s.\n"
+"            Цей план розсадження взятий із батьківської групи %(child_group)s.\n"
 "            При необхідності, Ви можете його налаштувати під свою групу.\n"
 "          "
 
@@ -1283,13 +1292,11 @@ msgstr "Для цього уроку немає плану розсадженн
 #, python-format
 msgid ""
 "\n"
-"                  Create a new seating plan for %(group)s (%(subject)s) in "
-"%(room)s\n"
+"                  Create a new seating plan for %(group)s (%(subject)s) in %(room)s\n"
 "                "
 msgstr ""
 "\n"
-"                  Створити новий план розсадження %(group)s (%(subject)s) у "
-"%(room)s\n"
+"                  Створити новий план розсадження %(group)s (%(subject)s) у %(room)s\n"
 "                "
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/seating_plan.html:78
@@ -1347,27 +1354,27 @@ msgid "No students available."
 msgstr "Немає доступних студентів."
 
 #: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:13
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
 msgid "Primary group"
 msgstr "Основна група"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
 msgid "Uncounted Absences"
 msgstr "Невраховані пропуски"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:48
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
 msgid "Sum"
 msgstr "Сума"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:90
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:92
 msgid "Regular excused"
 msgstr "Регулярні пояснення"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:132
 msgid "Show more details"
 msgstr "Показати більш детально"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:131
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:133
 msgid "Details"
 msgstr "Деталі"
 
@@ -1541,8 +1548,6 @@ msgstr "Так"
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:386
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:483
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:498
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:484
-#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:499
 msgid "e"
 msgstr "п"
 
@@ -1554,83 +1559,116 @@ msgstr "Тиждень"
 msgid "Notes"
 msgstr "Нотатки"
 
-#: aleksis/apps/alsijil/views.py:118
-msgid ""
-"You either selected an invalid lesson or there is currently no lesson in "
-"progress."
+#: aleksis/apps/alsijil/views.py:114
+msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr "Або Ви обрали неправильний урок, або зараз уроку немає."
 
-#: aleksis/apps/alsijil/views.py:151
-msgid ""
-"You are not allowed to create a lesson documentation for a lesson in the "
-"future."
+#: aleksis/apps/alsijil/views.py:147
+msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr "Вам не дозволено створювати учбові матеріали для уроку у майбутньому."
 
-#: aleksis/apps/alsijil/views.py:268 aleksis/apps/alsijil/views.py:266
+#: aleksis/apps/alsijil/views.py:264
 msgid "The lesson documentation has been saved."
 msgstr "Учбовий матеріал збережений."
 
-#: aleksis/apps/alsijil/views.py:302 aleksis/apps/alsijil/views.py:300
+#: aleksis/apps/alsijil/views.py:298
 msgid "The personal notes have been saved."
 msgstr "Особисті нотатки збережені."
 
-#: aleksis/apps/alsijil/views.py:1119 aleksis/apps/alsijil/views.py:1079
+#: aleksis/apps/alsijil/views.py:658
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout for {}"
+msgstr "Підготувати для друку"
+
+#: aleksis/apps/alsijil/views.py:659
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout …"
+msgstr "Підготувати для друку"
+
+#: aleksis/apps/alsijil/views.py:660
+#, fuzzy
+#| msgid "The personal note has been deleted."
+msgid "The printout has been generated successfully."
+msgstr "Особиста нотатка видалена."
+
+#: aleksis/apps/alsijil/views.py:661
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:664
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1030
 msgid "The absence has been saved."
 msgstr "Пропуск збережений."
 
-#: aleksis/apps/alsijil/views.py:1140 aleksis/apps/alsijil/views.py:1100
+#: aleksis/apps/alsijil/views.py:1051
 msgid "The personal note has been deleted."
 msgstr "Особиста нотатка видалена."
 
-#: aleksis/apps/alsijil/views.py:1162 aleksis/apps/alsijil/views.py:1122
+#: aleksis/apps/alsijil/views.py:1074
 msgid "The extra mark has been created."
 msgstr "Додаткова позначка сторена."
 
-#: aleksis/apps/alsijil/views.py:1174 aleksis/apps/alsijil/views.py:1134
+#: aleksis/apps/alsijil/views.py:1086
 msgid "The extra mark has been saved."
 msgstr "Додаткова позначка збережена."
 
-#: aleksis/apps/alsijil/views.py:1185 aleksis/apps/alsijil/views.py:1145
+#: aleksis/apps/alsijil/views.py:1097
 msgid "The extra mark has been deleted."
 msgstr "Додаткова позначка видалена."
 
-#: aleksis/apps/alsijil/views.py:1206 aleksis/apps/alsijil/views.py:1166
+#: aleksis/apps/alsijil/views.py:1119
 msgid "The excuse type has been created."
 msgstr "Тип пояснення створений."
 
-#: aleksis/apps/alsijil/views.py:1218 aleksis/apps/alsijil/views.py:1178
+#: aleksis/apps/alsijil/views.py:1131
 msgid "The excuse type has been saved."
 msgstr "Тип пояснення збережений."
 
-#: aleksis/apps/alsijil/views.py:1229 aleksis/apps/alsijil/views.py:1189
+#: aleksis/apps/alsijil/views.py:1142
 msgid "The excuse type has been deleted."
 msgstr "Тип пояснення видалений."
 
-#: aleksis/apps/alsijil/views.py:1250 aleksis/apps/alsijil/views.py:1210
+#: aleksis/apps/alsijil/views.py:1164
 msgid "The group role has been created."
 msgstr "Роль групи створена."
 
-#: aleksis/apps/alsijil/views.py:1262 aleksis/apps/alsijil/views.py:1222
+#: aleksis/apps/alsijil/views.py:1176
 msgid "The group role has been saved."
 msgstr "Роль групи збережена."
 
-#: aleksis/apps/alsijil/views.py:1273 aleksis/apps/alsijil/views.py:1233
+#: aleksis/apps/alsijil/views.py:1187
 msgid "The group role has been deleted."
 msgstr "Роль групи видалена."
 
-#: aleksis/apps/alsijil/views.py:1306 aleksis/apps/alsijil/views.py:1338
-#: aleksis/apps/alsijil/views.py:1266 aleksis/apps/alsijil/views.py:1298
+#: aleksis/apps/alsijil/views.py:1221 aleksis/apps/alsijil/views.py:1253
 msgid "The group role has been assigned."
 msgstr "Роль групи призначена."
 
-#: aleksis/apps/alsijil/views.py:1357 aleksis/apps/alsijil/views.py:1317
+#: aleksis/apps/alsijil/views.py:1272
 msgid "The group role assignment has been saved."
 msgstr "Призначення ролі групи збережене."
 
-#: aleksis/apps/alsijil/views.py:1378 aleksis/apps/alsijil/views.py:1338
+#: aleksis/apps/alsijil/views.py:1293
 msgid "The group role assignment has been stopped."
 msgstr "Призначення ролі групи зупинене."
 
-#: aleksis/apps/alsijil/views.py:1391 aleksis/apps/alsijil/views.py:1351
+#: aleksis/apps/alsijil/views.py:1306
 msgid "The group role assignment has been deleted."
 msgstr "Призначення ролі групи видалене."
+
+#~ msgid "Current lesson"
+#~ msgstr "Поточний урок"
+
+#~ msgid "Current week"
+#~ msgstr "Поточний тиждень"
+
+#~ msgid "My overview"
+#~ msgstr "Мій огляд"
+
+#~ msgid "Manage group roles"
+#~ msgstr "Керування ролями групи"