diff --git a/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po
index 80b0b47b4499745a8eac4ae7367f919ffa088be5..28db9f083723d71d895abcc2a6cde4ab53897b2b 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-08-15 10:22+0200\n"
+"POT-Creation-Date: 2023-08-30 15:10+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"
@@ -111,10 +111,10 @@ msgstr ""
 msgid "Before"
 msgstr ""
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:352
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:374
 #: 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/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"
@@ -136,8 +136,8 @@ msgstr ""
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:259
-#: aleksis/apps/alsijil/forms.py:351
+#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:281
+#: aleksis/apps/alsijil/forms.py:373
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr ""
@@ -152,80 +152,79 @@ msgstr ""
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:353
-#: aleksis/apps/alsijil/models.py:504
+#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:294
+#: 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:197 aleksis/apps/alsijil/forms.py:375
+#: aleksis/apps/alsijil/models.py:511
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:354
-#: aleksis/apps/alsijil/models.py:508
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/forms.py:376
+#: aleksis/apps/alsijil/models.py:515
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:197
+#: aleksis/apps/alsijil/forms.py:199
 msgid "Start period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:198
+#: aleksis/apps/alsijil/forms.py:200
 msgid "End period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:117
+#: aleksis/apps/alsijil/forms.py:201 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:200 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:202 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:202 aleksis/apps/alsijil/models.py:76
-#: aleksis/apps/alsijil/models.py:258
-#: 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:204 aleksis/apps/alsijil/models.py:78
+#: aleksis/apps/alsijil/models.py:260
+#: 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:207
-#: 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:209
+#: 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:272
-#: 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:349
+#: aleksis/apps/alsijil/forms.py:371
 msgid "School term"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:350
+#: aleksis/apps/alsijil/forms.py:372
 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/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
@@ -233,76 +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/models.py:553
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:24
-msgid "Instructions"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:82
-#: 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:93
-#: 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:104 aleksis/apps/alsijil/models.py:77
-#: 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:115 aleksis/apps/alsijil/models.py:263
-#: aleksis/apps/alsijil/models.py:456 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:126
-msgid "Manage group roles"
-msgstr ""
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr ""
@@ -343,168 +272,198 @@ msgstr ""
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/models.py:443
+#: aleksis/apps/alsijil/models.py:57 aleksis/apps/alsijil/models.py:445
 msgid "Short name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:56 aleksis/apps/alsijil/models.py:444
-#: aleksis/apps/alsijil/models.py:468 aleksis/apps/alsijil/models.py:529
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/models.py:472 aleksis/apps/alsijil/models.py:536
 #: 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:60 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:62 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:64
 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:238 aleksis/apps/alsijil/models.py:337
+#: aleksis/apps/alsijil/models.py:79
+#: 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:240 aleksis/apps/alsijil/models.py:339
 msgid "Year"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:297
+#: aleksis/apps/alsijil/models.py:265 aleksis/apps/alsijil/models.py:458
+#: 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:299
 msgid "Personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:298
+#: aleksis/apps/alsijil/models.py:300
 #: 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:349
-#: 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:49
+#: aleksis/apps/alsijil/models.py:351
+#: 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:48
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:350
-#: 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:57
+#: aleksis/apps/alsijil/models.py:352
+#: 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:56
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:351
-#: 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:65
+#: aleksis/apps/alsijil/models.py:353
+#: 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:64
 msgid "Group note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:358
+#: aleksis/apps/alsijil/models.py:360
 #: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:23
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:73
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:72
 msgid "Done instructions"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:409
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:411
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:410
+#: aleksis/apps/alsijil/models.py:412
 #: 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:455
+#: aleksis/apps/alsijil/models.py:457
 msgid "Extra mark"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:469 aleksis/apps/alsijil/models.py:530
+#: aleksis/apps/alsijil/models.py:473 aleksis/apps/alsijil/models.py:537
 msgid "Icon"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:470
+#: aleksis/apps/alsijil/models.py:474
 msgid "Colour"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:476 aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/models.py:480 aleksis/apps/alsijil/models.py:498
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:477
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:481
+#: 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:481
+#: aleksis/apps/alsijil/models.py:485
 msgid "Can assign group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:497
+#: aleksis/apps/alsijil/models.py:504
 msgid "Assigned person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:502 aleksis/apps/alsijil/models.py:540
+#: aleksis/apps/alsijil/models.py:509 aleksis/apps/alsijil/models.py:547
 #: 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/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:509
+#: aleksis/apps/alsijil/models.py:516
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:524
+#: aleksis/apps/alsijil/models.py:531
 msgid "Group role assignment"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:525
+#: aleksis/apps/alsijil/models.py:532
 msgid "Group role assignments"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:533
+#: aleksis/apps/alsijil/models.py:540
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:542
+#: aleksis/apps/alsijil/models.py:549
 msgid "The instruction will be shown for the members and owners of the selected groups. Leave empty to show for all groups."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:552
+#: aleksis/apps/alsijil/models.py:559
 msgid "Instruction"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:565
+#: aleksis/apps/alsijil/models.py:560
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:23
+msgid "Instructions"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:572
 msgid "Can view lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:566
+#: aleksis/apps/alsijil/models.py:573
 msgid "Can view week overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:567
+#: aleksis/apps/alsijil/models.py:574
 msgid "Can view full register"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:568
+#: aleksis/apps/alsijil/models.py:575
 msgid "Can register absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:569
+#: aleksis/apps/alsijil/models.py:576
 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 ""
@@ -598,24 +557,24 @@ 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
+#: 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/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 ""
@@ -626,14 +585,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 ""
 
@@ -677,26 +668,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 ""
 
@@ -711,8 +712,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 ""
 
@@ -729,39 +730,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"
@@ -815,84 +802,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"
@@ -936,6 +928,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 ""
@@ -1032,16 +1029,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 ""
@@ -1065,8 +1062,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 ""
@@ -1083,14 +1080,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"
@@ -1098,13 +1109,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"
@@ -1112,7 +1123,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"
@@ -1120,19 +1131,19 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:30
 msgid "Instruction done"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:81
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:80
 msgid "Instruction done in this lesson"
 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 ""
 
@@ -1248,27 +1259,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 ""
 
@@ -1439,90 +1450,110 @@ msgstr ""
 msgid "Notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:122
+#: aleksis/apps/alsijil/views.py:125
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:155
+#: aleksis/apps/alsijil/views.py:158
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:278
+#: aleksis/apps/alsijil/views.py:281
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:312
+#: aleksis/apps/alsijil/views.py:315
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1129
+#: aleksis/apps/alsijil/views.py:682
+msgid "Generate full register printout for {}"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:683
+msgid "Generate full register printout …"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:684
+msgid "The printout has been generated successfully."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:685
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:688
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1054
 msgid "The absence has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1150
+#: aleksis/apps/alsijil/views.py:1075
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1172
+#: aleksis/apps/alsijil/views.py:1098
 msgid "The extra mark has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1184
+#: aleksis/apps/alsijil/views.py:1110
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1195
+#: aleksis/apps/alsijil/views.py:1121
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1216
+#: aleksis/apps/alsijil/views.py:1143
 msgid "The excuse type has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1228
+#: aleksis/apps/alsijil/views.py:1155
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1239
+#: aleksis/apps/alsijil/views.py:1166
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1260
+#: aleksis/apps/alsijil/views.py:1188
 msgid "The group role has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1272
+#: aleksis/apps/alsijil/views.py:1200
 msgid "The group role has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1283
+#: aleksis/apps/alsijil/views.py:1211
 msgid "The group role has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1316 aleksis/apps/alsijil/views.py:1348
+#: aleksis/apps/alsijil/views.py:1245 aleksis/apps/alsijil/views.py:1277
 msgid "The group role has been assigned."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1367
+#: aleksis/apps/alsijil/views.py:1296
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1388
+#: aleksis/apps/alsijil/views.py:1317
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1401
+#: aleksis/apps/alsijil/views.py:1330
 msgid "The group role assignment has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1543
+#: aleksis/apps/alsijil/views.py:1473
 msgid "The instruction has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1555
+#: aleksis/apps/alsijil/views.py:1485
 msgid "The instruction has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1566
+#: aleksis/apps/alsijil/views.py:1496
 msgid "The instruction 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 b1645704459bbc2e2b343d6d4d5234dcd875cea7..eb421a1afd9c730fbeddc267cee96d5f75f4d691 100644
--- a/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po
+++ b/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-08-15 10:22+0200\n"
+"POT-Creation-Date: 2023-08-30 15:10+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"
@@ -111,10 +111,10 @@ msgstr "Nach"
 msgid "Before"
 msgstr "Bevor"
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:352
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:374
 #: 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/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"
@@ -136,8 +136,8 @@ msgstr "Hausaufgabe zur nächsten Stunde"
 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"
 
-#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:259
-#: aleksis/apps/alsijil/forms.py:351
+#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:281
+#: aleksis/apps/alsijil/forms.py:373
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr "Gruppe"
@@ -152,80 +152,79 @@ 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:195 aleksis/apps/alsijil/forms.py:353
-#: aleksis/apps/alsijil/models.py:504
+#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:294
+#: 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:197 aleksis/apps/alsijil/forms.py:375
+#: aleksis/apps/alsijil/models.py:511
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr "Startdatum"
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:354
-#: aleksis/apps/alsijil/models.py:508
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/forms.py:376
+#: aleksis/apps/alsijil/models.py:515
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr "Enddatum"
 
-#: aleksis/apps/alsijil/forms.py:197
+#: aleksis/apps/alsijil/forms.py:199
 msgid "Start period"
 msgstr "Startstunde"
 
-#: aleksis/apps/alsijil/forms.py:198
+#: aleksis/apps/alsijil/forms.py:200
 msgid "End period"
 msgstr "Endstunde"
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:117
+#: aleksis/apps/alsijil/forms.py:201 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:200 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:202 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:202 aleksis/apps/alsijil/models.py:76
-#: aleksis/apps/alsijil/models.py:258
-#: 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:204 aleksis/apps/alsijil/models.py:78
+#: aleksis/apps/alsijil/models.py:260
+#: 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:207
-#: 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:209
+#: 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:272
-#: 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:349
+#: aleksis/apps/alsijil/forms.py:371
 msgid "School term"
 msgstr "Schuljahr"
 
-#: aleksis/apps/alsijil/forms.py:350
+#: aleksis/apps/alsijil/forms.py:372
 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/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
@@ -233,76 +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/models.py:553
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:24
-msgid "Instructions"
-msgstr "Belehrungen"
-
-#: aleksis/apps/alsijil/menus.py:82
-#: 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:93
-#: 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:104 aleksis/apps/alsijil/models.py:77
-#: 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:115 aleksis/apps/alsijil/models.py:263
-#: aleksis/apps/alsijil/models.py:456 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:126
-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"
@@ -343,168 +272,198 @@ 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:55 aleksis/apps/alsijil/models.py:443
+#: aleksis/apps/alsijil/models.py:57 aleksis/apps/alsijil/models.py:445
 msgid "Short name"
 msgstr "Kurzname"
 
-#: aleksis/apps/alsijil/models.py:56 aleksis/apps/alsijil/models.py:444
-#: aleksis/apps/alsijil/models.py:468 aleksis/apps/alsijil/models.py:529
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/models.py:472 aleksis/apps/alsijil/models.py:536
 #: 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:60 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:62 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr "Als abwesend zählen"
 
-#: aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:64
 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."
 
-#: aleksis/apps/alsijil/models.py:238 aleksis/apps/alsijil/models.py:337
+#: aleksis/apps/alsijil/models.py:79
+#: 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:240 aleksis/apps/alsijil/models.py:339
 msgid "Year"
 msgstr "Jahr"
 
-#: aleksis/apps/alsijil/models.py:297
+#: aleksis/apps/alsijil/models.py:265 aleksis/apps/alsijil/models.py:458
+#: 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:299
 msgid "Personal note"
 msgstr "Persönliche Notiz"
 
-#: aleksis/apps/alsijil/models.py:298
+#: aleksis/apps/alsijil/models.py:300
 #: 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:349
-#: 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:49
+#: aleksis/apps/alsijil/models.py:351
+#: 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:48
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr "Stundenthema"
 
-#: aleksis/apps/alsijil/models.py:350
-#: 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:57
+#: aleksis/apps/alsijil/models.py:352
+#: 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:56
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr "Hausaufgaben"
 
-#: aleksis/apps/alsijil/models.py:351
-#: 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:65
+#: aleksis/apps/alsijil/models.py:353
+#: 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:64
 msgid "Group note"
 msgstr "Gruppennotiz"
 
-#: aleksis/apps/alsijil/models.py:358
+#: aleksis/apps/alsijil/models.py:360
 #: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:23
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:73
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:72
 msgid "Done instructions"
 msgstr "Durchgeführte Belehrungen"
 
-#: aleksis/apps/alsijil/models.py:409
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:411
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr "Stunden-Dokumentation"
 
-#: aleksis/apps/alsijil/models.py:410
+#: aleksis/apps/alsijil/models.py:412
 #: 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:455
+#: aleksis/apps/alsijil/models.py:457
 msgid "Extra mark"
 msgstr "Zusätzliche Markierung"
 
-#: aleksis/apps/alsijil/models.py:469 aleksis/apps/alsijil/models.py:530
+#: aleksis/apps/alsijil/models.py:473 aleksis/apps/alsijil/models.py:537
 msgid "Icon"
 msgstr "Symbol"
 
-#: aleksis/apps/alsijil/models.py:470
+#: aleksis/apps/alsijil/models.py:474
 msgid "Colour"
 msgstr "Farbe"
 
-#: aleksis/apps/alsijil/models.py:476 aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/models.py:480 aleksis/apps/alsijil/models.py:498
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr "Gruppenrolle"
 
-#: aleksis/apps/alsijil/models.py:477
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:481
+#: 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:481
+#: aleksis/apps/alsijil/models.py:485
 msgid "Can assign group role"
 msgstr "Kann Gruppenrolle zuweisen"
 
-#: aleksis/apps/alsijil/models.py:497
+#: aleksis/apps/alsijil/models.py:504
 msgid "Assigned person"
 msgstr "Zugewiesene Person"
 
-#: aleksis/apps/alsijil/models.py:502 aleksis/apps/alsijil/models.py:540
+#: aleksis/apps/alsijil/models.py:509 aleksis/apps/alsijil/models.py:547
 #: 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/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:509
+#: aleksis/apps/alsijil/models.py:516
 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:524
+#: aleksis/apps/alsijil/models.py:531
 msgid "Group role assignment"
 msgstr "Zuweisung von Gruppenrollen"
 
-#: aleksis/apps/alsijil/models.py:525
+#: aleksis/apps/alsijil/models.py:532
 msgid "Group role assignments"
 msgstr "Zuweisungen von Gruppenrollen"
 
-#: aleksis/apps/alsijil/models.py:533
+#: aleksis/apps/alsijil/models.py:540
 msgid "PDF file"
 msgstr "PDF-Datei"
 
-#: aleksis/apps/alsijil/models.py:542
+#: aleksis/apps/alsijil/models.py:549
 msgid "The instruction will be shown for the members and owners of the selected groups. Leave empty to show for all groups."
 msgstr "Die Belehrung wird für die die Mitglieder und Besitzer der ausgewählten Gruppen angezeigt werden. Frei lassen, um sie für alle Gruppen anzuzeigen."
 
-#: aleksis/apps/alsijil/models.py:552
+#: aleksis/apps/alsijil/models.py:559
 msgid "Instruction"
 msgstr "Belehrung"
 
-#: aleksis/apps/alsijil/models.py:565
+#: aleksis/apps/alsijil/models.py:560
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:23
+msgid "Instructions"
+msgstr "Belehrungen"
+
+#: aleksis/apps/alsijil/models.py:572
 msgid "Can view lesson overview"
 msgstr "Kann die Stundenübersicht sehen"
 
-#: aleksis/apps/alsijil/models.py:566
+#: aleksis/apps/alsijil/models.py:573
 msgid "Can view week overview"
 msgstr "Kann die Wochenübersicht sehen"
 
-#: aleksis/apps/alsijil/models.py:567
+#: aleksis/apps/alsijil/models.py:574
 msgid "Can view full register"
 msgstr "Kann komplettes Klassenbuch sehen"
 
-#: aleksis/apps/alsijil/models.py:568
+#: aleksis/apps/alsijil/models.py:575
 msgid "Can register absence"
 msgstr "Kann eine Absenz registrieren"
 
-#: aleksis/apps/alsijil/models.py:569
+#: aleksis/apps/alsijil/models.py:576
 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"
@@ -598,24 +557,24 @@ 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
+#: 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/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"
@@ -625,15 +584,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"
 
@@ -687,26 +683,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"
 
@@ -721,8 +727,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"
 
@@ -739,39 +745,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"
@@ -831,52 +823,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"
@@ -885,32 +882,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"
@@ -961,6 +958,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"
@@ -1061,16 +1063,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)"
@@ -1094,8 +1096,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)"
@@ -1112,14 +1114,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"
@@ -1130,13 +1146,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"
@@ -1147,7 +1163,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"
@@ -1158,19 +1174,19 @@ msgstr ""
 "        Nächste %(subject)s Stunde\n"
 "      "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:30
 msgid "Instruction done"
 msgstr "Belehrung durchgeführt"
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:81
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:80
 msgid "Instruction done in this lesson"
 msgstr "Belehrung in dieser Stunde durchgeführt"
 
-#: 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)"
 
@@ -1298,27 +1314,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"
 
@@ -1503,96 +1519,134 @@ msgstr "KW"
 msgid "Notes"
 msgstr "Notizen"
 
-#: aleksis/apps/alsijil/views.py:122
+#: aleksis/apps/alsijil/views.py:125
 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:155
+#: aleksis/apps/alsijil/views.py:158
 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:278
+#: aleksis/apps/alsijil/views.py:281
 msgid "The lesson documentation has been saved."
 msgstr "Die Stunden-Dokumentation wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:312
+#: aleksis/apps/alsijil/views.py:315
 msgid "The personal notes have been saved."
 msgstr "Die persönlichen Notizen wurden gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1129
+#: aleksis/apps/alsijil/views.py:682
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout for {}"
+msgstr "Ausdruck generieren"
+
+#: aleksis/apps/alsijil/views.py:683
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout …"
+msgstr "Ausdruck generieren"
+
+#: aleksis/apps/alsijil/views.py:684
+#, fuzzy
+#| msgid "The instruction has been created."
+msgid "The printout has been generated successfully."
+msgstr "Die Belehrung wurde erstellt."
+
+#: aleksis/apps/alsijil/views.py:685
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:688
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1054
 msgid "The absence has been saved."
 msgstr "Die Abwesenheit wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1150
+#: aleksis/apps/alsijil/views.py:1075
 msgid "The personal note has been deleted."
 msgstr "Die persönliche Notiz wurde gelöscht."
 
-#: aleksis/apps/alsijil/views.py:1172
+#: aleksis/apps/alsijil/views.py:1098
 msgid "The extra mark has been created."
 msgstr "Die zusätzliche Markierung wurde erstellt."
 
-#: aleksis/apps/alsijil/views.py:1184
+#: aleksis/apps/alsijil/views.py:1110
 msgid "The extra mark has been saved."
 msgstr "Die zusätzliche Markierung wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1195
+#: aleksis/apps/alsijil/views.py:1121
 msgid "The extra mark has been deleted."
 msgstr "Die zusätzliche Markierung wurde gelöscht."
 
-#: aleksis/apps/alsijil/views.py:1216
+#: aleksis/apps/alsijil/views.py:1143
 msgid "The excuse type has been created."
 msgstr "Die Entschuldigungsart wurde erstellt."
 
-#: aleksis/apps/alsijil/views.py:1228
+#: aleksis/apps/alsijil/views.py:1155
 msgid "The excuse type has been saved."
 msgstr "Die Entschuldigunsart wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1239
+#: aleksis/apps/alsijil/views.py:1166
 msgid "The excuse type has been deleted."
 msgstr "Die Entschuldigungsart wurde gelöscht."
 
-#: aleksis/apps/alsijil/views.py:1260
+#: aleksis/apps/alsijil/views.py:1188
 msgid "The group role has been created."
 msgstr "Die Gruppenrolle wurde erstellt."
 
-#: aleksis/apps/alsijil/views.py:1272
+#: aleksis/apps/alsijil/views.py:1200
 msgid "The group role has been saved."
 msgstr "Die Gruppenrolle wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1283
+#: aleksis/apps/alsijil/views.py:1211
 msgid "The group role has been deleted."
 msgstr "Die Gruppenrolle wurde gelöscht."
 
-#: aleksis/apps/alsijil/views.py:1316 aleksis/apps/alsijil/views.py:1348
+#: aleksis/apps/alsijil/views.py:1245 aleksis/apps/alsijil/views.py:1277
 msgid "The group role has been assigned."
 msgstr "Die Gruppenrolle wurde zugewiesen."
 
-#: aleksis/apps/alsijil/views.py:1367
+#: aleksis/apps/alsijil/views.py:1296
 msgid "The group role assignment has been saved."
 msgstr "Die Gruppenrollenzuweisung wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1388
+#: aleksis/apps/alsijil/views.py:1317
 msgid "The group role assignment has been stopped."
 msgstr "Die Gruppenrollenzuweisung wurde beendet."
 
-#: aleksis/apps/alsijil/views.py:1401
+#: aleksis/apps/alsijil/views.py:1330
 msgid "The group role assignment has been deleted."
 msgstr "Die Gruppenrollenzuweisung wurde gelöscht."
 
-#: aleksis/apps/alsijil/views.py:1543
+#: aleksis/apps/alsijil/views.py:1473
 msgid "The instruction has been created."
 msgstr "Die Belehrung wurde erstellt."
 
-#: aleksis/apps/alsijil/views.py:1555
+#: aleksis/apps/alsijil/views.py:1485
 msgid "The instruction has been saved."
 msgstr "Die Belehrung wurde gespeichert."
 
-#: aleksis/apps/alsijil/views.py:1566
+#: aleksis/apps/alsijil/views.py:1496
 msgid "The instruction has been deleted."
 msgstr "Die Belehrung 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 30ae264b9b09f1220da472ab11630f15054ba037..fe97be676563ed776c3c1db2ecf07539bb8c602c 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-08-15 10:22+0200\n"
+"POT-Creation-Date: 2023-08-30 15:10+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"
@@ -123,10 +123,10 @@ msgstr ""
 msgid "Before"
 msgstr ""
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:352
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:374
 #: 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/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"
@@ -152,8 +152,8 @@ msgstr ""
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:259
-#: aleksis/apps/alsijil/forms.py:351
+#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:281
+#: aleksis/apps/alsijil/forms.py:373
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr "groupe"
@@ -168,88 +168,87 @@ msgstr "prof"
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:353
-#: aleksis/apps/alsijil/models.py:504
+#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:294
+#: 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:197 aleksis/apps/alsijil/forms.py:375
+#: aleksis/apps/alsijil/models.py:511
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr "Date de début"
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:354
-#: aleksis/apps/alsijil/models.py:508
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/forms.py:376
+#: aleksis/apps/alsijil/models.py:515
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr "Date de fin"
 
-#: aleksis/apps/alsijil/forms.py:197
+#: aleksis/apps/alsijil/forms.py:199
 #, fuzzy
 #| msgid "From period"
 msgid "Start period"
 msgstr "De la période"
 
-#: aleksis/apps/alsijil/forms.py:198
+#: aleksis/apps/alsijil/forms.py:200
 #, fuzzy
 #| msgid "From period"
 msgid "End period"
 msgstr "De la période"
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:117
+#: aleksis/apps/alsijil/forms.py:201 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:200 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:202 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:202 aleksis/apps/alsijil/models.py:76
-#: aleksis/apps/alsijil/models.py:258
-#: 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:204 aleksis/apps/alsijil/models.py:78
+#: aleksis/apps/alsijil/models.py:260
+#: 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:207
-#: 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:209
+#: 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:272
-#: 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:349
+#: aleksis/apps/alsijil/forms.py:371
 msgid "School term"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:350
+#: aleksis/apps/alsijil/forms.py:372
 #, 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/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
@@ -257,84 +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/models.py:553
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:24
-msgid "Instructions"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:82
-#: 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:93
-#: 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:104 aleksis/apps/alsijil/models.py:77
-#: 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:115 aleksis/apps/alsijil/models.py:263
-#: aleksis/apps/alsijil/models.py:456 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:126
-msgid "Manage group roles"
-msgstr ""
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr ""
@@ -385,113 +306,133 @@ msgstr ""
 msgid "Can register an absence for a person"
 msgstr "Registre de la classe"
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/models.py:443
+#: aleksis/apps/alsijil/models.py:57 aleksis/apps/alsijil/models.py:445
 #, fuzzy
 #| msgid "First name"
 msgid "Short name"
 msgstr "Prénom"
 
-#: aleksis/apps/alsijil/models.py:56 aleksis/apps/alsijil/models.py:444
-#: aleksis/apps/alsijil/models.py:468 aleksis/apps/alsijil/models.py:529
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/models.py:472 aleksis/apps/alsijil/models.py:536
 #: 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:60 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:62 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:64
 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:238 aleksis/apps/alsijil/models.py:337
+#: aleksis/apps/alsijil/models.py:79
+#: 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:240 aleksis/apps/alsijil/models.py:339
 msgid "Year"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:297
+#: aleksis/apps/alsijil/models.py:265 aleksis/apps/alsijil/models.py:458
+#: 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:299
 #, fuzzy
 #| msgid "Personal notes"
 msgid "Personal note"
 msgstr "Notes personnelles"
 
-#: aleksis/apps/alsijil/models.py:298
+#: aleksis/apps/alsijil/models.py:300
 #: 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:349
-#: 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:49
+#: aleksis/apps/alsijil/models.py:351
+#: 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:48
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr "Sujet de cours"
 
-#: aleksis/apps/alsijil/models.py:350
-#: 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:57
+#: aleksis/apps/alsijil/models.py:352
+#: 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:56
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr "Devoirs"
 
-#: aleksis/apps/alsijil/models.py:351
-#: 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:65
+#: aleksis/apps/alsijil/models.py:353
+#: 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:64
 #, fuzzy
 #| msgid "Group"
 msgid "Group note"
 msgstr "Groupe"
 
-#: aleksis/apps/alsijil/models.py:358
+#: aleksis/apps/alsijil/models.py:360
 #: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:23
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:73
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:72
 msgid "Done instructions"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:409
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:411
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr "Documentation de cours"
 
-#: aleksis/apps/alsijil/models.py:410
+#: aleksis/apps/alsijil/models.py:412
 #: 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:455
+#: aleksis/apps/alsijil/models.py:457
 msgid "Extra mark"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:469 aleksis/apps/alsijil/models.py:530
+#: aleksis/apps/alsijil/models.py:473 aleksis/apps/alsijil/models.py:537
 msgid "Icon"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:470
+#: aleksis/apps/alsijil/models.py:474
 msgid "Colour"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:476 aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/models.py:480 aleksis/apps/alsijil/models.py:498
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 #, fuzzy
 #| msgid "Group"
 msgid "Group role"
 msgstr "Groupe"
 
-#: aleksis/apps/alsijil/models.py:477
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:481
+#: 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
@@ -499,80 +440,92 @@ msgstr "Groupe"
 msgid "Group roles"
 msgstr "Groupe"
 
-#: aleksis/apps/alsijil/models.py:481
+#: aleksis/apps/alsijil/models.py:485
 #, fuzzy
 #| msgid "Persons in group"
 msgid "Can assign group role"
 msgstr "Personnes en groupe"
 
-#: aleksis/apps/alsijil/models.py:497
+#: aleksis/apps/alsijil/models.py:504
 #, fuzzy
 #| msgid "Absences"
 msgid "Assigned person"
 msgstr "Absences"
 
-#: aleksis/apps/alsijil/models.py:502 aleksis/apps/alsijil/models.py:540
+#: aleksis/apps/alsijil/models.py:509 aleksis/apps/alsijil/models.py:547
 #: 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/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:509
+#: aleksis/apps/alsijil/models.py:516
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:524
+#: aleksis/apps/alsijil/models.py:531
 msgid "Group role assignment"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:525
+#: aleksis/apps/alsijil/models.py:532
 msgid "Group role assignments"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:533
+#: aleksis/apps/alsijil/models.py:540
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:542
+#: aleksis/apps/alsijil/models.py:549
 msgid "The instruction will be shown for the members and owners of the selected groups. Leave empty to show for all groups."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:552
+#: aleksis/apps/alsijil/models.py:559
 msgid "Instruction"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:565
+#: aleksis/apps/alsijil/models.py:560
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:23
+msgid "Instructions"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:572
 #, fuzzy
 #| msgid "Personal overview"
 msgid "Can view lesson overview"
 msgstr "Vue d'ensemble personnelle"
 
-#: aleksis/apps/alsijil/models.py:566
+#: aleksis/apps/alsijil/models.py:573
 msgid "Can view week overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:567
+#: aleksis/apps/alsijil/models.py:574
 #, fuzzy
 #| msgid "Class register"
 msgid "Can view full register"
 msgstr "Registre de la classe"
 
-#: aleksis/apps/alsijil/models.py:568
+#: aleksis/apps/alsijil/models.py:575
 #, fuzzy
 #| msgid "Register absence"
 msgid "Can register absence"
 msgstr "Registre de Absence"
 
-#: aleksis/apps/alsijil/models.py:569
+#: aleksis/apps/alsijil/models.py:576
 #, 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 ""
@@ -668,24 +621,24 @@ 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
+#: 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/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"
@@ -697,15 +650,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"
 
@@ -759,26 +747,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"
 
@@ -793,8 +793,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 ""
 
@@ -811,47 +811,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"
@@ -921,92 +903,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"
@@ -1058,6 +1045,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 ""
@@ -1162,16 +1156,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 ""
@@ -1197,8 +1191,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 ""
@@ -1219,15 +1213,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"
@@ -1235,13 +1247,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"
@@ -1249,7 +1261,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"
@@ -1257,19 +1269,19 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:30
 msgid "Instruction done"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:81
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:80
 msgid "Instruction done in this lesson"
 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)"
@@ -1395,33 +1407,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 ""
 
@@ -1600,122 +1612,155 @@ msgstr "Vue de semaine"
 msgid "Notes"
 msgstr "Notes"
 
-#: aleksis/apps/alsijil/views.py:122
+#: aleksis/apps/alsijil/views.py:125
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:155
+#: aleksis/apps/alsijil/views.py:158
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:278
+#: aleksis/apps/alsijil/views.py:281
 #, 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:312
+#: aleksis/apps/alsijil/views.py:315
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1129
+#: aleksis/apps/alsijil/views.py:682
+msgid "Generate full register printout for {}"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:683
+msgid "Generate full register printout …"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:684
+#, 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:685
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:688
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1054
 msgid "The absence has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1150
+#: aleksis/apps/alsijil/views.py:1075
 #, 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:1172
+#: aleksis/apps/alsijil/views.py:1098
 #, 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:1184
+#: aleksis/apps/alsijil/views.py:1110
 #, 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:1195
+#: aleksis/apps/alsijil/views.py:1121
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1216
+#: aleksis/apps/alsijil/views.py:1143
 msgid "The excuse type has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1228
+#: aleksis/apps/alsijil/views.py:1155
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1239
+#: aleksis/apps/alsijil/views.py:1166
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1260
+#: aleksis/apps/alsijil/views.py:1188
 #, 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:1272
+#: aleksis/apps/alsijil/views.py:1200
 #, 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:1283
+#: aleksis/apps/alsijil/views.py:1211
 #, 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:1316 aleksis/apps/alsijil/views.py:1348
+#: aleksis/apps/alsijil/views.py:1245 aleksis/apps/alsijil/views.py:1277
 #, 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:1367
+#: aleksis/apps/alsijil/views.py:1296
 #, 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:1388
+#: aleksis/apps/alsijil/views.py:1317
 #, 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:1401
+#: aleksis/apps/alsijil/views.py:1330
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role assignment has been deleted."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1543
+#: aleksis/apps/alsijil/views.py:1473
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The instruction has been created."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1555
+#: aleksis/apps/alsijil/views.py:1485
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The instruction has been saved."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: aleksis/apps/alsijil/views.py:1566
+#: aleksis/apps/alsijil/views.py:1496
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The instruction 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 e79cf9a334e79dae18d2bfbbfffd08dea8b85b51..64bf9d2a3da9eef937ba70f7e1125cb427962f20 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-08-15 10:22+0200\n"
+"POT-Creation-Date: 2023-08-30 15:10+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"
@@ -111,10 +111,10 @@ msgstr ""
 msgid "Before"
 msgstr ""
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:352
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:374
 #: 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/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"
@@ -136,8 +136,8 @@ msgstr ""
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:259
-#: aleksis/apps/alsijil/forms.py:351
+#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:281
+#: aleksis/apps/alsijil/forms.py:373
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr "Grex"
@@ -152,80 +152,79 @@ msgstr ""
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:353
-#: aleksis/apps/alsijil/models.py:504
+#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:294
+#: 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:197 aleksis/apps/alsijil/forms.py:375
+#: aleksis/apps/alsijil/models.py:511
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:354
-#: aleksis/apps/alsijil/models.py:508
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/forms.py:376
+#: aleksis/apps/alsijil/models.py:515
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:197
+#: aleksis/apps/alsijil/forms.py:199
 msgid "Start period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:198
+#: aleksis/apps/alsijil/forms.py:200
 msgid "End period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:117
+#: aleksis/apps/alsijil/forms.py:201 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:200 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:202 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:202 aleksis/apps/alsijil/models.py:76
-#: aleksis/apps/alsijil/models.py:258
-#: 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:204 aleksis/apps/alsijil/models.py:78
+#: aleksis/apps/alsijil/models.py:260
+#: 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:207
-#: 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:209
+#: 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:272
-#: 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:349
+#: aleksis/apps/alsijil/forms.py:371
 msgid "School term"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:350
+#: aleksis/apps/alsijil/forms.py:372
 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/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
@@ -233,78 +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/models.py:553
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:24
-msgid "Instructions"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:82
-#: 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:93
-#: 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:104 aleksis/apps/alsijil/models.py:77
-#: 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:115 aleksis/apps/alsijil/models.py:263
-#: aleksis/apps/alsijil/models.py:456 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:126
-msgid "Manage group roles"
-msgstr ""
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr ""
@@ -345,111 +272,129 @@ msgstr ""
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/models.py:443
+#: aleksis/apps/alsijil/models.py:57 aleksis/apps/alsijil/models.py:445
 #, fuzzy
 #| msgid "First name"
 msgid "Short name"
 msgstr "Primus nomen"
 
-#: aleksis/apps/alsijil/models.py:56 aleksis/apps/alsijil/models.py:444
-#: aleksis/apps/alsijil/models.py:468 aleksis/apps/alsijil/models.py:529
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/models.py:472 aleksis/apps/alsijil/models.py:536
 #: 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:60 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:62 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:64
 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:238 aleksis/apps/alsijil/models.py:337
+#: aleksis/apps/alsijil/models.py:79
+#: 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:240 aleksis/apps/alsijil/models.py:339
 msgid "Year"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:297
+#: aleksis/apps/alsijil/models.py:265 aleksis/apps/alsijil/models.py:458
+#: 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:299
 #, fuzzy
 #| msgid "Person"
 msgid "Personal note"
 msgstr "Persona"
 
-#: aleksis/apps/alsijil/models.py:298
+#: aleksis/apps/alsijil/models.py:300
 #: 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:349
-#: 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:49
+#: aleksis/apps/alsijil/models.py:351
+#: 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:48
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:350
-#: 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:57
+#: aleksis/apps/alsijil/models.py:352
+#: 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:56
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:351
-#: 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:65
+#: aleksis/apps/alsijil/models.py:353
+#: 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:64
 #, fuzzy
 #| msgid "Group"
 msgid "Group note"
 msgstr "Grex"
 
-#: aleksis/apps/alsijil/models.py:358
+#: aleksis/apps/alsijil/models.py:360
 #: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:23
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:73
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:72
 msgid "Done instructions"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:409
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:411
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:410
+#: aleksis/apps/alsijil/models.py:412
 #: 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:455
+#: aleksis/apps/alsijil/models.py:457
 msgid "Extra mark"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:469 aleksis/apps/alsijil/models.py:530
+#: aleksis/apps/alsijil/models.py:473 aleksis/apps/alsijil/models.py:537
 msgid "Icon"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:470
+#: aleksis/apps/alsijil/models.py:474
 msgid "Colour"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:476 aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/models.py:480 aleksis/apps/alsijil/models.py:498
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 #, fuzzy
 #| msgid "Group"
 msgid "Group role"
 msgstr "Grex"
 
-#: aleksis/apps/alsijil/models.py:477
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:481
+#: 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
@@ -457,68 +402,80 @@ msgstr "Grex"
 msgid "Group roles"
 msgstr "Grex"
 
-#: aleksis/apps/alsijil/models.py:481
+#: aleksis/apps/alsijil/models.py:485
 msgid "Can assign group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:497
+#: aleksis/apps/alsijil/models.py:504
 msgid "Assigned person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:502 aleksis/apps/alsijil/models.py:540
+#: aleksis/apps/alsijil/models.py:509 aleksis/apps/alsijil/models.py:547
 #: 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/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:509
+#: aleksis/apps/alsijil/models.py:516
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:524
+#: aleksis/apps/alsijil/models.py:531
 msgid "Group role assignment"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:525
+#: aleksis/apps/alsijil/models.py:532
 msgid "Group role assignments"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:533
+#: aleksis/apps/alsijil/models.py:540
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:542
+#: aleksis/apps/alsijil/models.py:549
 msgid "The instruction will be shown for the members and owners of the selected groups. Leave empty to show for all groups."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:552
+#: aleksis/apps/alsijil/models.py:559
 msgid "Instruction"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:565
+#: aleksis/apps/alsijil/models.py:560
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:23
+msgid "Instructions"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:572
 msgid "Can view lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:566
+#: aleksis/apps/alsijil/models.py:573
 msgid "Can view week overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:567
+#: aleksis/apps/alsijil/models.py:574
 msgid "Can view full register"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:568
+#: aleksis/apps/alsijil/models.py:575
 msgid "Can register absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:569
+#: aleksis/apps/alsijil/models.py:576
 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 ""
@@ -612,24 +569,24 @@ 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
+#: 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/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 ""
@@ -640,14 +597,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 ""
 
@@ -691,26 +680,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 ""
 
@@ -725,8 +726,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 ""
 
@@ -743,41 +744,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"
@@ -835,84 +822,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"
@@ -956,6 +948,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 ""
@@ -1056,16 +1053,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 ""
@@ -1089,8 +1086,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 ""
@@ -1107,14 +1104,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"
@@ -1122,13 +1133,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"
@@ -1136,7 +1147,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"
@@ -1144,19 +1155,19 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:30
 msgid "Instruction done"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:81
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:80
 msgid "Instruction done in this lesson"
 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 ""
 
@@ -1272,29 +1283,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 ""
 
@@ -1465,91 +1476,111 @@ msgstr ""
 msgid "Notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:122
+#: aleksis/apps/alsijil/views.py:125
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:155
+#: aleksis/apps/alsijil/views.py:158
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:278
+#: aleksis/apps/alsijil/views.py:281
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:312
+#: aleksis/apps/alsijil/views.py:315
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1129
+#: aleksis/apps/alsijil/views.py:682
+msgid "Generate full register printout for {}"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:683
+msgid "Generate full register printout …"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:684
+msgid "The printout has been generated successfully."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:685
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:688
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1054
 msgid "The absence has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1150
+#: aleksis/apps/alsijil/views.py:1075
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1172
+#: aleksis/apps/alsijil/views.py:1098
 msgid "The extra mark has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1184
+#: aleksis/apps/alsijil/views.py:1110
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1195
+#: aleksis/apps/alsijil/views.py:1121
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1216
+#: aleksis/apps/alsijil/views.py:1143
 msgid "The excuse type has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1228
+#: aleksis/apps/alsijil/views.py:1155
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1239
+#: aleksis/apps/alsijil/views.py:1166
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1260
+#: aleksis/apps/alsijil/views.py:1188
 msgid "The group role has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1272
+#: aleksis/apps/alsijil/views.py:1200
 msgid "The group role has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1283
+#: aleksis/apps/alsijil/views.py:1211
 msgid "The group role has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1316 aleksis/apps/alsijil/views.py:1348
+#: aleksis/apps/alsijil/views.py:1245 aleksis/apps/alsijil/views.py:1277
 msgid "The group role has been assigned."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1367
+#: aleksis/apps/alsijil/views.py:1296
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1388
+#: aleksis/apps/alsijil/views.py:1317
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1401
+#: aleksis/apps/alsijil/views.py:1330
 msgid "The group role assignment has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1543
+#: aleksis/apps/alsijil/views.py:1473
 msgid "The instruction has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1555
+#: aleksis/apps/alsijil/views.py:1485
 msgid "The instruction has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1566
+#: aleksis/apps/alsijil/views.py:1496
 msgid "The instruction 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 d4a67263a00059707308ebe4a414a3d05f4ea660..b34b2a38b975e4b3922691790aa1cbe7d3d0e596 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-08-15 10:22+0200\n"
+"POT-Creation-Date: 2023-08-30 15:10+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"
@@ -110,10 +110,10 @@ msgstr ""
 msgid "Before"
 msgstr ""
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:352
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:374
 #: 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/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:101 aleksis/apps/alsijil/forms.py:259
-#: aleksis/apps/alsijil/forms.py:351
+#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:281
+#: aleksis/apps/alsijil/forms.py:373
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr ""
@@ -151,80 +151,79 @@ msgstr ""
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:353
-#: aleksis/apps/alsijil/models.py:504
+#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:294
+#: 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:197 aleksis/apps/alsijil/forms.py:375
+#: aleksis/apps/alsijil/models.py:511
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:354
-#: aleksis/apps/alsijil/models.py:508
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/forms.py:376
+#: aleksis/apps/alsijil/models.py:515
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:197
+#: aleksis/apps/alsijil/forms.py:199
 msgid "Start period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:198
+#: aleksis/apps/alsijil/forms.py:200
 msgid "End period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:117
+#: aleksis/apps/alsijil/forms.py:201 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:200 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:202 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:202 aleksis/apps/alsijil/models.py:76
-#: aleksis/apps/alsijil/models.py:258
-#: 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:204 aleksis/apps/alsijil/models.py:78
+#: aleksis/apps/alsijil/models.py:260
+#: 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:207
-#: 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:209
+#: 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:272
-#: 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:349
+#: aleksis/apps/alsijil/forms.py:371
 msgid "School term"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:350
+#: aleksis/apps/alsijil/forms.py:372
 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/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,76 +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/models.py:553
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:24
-msgid "Instructions"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:82
-#: 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:93
-#: 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:104 aleksis/apps/alsijil/models.py:77
-#: 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:115 aleksis/apps/alsijil/models.py:263
-#: aleksis/apps/alsijil/models.py:456 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:126
-msgid "Manage group roles"
-msgstr ""
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr ""
@@ -342,168 +271,198 @@ msgstr ""
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/models.py:443
+#: aleksis/apps/alsijil/models.py:57 aleksis/apps/alsijil/models.py:445
 msgid "Short name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:56 aleksis/apps/alsijil/models.py:444
-#: aleksis/apps/alsijil/models.py:468 aleksis/apps/alsijil/models.py:529
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/models.py:472 aleksis/apps/alsijil/models.py:536
 #: 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:60 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:62 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:64
 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:238 aleksis/apps/alsijil/models.py:337
+#: aleksis/apps/alsijil/models.py:79
+#: 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:240 aleksis/apps/alsijil/models.py:339
 msgid "Year"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:297
+#: aleksis/apps/alsijil/models.py:265 aleksis/apps/alsijil/models.py:458
+#: 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:299
 msgid "Personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:298
+#: aleksis/apps/alsijil/models.py:300
 #: 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:349
-#: 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:49
+#: aleksis/apps/alsijil/models.py:351
+#: 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:48
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:350
-#: 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:57
+#: aleksis/apps/alsijil/models.py:352
+#: 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:56
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:351
-#: 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:65
+#: aleksis/apps/alsijil/models.py:353
+#: 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:64
 msgid "Group note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:358
+#: aleksis/apps/alsijil/models.py:360
 #: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:23
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:73
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:72
 msgid "Done instructions"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:409
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:411
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:410
+#: aleksis/apps/alsijil/models.py:412
 #: 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:455
+#: aleksis/apps/alsijil/models.py:457
 msgid "Extra mark"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:469 aleksis/apps/alsijil/models.py:530
+#: aleksis/apps/alsijil/models.py:473 aleksis/apps/alsijil/models.py:537
 msgid "Icon"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:470
+#: aleksis/apps/alsijil/models.py:474
 msgid "Colour"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:476 aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/models.py:480 aleksis/apps/alsijil/models.py:498
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:477
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:481
+#: 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:481
+#: aleksis/apps/alsijil/models.py:485
 msgid "Can assign group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:497
+#: aleksis/apps/alsijil/models.py:504
 msgid "Assigned person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:502 aleksis/apps/alsijil/models.py:540
+#: aleksis/apps/alsijil/models.py:509 aleksis/apps/alsijil/models.py:547
 #: 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/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:509
+#: aleksis/apps/alsijil/models.py:516
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:524
+#: aleksis/apps/alsijil/models.py:531
 msgid "Group role assignment"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:525
+#: aleksis/apps/alsijil/models.py:532
 msgid "Group role assignments"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:533
+#: aleksis/apps/alsijil/models.py:540
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:542
+#: aleksis/apps/alsijil/models.py:549
 msgid "The instruction will be shown for the members and owners of the selected groups. Leave empty to show for all groups."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:552
+#: aleksis/apps/alsijil/models.py:559
 msgid "Instruction"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:565
+#: aleksis/apps/alsijil/models.py:560
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:23
+msgid "Instructions"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:572
 msgid "Can view lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:566
+#: aleksis/apps/alsijil/models.py:573
 msgid "Can view week overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:567
+#: aleksis/apps/alsijil/models.py:574
 msgid "Can view full register"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:568
+#: aleksis/apps/alsijil/models.py:575
 msgid "Can register absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:569
+#: aleksis/apps/alsijil/models.py:576
 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 ""
@@ -597,24 +556,24 @@ 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
+#: 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/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 ""
@@ -625,14 +584,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 ""
 
@@ -676,26 +667,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 ""
 
@@ -710,8 +711,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 ""
 
@@ -728,39 +729,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"
@@ -814,84 +801,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"
@@ -935,6 +927,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 ""
@@ -1031,16 +1028,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 ""
@@ -1064,8 +1061,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 ""
@@ -1082,14 +1079,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"
@@ -1097,13 +1108,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"
@@ -1111,7 +1122,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"
@@ -1119,19 +1130,19 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:30
 msgid "Instruction done"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:81
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:80
 msgid "Instruction done in this lesson"
 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 ""
 
@@ -1247,27 +1258,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 ""
 
@@ -1438,90 +1449,110 @@ msgstr ""
 msgid "Notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:122
+#: aleksis/apps/alsijil/views.py:125
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:155
+#: aleksis/apps/alsijil/views.py:158
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:278
+#: aleksis/apps/alsijil/views.py:281
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:312
+#: aleksis/apps/alsijil/views.py:315
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1129
+#: aleksis/apps/alsijil/views.py:682
+msgid "Generate full register printout for {}"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:683
+msgid "Generate full register printout …"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:684
+msgid "The printout has been generated successfully."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:685
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:688
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1054
 msgid "The absence has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1150
+#: aleksis/apps/alsijil/views.py:1075
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1172
+#: aleksis/apps/alsijil/views.py:1098
 msgid "The extra mark has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1184
+#: aleksis/apps/alsijil/views.py:1110
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1195
+#: aleksis/apps/alsijil/views.py:1121
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1216
+#: aleksis/apps/alsijil/views.py:1143
 msgid "The excuse type has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1228
+#: aleksis/apps/alsijil/views.py:1155
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1239
+#: aleksis/apps/alsijil/views.py:1166
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1260
+#: aleksis/apps/alsijil/views.py:1188
 msgid "The group role has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1272
+#: aleksis/apps/alsijil/views.py:1200
 msgid "The group role has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1283
+#: aleksis/apps/alsijil/views.py:1211
 msgid "The group role has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1316 aleksis/apps/alsijil/views.py:1348
+#: aleksis/apps/alsijil/views.py:1245 aleksis/apps/alsijil/views.py:1277
 msgid "The group role has been assigned."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1367
+#: aleksis/apps/alsijil/views.py:1296
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1388
+#: aleksis/apps/alsijil/views.py:1317
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1401
+#: aleksis/apps/alsijil/views.py:1330
 msgid "The group role assignment has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1543
+#: aleksis/apps/alsijil/views.py:1473
 msgid "The instruction has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1555
+#: aleksis/apps/alsijil/views.py:1485
 msgid "The instruction has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1566
+#: aleksis/apps/alsijil/views.py:1496
 msgid "The instruction 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 fde32a7d86c67b9f2344ca1a4aa59435fcf86cfa..67c290094bd562122e09d95be608d0957056ea76 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: 2023-08-30 15:10+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"
@@ -111,10 +111,10 @@ msgstr "После"
 msgid "Before"
 msgstr "До"
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:352
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:374
 #: 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/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"
@@ -136,8 +136,8 @@ msgstr "Домашняя работа на следующий урок"
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr "Перенести данные на все другие уроки с тем же предметом на этой неделе"
 
-#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:259
-#: aleksis/apps/alsijil/forms.py:351
+#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:281
+#: aleksis/apps/alsijil/forms.py:373
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr "Группа"
@@ -152,80 +152,79 @@ msgstr "Преподаватель"
 msgid "You can't select a group and a teacher both."
 msgstr "Вы не можете одновременно выбрать группу и преподавателя."
 
-#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:353
-#: aleksis/apps/alsijil/models.py:504
+#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:294
+#: 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:197 aleksis/apps/alsijil/forms.py:375
+#: aleksis/apps/alsijil/models.py:511
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr "Дата начала"
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:354
-#: aleksis/apps/alsijil/models.py:508
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/forms.py:376
+#: aleksis/apps/alsijil/models.py:515
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr "Дата окончания"
 
-#: aleksis/apps/alsijil/forms.py:197
+#: aleksis/apps/alsijil/forms.py:199
 msgid "Start period"
 msgstr "Начало уроков"
 
-#: aleksis/apps/alsijil/forms.py:198
+#: aleksis/apps/alsijil/forms.py:200
 msgid "End period"
 msgstr "Окончание уроков"
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:117
+#: aleksis/apps/alsijil/forms.py:201 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:200 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:202 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:202 aleksis/apps/alsijil/models.py:76
-#: aleksis/apps/alsijil/models.py:258
-#: 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:204 aleksis/apps/alsijil/models.py:78
+#: aleksis/apps/alsijil/models.py:260
+#: 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:207
-#: 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:209
+#: 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:272
-#: 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:349
+#: aleksis/apps/alsijil/forms.py:371
 msgid "School term"
 msgstr "Учебный год"
 
-#: aleksis/apps/alsijil/forms.py:350
+#: aleksis/apps/alsijil/forms.py:372
 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/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
@@ -233,78 +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/models.py:553
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:24
-#, fuzzy
-#| msgid "Actions"
-msgid "Instructions"
-msgstr "Действия"
-
-#: aleksis/apps/alsijil/menus.py:82
-#: 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:93
-#: 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:104 aleksis/apps/alsijil/models.py:77
-#: 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:115 aleksis/apps/alsijil/models.py:263
-#: aleksis/apps/alsijil/models.py:456 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:126
-msgid "Manage group roles"
-msgstr "Управление ролями групп"
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr "Может просматривать классный журнал группы за неделю"
@@ -345,170 +272,202 @@ msgstr "Может назначать роль группы для этой гр
 msgid "Can register an absence for a person"
 msgstr "Может регистрировать отсутствия"
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/models.py:443
+#: aleksis/apps/alsijil/models.py:57 aleksis/apps/alsijil/models.py:445
 msgid "Short name"
 msgstr "Короткое имя"
 
-#: aleksis/apps/alsijil/models.py:56 aleksis/apps/alsijil/models.py:444
-#: aleksis/apps/alsijil/models.py:468 aleksis/apps/alsijil/models.py:529
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/models.py:472 aleksis/apps/alsijil/models.py:536
 #: 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:60 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:62 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr "Количество отсутствующих"
 
-#: aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:64
 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:238 aleksis/apps/alsijil/models.py:337
+#: aleksis/apps/alsijil/models.py:79
+#: 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:240 aleksis/apps/alsijil/models.py:339
 msgid "Year"
 msgstr "Год"
 
-#: aleksis/apps/alsijil/models.py:297
+#: aleksis/apps/alsijil/models.py:265 aleksis/apps/alsijil/models.py:458
+#: 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:299
 msgid "Personal note"
 msgstr "Личная заметка"
 
-#: aleksis/apps/alsijil/models.py:298
+#: aleksis/apps/alsijil/models.py:300
 #: 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:349
-#: 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:49
+#: aleksis/apps/alsijil/models.py:351
+#: 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:48
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr "Тема урока"
 
-#: aleksis/apps/alsijil/models.py:350
-#: 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:57
+#: aleksis/apps/alsijil/models.py:352
+#: 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:56
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr "Домашняя работа"
 
-#: aleksis/apps/alsijil/models.py:351
-#: 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:65
+#: aleksis/apps/alsijil/models.py:353
+#: 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:64
 msgid "Group note"
 msgstr "Групповая заметка"
 
-#: aleksis/apps/alsijil/models.py:358
+#: aleksis/apps/alsijil/models.py:360
 #: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:23
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:73
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:72
 msgid "Done instructions"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:409
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:411
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr "Учебный материал"
 
-#: aleksis/apps/alsijil/models.py:410
+#: aleksis/apps/alsijil/models.py:412
 #: 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:455
+#: aleksis/apps/alsijil/models.py:457
 msgid "Extra mark"
 msgstr "Дополнительная отметка"
 
-#: aleksis/apps/alsijil/models.py:469 aleksis/apps/alsijil/models.py:530
+#: aleksis/apps/alsijil/models.py:473 aleksis/apps/alsijil/models.py:537
 msgid "Icon"
 msgstr "Иконка"
 
-#: aleksis/apps/alsijil/models.py:470
+#: aleksis/apps/alsijil/models.py:474
 msgid "Colour"
 msgstr "Цвет"
 
-#: aleksis/apps/alsijil/models.py:476 aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/models.py:480 aleksis/apps/alsijil/models.py:498
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr "Роль группы"
 
-#: aleksis/apps/alsijil/models.py:477
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:481
+#: 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:481
+#: aleksis/apps/alsijil/models.py:485
 msgid "Can assign group role"
 msgstr "Может назначать роль группы"
 
-#: aleksis/apps/alsijil/models.py:497
+#: aleksis/apps/alsijil/models.py:504
 msgid "Assigned person"
 msgstr "Назначенное физлицо"
 
-#: aleksis/apps/alsijil/models.py:502 aleksis/apps/alsijil/models.py:540
+#: aleksis/apps/alsijil/models.py:509 aleksis/apps/alsijil/models.py:547
 #: 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/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:509
+#: aleksis/apps/alsijil/models.py:516
 msgid "Can be left empty if end date is not clear yet"
 msgstr "Если нет точной конечной даты, можно оставить незаполненным"
 
-#: aleksis/apps/alsijil/models.py:524
+#: aleksis/apps/alsijil/models.py:531
 msgid "Group role assignment"
 msgstr "Назначение роли группы"
 
-#: aleksis/apps/alsijil/models.py:525
+#: aleksis/apps/alsijil/models.py:532
 msgid "Group role assignments"
 msgstr "Назначение ролей групп"
 
-#: aleksis/apps/alsijil/models.py:533
+#: aleksis/apps/alsijil/models.py:540
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:542
+#: aleksis/apps/alsijil/models.py:549
 msgid "The instruction will be shown for the members and owners of the selected groups. Leave empty to show for all groups."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:552
+#: aleksis/apps/alsijil/models.py:559
 #, fuzzy
 #| msgid "Substitution"
 msgid "Instruction"
 msgstr "Замена"
 
-#: aleksis/apps/alsijil/models.py:565
+#: aleksis/apps/alsijil/models.py:560
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:23
+#, fuzzy
+#| msgid "Actions"
+msgid "Instructions"
+msgstr "Действия"
+
+#: aleksis/apps/alsijil/models.py:572
 msgid "Can view lesson overview"
 msgstr "Может просматривать обзор урока"
 
-#: aleksis/apps/alsijil/models.py:566
+#: aleksis/apps/alsijil/models.py:573
 msgid "Can view week overview"
 msgstr "Может просматривать недельный обзор"
 
-#: aleksis/apps/alsijil/models.py:567
+#: aleksis/apps/alsijil/models.py:574
 msgid "Can view full register"
 msgstr "Может просматривать весь журнал"
 
-#: aleksis/apps/alsijil/models.py:568
+#: aleksis/apps/alsijil/models.py:575
 msgid "Can register absence"
 msgstr "Может регистрировать отсутствие"
 
-#: aleksis/apps/alsijil/models.py:569
+#: aleksis/apps/alsijil/models.py:576
 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 "Блокировать добавление личных заметок к отмененным урокам"
@@ -602,24 +561,24 @@ 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
+#: 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/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 "Опоздание"
@@ -629,15 +588,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 "Регистрация отсутствия"
 
@@ -691,26 +687,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 "Недельный обзор"
 
@@ -725,8 +731,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 "Подготовить к печати"
 
@@ -743,39 +749,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"
@@ -835,52 +827,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"
@@ -889,32 +886,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"
@@ -965,6 +962,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 "Назначить"
@@ -1071,16 +1073,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 "(н)"
@@ -1104,8 +1106,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 "Сумма (п)"
@@ -1122,14 +1124,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"
@@ -1140,13 +1156,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"
@@ -1157,7 +1173,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"
@@ -1168,19 +1184,19 @@ msgstr ""
 "        Следующий урок %(subject)s\n"
 "      "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:30
 msgid "Instruction done"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:81
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:80
 msgid "Instruction done in this lesson"
 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 "Опоздания (мин)"
 
@@ -1308,27 +1324,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 "Детали"
 
@@ -1513,96 +1529,134 @@ msgstr "Неделя"
 msgid "Notes"
 msgstr "Заметки"
 
-#: aleksis/apps/alsijil/views.py:122
+#: aleksis/apps/alsijil/views.py:125
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr "Вы или выбрали неправильный урок, или сейчас урока нет."
 
-#: aleksis/apps/alsijil/views.py:155
+#: aleksis/apps/alsijil/views.py:158
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr "Вам нельзя создавать учебные материалы для уроков в будущем."
 
-#: aleksis/apps/alsijil/views.py:278
+#: aleksis/apps/alsijil/views.py:281
 msgid "The lesson documentation has been saved."
 msgstr "Учебный материал сохранён."
 
-#: aleksis/apps/alsijil/views.py:312
+#: aleksis/apps/alsijil/views.py:315
 msgid "The personal notes have been saved."
 msgstr "Личные заметки сохранены."
 
-#: aleksis/apps/alsijil/views.py:1129
+#: aleksis/apps/alsijil/views.py:682
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout for {}"
+msgstr "Подготовить к печати"
+
+#: aleksis/apps/alsijil/views.py:683
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout …"
+msgstr "Подготовить к печати"
+
+#: aleksis/apps/alsijil/views.py:684
+#, fuzzy
+#| msgid "The group role has been created."
+msgid "The printout has been generated successfully."
+msgstr "Роль группы создана."
+
+#: aleksis/apps/alsijil/views.py:685
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:688
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1054
 msgid "The absence has been saved."
 msgstr "Отсутствие сохранено."
 
-#: aleksis/apps/alsijil/views.py:1150
+#: aleksis/apps/alsijil/views.py:1075
 msgid "The personal note has been deleted."
 msgstr "Личная заметка удалена."
 
-#: aleksis/apps/alsijil/views.py:1172
+#: aleksis/apps/alsijil/views.py:1098
 msgid "The extra mark has been created."
 msgstr "Дополнительная отметка создана."
 
-#: aleksis/apps/alsijil/views.py:1184
+#: aleksis/apps/alsijil/views.py:1110
 msgid "The extra mark has been saved."
 msgstr "Дополнительная отметка сохранена."
 
-#: aleksis/apps/alsijil/views.py:1195
+#: aleksis/apps/alsijil/views.py:1121
 msgid "The extra mark has been deleted."
 msgstr "Дополнительная отметка удалена."
 
-#: aleksis/apps/alsijil/views.py:1216
+#: aleksis/apps/alsijil/views.py:1143
 msgid "The excuse type has been created."
 msgstr "Тип объяснительной создан."
 
-#: aleksis/apps/alsijil/views.py:1228
+#: aleksis/apps/alsijil/views.py:1155
 msgid "The excuse type has been saved."
 msgstr "Тип объяснительной сохранён."
 
-#: aleksis/apps/alsijil/views.py:1239
+#: aleksis/apps/alsijil/views.py:1166
 msgid "The excuse type has been deleted."
 msgstr "Тип объяснительной удалён."
 
-#: aleksis/apps/alsijil/views.py:1260
+#: aleksis/apps/alsijil/views.py:1188
 msgid "The group role has been created."
 msgstr "Роль группы создана."
 
-#: aleksis/apps/alsijil/views.py:1272
+#: aleksis/apps/alsijil/views.py:1200
 msgid "The group role has been saved."
 msgstr "Роль группы сохранена."
 
-#: aleksis/apps/alsijil/views.py:1283
+#: aleksis/apps/alsijil/views.py:1211
 msgid "The group role has been deleted."
 msgstr "Роль группы удалена."
 
-#: aleksis/apps/alsijil/views.py:1316 aleksis/apps/alsijil/views.py:1348
+#: aleksis/apps/alsijil/views.py:1245 aleksis/apps/alsijil/views.py:1277
 msgid "The group role has been assigned."
 msgstr "Роль группы назначена."
 
-#: aleksis/apps/alsijil/views.py:1367
+#: aleksis/apps/alsijil/views.py:1296
 msgid "The group role assignment has been saved."
 msgstr "Назначение роли группы сохранено."
 
-#: aleksis/apps/alsijil/views.py:1388
+#: aleksis/apps/alsijil/views.py:1317
 msgid "The group role assignment has been stopped."
 msgstr "Назначение роли группы остановлено."
 
-#: aleksis/apps/alsijil/views.py:1401
+#: aleksis/apps/alsijil/views.py:1330
 msgid "The group role assignment has been deleted."
 msgstr "Назначение роли группы удалено."
 
-#: aleksis/apps/alsijil/views.py:1543
+#: aleksis/apps/alsijil/views.py:1473
 #, fuzzy
 #| msgid "The group role has been created."
 msgid "The instruction has been created."
 msgstr "Роль группы создана."
 
-#: aleksis/apps/alsijil/views.py:1555
+#: aleksis/apps/alsijil/views.py:1485
 #, fuzzy
 #| msgid "The absence has been saved."
 msgid "The instruction has been saved."
 msgstr "Отсутствие сохранено."
 
-#: aleksis/apps/alsijil/views.py:1566
+#: aleksis/apps/alsijil/views.py:1496
 #, fuzzy
 #| msgid "The group role has been deleted."
 msgid "The instruction 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 d4a67263a00059707308ebe4a414a3d05f4ea660..b34b2a38b975e4b3922691790aa1cbe7d3d0e596 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-08-15 10:22+0200\n"
+"POT-Creation-Date: 2023-08-30 15:10+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"
@@ -110,10 +110,10 @@ msgstr ""
 msgid "Before"
 msgstr ""
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:352
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:374
 #: 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/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:101 aleksis/apps/alsijil/forms.py:259
-#: aleksis/apps/alsijil/forms.py:351
+#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:281
+#: aleksis/apps/alsijil/forms.py:373
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr ""
@@ -151,80 +151,79 @@ msgstr ""
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:353
-#: aleksis/apps/alsijil/models.py:504
+#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:294
+#: 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:197 aleksis/apps/alsijil/forms.py:375
+#: aleksis/apps/alsijil/models.py:511
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:354
-#: aleksis/apps/alsijil/models.py:508
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/forms.py:376
+#: aleksis/apps/alsijil/models.py:515
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:197
+#: aleksis/apps/alsijil/forms.py:199
 msgid "Start period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:198
+#: aleksis/apps/alsijil/forms.py:200
 msgid "End period"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:117
+#: aleksis/apps/alsijil/forms.py:201 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:200 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:202 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:202 aleksis/apps/alsijil/models.py:76
-#: aleksis/apps/alsijil/models.py:258
-#: 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:204 aleksis/apps/alsijil/models.py:78
+#: aleksis/apps/alsijil/models.py:260
+#: 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:207
-#: 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:209
+#: 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:272
-#: 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:349
+#: aleksis/apps/alsijil/forms.py:371
 msgid "School term"
 msgstr ""
 
-#: aleksis/apps/alsijil/forms.py:350
+#: aleksis/apps/alsijil/forms.py:372
 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/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,76 +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/models.py:553
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:24
-msgid "Instructions"
-msgstr ""
-
-#: aleksis/apps/alsijil/menus.py:82
-#: 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:93
-#: 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:104 aleksis/apps/alsijil/models.py:77
-#: 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:115 aleksis/apps/alsijil/models.py:263
-#: aleksis/apps/alsijil/models.py:456 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:126
-msgid "Manage group roles"
-msgstr ""
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr ""
@@ -342,168 +271,198 @@ msgstr ""
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/models.py:443
+#: aleksis/apps/alsijil/models.py:57 aleksis/apps/alsijil/models.py:445
 msgid "Short name"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:56 aleksis/apps/alsijil/models.py:444
-#: aleksis/apps/alsijil/models.py:468 aleksis/apps/alsijil/models.py:529
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/models.py:472 aleksis/apps/alsijil/models.py:536
 #: 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:60 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:62 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:64
 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:238 aleksis/apps/alsijil/models.py:337
+#: aleksis/apps/alsijil/models.py:79
+#: 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:240 aleksis/apps/alsijil/models.py:339
 msgid "Year"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:297
+#: aleksis/apps/alsijil/models.py:265 aleksis/apps/alsijil/models.py:458
+#: 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:299
 msgid "Personal note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:298
+#: aleksis/apps/alsijil/models.py:300
 #: 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:349
-#: 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:49
+#: aleksis/apps/alsijil/models.py:351
+#: 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:48
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:350
-#: 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:57
+#: aleksis/apps/alsijil/models.py:352
+#: 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:56
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:351
-#: 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:65
+#: aleksis/apps/alsijil/models.py:353
+#: 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:64
 msgid "Group note"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:358
+#: aleksis/apps/alsijil/models.py:360
 #: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:23
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:73
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:72
 msgid "Done instructions"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:409
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:411
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:410
+#: aleksis/apps/alsijil/models.py:412
 #: 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:455
+#: aleksis/apps/alsijil/models.py:457
 msgid "Extra mark"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:469 aleksis/apps/alsijil/models.py:530
+#: aleksis/apps/alsijil/models.py:473 aleksis/apps/alsijil/models.py:537
 msgid "Icon"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:470
+#: aleksis/apps/alsijil/models.py:474
 msgid "Colour"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:476 aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/models.py:480 aleksis/apps/alsijil/models.py:498
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:477
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:481
+#: 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:481
+#: aleksis/apps/alsijil/models.py:485
 msgid "Can assign group role"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:497
+#: aleksis/apps/alsijil/models.py:504
 msgid "Assigned person"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:502 aleksis/apps/alsijil/models.py:540
+#: aleksis/apps/alsijil/models.py:509 aleksis/apps/alsijil/models.py:547
 #: 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/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:509
+#: aleksis/apps/alsijil/models.py:516
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:524
+#: aleksis/apps/alsijil/models.py:531
 msgid "Group role assignment"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:525
+#: aleksis/apps/alsijil/models.py:532
 msgid "Group role assignments"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:533
+#: aleksis/apps/alsijil/models.py:540
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:542
+#: aleksis/apps/alsijil/models.py:549
 msgid "The instruction will be shown for the members and owners of the selected groups. Leave empty to show for all groups."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:552
+#: aleksis/apps/alsijil/models.py:559
 msgid "Instruction"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:565
+#: aleksis/apps/alsijil/models.py:560
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:23
+msgid "Instructions"
+msgstr ""
+
+#: aleksis/apps/alsijil/models.py:572
 msgid "Can view lesson overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:566
+#: aleksis/apps/alsijil/models.py:573
 msgid "Can view week overview"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:567
+#: aleksis/apps/alsijil/models.py:574
 msgid "Can view full register"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:568
+#: aleksis/apps/alsijil/models.py:575
 msgid "Can register absence"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:569
+#: aleksis/apps/alsijil/models.py:576
 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 ""
@@ -597,24 +556,24 @@ 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
+#: 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/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 ""
@@ -625,14 +584,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 ""
 
@@ -676,26 +667,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 ""
 
@@ -710,8 +711,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 ""
 
@@ -728,39 +729,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"
@@ -814,84 +801,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"
@@ -935,6 +927,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 ""
@@ -1031,16 +1028,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 ""
@@ -1064,8 +1061,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 ""
@@ -1082,14 +1079,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"
@@ -1097,13 +1108,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"
@@ -1111,7 +1122,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"
@@ -1119,19 +1130,19 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:30
 msgid "Instruction done"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:81
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:80
 msgid "Instruction done in this lesson"
 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 ""
 
@@ -1247,27 +1258,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 ""
 
@@ -1438,90 +1449,110 @@ msgstr ""
 msgid "Notes"
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:122
+#: aleksis/apps/alsijil/views.py:125
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:155
+#: aleksis/apps/alsijil/views.py:158
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:278
+#: aleksis/apps/alsijil/views.py:281
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:312
+#: aleksis/apps/alsijil/views.py:315
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1129
+#: aleksis/apps/alsijil/views.py:682
+msgid "Generate full register printout for {}"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:683
+msgid "Generate full register printout …"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:684
+msgid "The printout has been generated successfully."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:685
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:688
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1054
 msgid "The absence has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1150
+#: aleksis/apps/alsijil/views.py:1075
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1172
+#: aleksis/apps/alsijil/views.py:1098
 msgid "The extra mark has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1184
+#: aleksis/apps/alsijil/views.py:1110
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1195
+#: aleksis/apps/alsijil/views.py:1121
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1216
+#: aleksis/apps/alsijil/views.py:1143
 msgid "The excuse type has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1228
+#: aleksis/apps/alsijil/views.py:1155
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1239
+#: aleksis/apps/alsijil/views.py:1166
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1260
+#: aleksis/apps/alsijil/views.py:1188
 msgid "The group role has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1272
+#: aleksis/apps/alsijil/views.py:1200
 msgid "The group role has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1283
+#: aleksis/apps/alsijil/views.py:1211
 msgid "The group role has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1316 aleksis/apps/alsijil/views.py:1348
+#: aleksis/apps/alsijil/views.py:1245 aleksis/apps/alsijil/views.py:1277
 msgid "The group role has been assigned."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1367
+#: aleksis/apps/alsijil/views.py:1296
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1388
+#: aleksis/apps/alsijil/views.py:1317
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1401
+#: aleksis/apps/alsijil/views.py:1330
 msgid "The group role assignment has been deleted."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1543
+#: aleksis/apps/alsijil/views.py:1473
 msgid "The instruction has been created."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1555
+#: aleksis/apps/alsijil/views.py:1485
 msgid "The instruction has been saved."
 msgstr ""
 
-#: aleksis/apps/alsijil/views.py:1566
+#: aleksis/apps/alsijil/views.py:1496
 msgid "The instruction 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 ff5ccddf60a3017b9db6076adc9a0c2a9cf16dc4..9ad37990e28932f6c6ed34daf3ad4584e8a5be7a 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: 2023-08-30 15:10+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"
@@ -111,10 +111,10 @@ msgstr "Після"
 msgid "Before"
 msgstr "Перед"
 
-#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:352
+#: aleksis/apps/alsijil/filters.py:14 aleksis/apps/alsijil/forms.py:374
 #: 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/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"
@@ -136,8 +136,8 @@ msgstr "Домашня робота на наступний урок"
 msgid "Carry over data to all other lessons with the same subject in this week"
 msgstr "Перенести дані на усі інші уроки з таким самим предметом на цьому тижні"
 
-#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:259
-#: aleksis/apps/alsijil/forms.py:351
+#: aleksis/apps/alsijil/forms.py:101 aleksis/apps/alsijil/forms.py:281
+#: aleksis/apps/alsijil/forms.py:373
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:219
 msgid "Group"
 msgstr "Група"
@@ -152,80 +152,79 @@ msgstr "Викладач"
 msgid "You can't select a group and a teacher both."
 msgstr "Ви не можете обрати одночасно групу та викладача."
 
-#: aleksis/apps/alsijil/forms.py:195 aleksis/apps/alsijil/forms.py:353
-#: aleksis/apps/alsijil/models.py:504
+#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:294
+#: 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:197 aleksis/apps/alsijil/forms.py:375
+#: aleksis/apps/alsijil/models.py:511
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr "Дата початку"
 
-#: aleksis/apps/alsijil/forms.py:196 aleksis/apps/alsijil/forms.py:354
-#: aleksis/apps/alsijil/models.py:508
+#: aleksis/apps/alsijil/forms.py:198 aleksis/apps/alsijil/forms.py:376
+#: aleksis/apps/alsijil/models.py:515
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr "Дата закінчення"
 
-#: aleksis/apps/alsijil/forms.py:197
+#: aleksis/apps/alsijil/forms.py:199
 msgid "Start period"
 msgstr "Початок уроків"
 
-#: aleksis/apps/alsijil/forms.py:198
+#: aleksis/apps/alsijil/forms.py:200
 msgid "End period"
 msgstr "Закінчення уроків"
 
-#: aleksis/apps/alsijil/forms.py:199 aleksis/apps/alsijil/tables.py:117
+#: aleksis/apps/alsijil/forms.py:201 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:200 aleksis/apps/alsijil/tables.py:146
+#: aleksis/apps/alsijil/forms.py:202 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:202 aleksis/apps/alsijil/models.py:76
-#: aleksis/apps/alsijil/models.py:258
-#: 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:204 aleksis/apps/alsijil/models.py:78
+#: aleksis/apps/alsijil/models.py:260
+#: 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:207
-#: 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:209
+#: 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:272
-#: 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:349
+#: aleksis/apps/alsijil/forms.py:371
 msgid "School term"
 msgstr "Навчальний рік"
 
-#: aleksis/apps/alsijil/forms.py:350
+#: aleksis/apps/alsijil/forms.py:372
 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/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
@@ -233,78 +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/models.py:553
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
-#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:24
-#, fuzzy
-#| msgid "Actions"
-msgid "Instructions"
-msgstr "Дії"
-
-#: aleksis/apps/alsijil/menus.py:82
-#: 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:93
-#: 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:104 aleksis/apps/alsijil/models.py:77
-#: 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:115 aleksis/apps/alsijil/models.py:263
-#: aleksis/apps/alsijil/models.py:456 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:126
-msgid "Manage group roles"
-msgstr "Керування ролями групи"
-
 #: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can view week overview of group class register"
 msgstr "Може бачити класний журнал групи за тиждень"
@@ -345,170 +272,202 @@ msgstr "Може призначати роль групи для цієї гру
 msgid "Can register an absence for a person"
 msgstr "Може реєструвати відсутність особи"
 
-#: aleksis/apps/alsijil/models.py:55 aleksis/apps/alsijil/models.py:443
+#: aleksis/apps/alsijil/models.py:57 aleksis/apps/alsijil/models.py:445
 msgid "Short name"
 msgstr "Коротке ім'я"
 
-#: aleksis/apps/alsijil/models.py:56 aleksis/apps/alsijil/models.py:444
-#: aleksis/apps/alsijil/models.py:468 aleksis/apps/alsijil/models.py:529
+#: aleksis/apps/alsijil/models.py:58 aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/models.py:472 aleksis/apps/alsijil/models.py:536
 #: 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:60 aleksis/apps/alsijil/tables.py:41
+#: aleksis/apps/alsijil/models.py:62 aleksis/apps/alsijil/tables.py:41
 msgid "Count as absent"
 msgstr "Кількість відсутніх"
 
-#: aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:64
 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:238 aleksis/apps/alsijil/models.py:337
+#: aleksis/apps/alsijil/models.py:79
+#: 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:240 aleksis/apps/alsijil/models.py:339
 msgid "Year"
 msgstr "Рік"
 
-#: aleksis/apps/alsijil/models.py:297
+#: aleksis/apps/alsijil/models.py:265 aleksis/apps/alsijil/models.py:458
+#: 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:299
 msgid "Personal note"
 msgstr "Особиста нотатка"
 
-#: aleksis/apps/alsijil/models.py:298
+#: aleksis/apps/alsijil/models.py:300
 #: 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:349
-#: 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:49
+#: aleksis/apps/alsijil/models.py:351
+#: 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:48
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:421
 msgid "Lesson topic"
 msgstr "Тема уроку"
 
-#: aleksis/apps/alsijil/models.py:350
-#: 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:57
+#: aleksis/apps/alsijil/models.py:352
+#: 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:56
 #: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:422
 msgid "Homework"
 msgstr "Домашня робота"
 
-#: aleksis/apps/alsijil/models.py:351
-#: 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:65
+#: aleksis/apps/alsijil/models.py:353
+#: 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:64
 msgid "Group note"
 msgstr "Групова нотатка"
 
-#: aleksis/apps/alsijil/models.py:358
+#: aleksis/apps/alsijil/models.py:360
 #: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:23
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:73
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:72
 msgid "Done instructions"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:409
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:17
+#: aleksis/apps/alsijil/models.py:411
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:16
 msgid "Lesson documentation"
 msgstr "Учбовий матеріал"
 
-#: aleksis/apps/alsijil/models.py:410
+#: aleksis/apps/alsijil/models.py:412
 #: 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:455
+#: aleksis/apps/alsijil/models.py:457
 msgid "Extra mark"
 msgstr "Додаткова відмітка"
 
-#: aleksis/apps/alsijil/models.py:469 aleksis/apps/alsijil/models.py:530
+#: aleksis/apps/alsijil/models.py:473 aleksis/apps/alsijil/models.py:537
 msgid "Icon"
 msgstr "Піктограма"
 
-#: aleksis/apps/alsijil/models.py:470
+#: aleksis/apps/alsijil/models.py:474
 msgid "Colour"
 msgstr "Колір"
 
-#: aleksis/apps/alsijil/models.py:476 aleksis/apps/alsijil/models.py:491
+#: aleksis/apps/alsijil/models.py:480 aleksis/apps/alsijil/models.py:498
 #: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr "Роль групи"
 
-#: aleksis/apps/alsijil/models.py:477
-#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:34
+#: aleksis/apps/alsijil/models.py:481
+#: 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:481
+#: aleksis/apps/alsijil/models.py:485
 msgid "Can assign group role"
 msgstr "Може призначати роль групи"
 
-#: aleksis/apps/alsijil/models.py:497
+#: aleksis/apps/alsijil/models.py:504
 msgid "Assigned person"
 msgstr "Призначена особа"
 
-#: aleksis/apps/alsijil/models.py:502 aleksis/apps/alsijil/models.py:540
+#: aleksis/apps/alsijil/models.py:509 aleksis/apps/alsijil/models.py:547
 #: 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/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:509
+#: aleksis/apps/alsijil/models.py:516
 msgid "Can be left empty if end date is not clear yet"
 msgstr "Якщо немає точної кінцевої дати, можна залишити порожнім"
 
-#: aleksis/apps/alsijil/models.py:524
+#: aleksis/apps/alsijil/models.py:531
 msgid "Group role assignment"
 msgstr "Призначення ролі групи"
 
-#: aleksis/apps/alsijil/models.py:525
+#: aleksis/apps/alsijil/models.py:532
 msgid "Group role assignments"
 msgstr "Призначення ролі групи"
 
-#: aleksis/apps/alsijil/models.py:533
+#: aleksis/apps/alsijil/models.py:540
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:542
+#: aleksis/apps/alsijil/models.py:549
 msgid "The instruction will be shown for the members and owners of the selected groups. Leave empty to show for all groups."
 msgstr ""
 
-#: aleksis/apps/alsijil/models.py:552
+#: aleksis/apps/alsijil/models.py:559
 #, fuzzy
 #| msgid "Substitution"
 msgid "Instruction"
 msgstr "Заміна"
 
-#: aleksis/apps/alsijil/models.py:565
+#: aleksis/apps/alsijil/models.py:560
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:7
+#: aleksis/apps/alsijil/templates/alsijil/instruction/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:23
+#, fuzzy
+#| msgid "Actions"
+msgid "Instructions"
+msgstr "Дії"
+
+#: aleksis/apps/alsijil/models.py:572
 msgid "Can view lesson overview"
 msgstr "Може бачити огляд уроку"
 
-#: aleksis/apps/alsijil/models.py:566
+#: aleksis/apps/alsijil/models.py:573
 msgid "Can view week overview"
 msgstr "Може бачити огляд тижня"
 
-#: aleksis/apps/alsijil/models.py:567
+#: aleksis/apps/alsijil/models.py:574
 msgid "Can view full register"
 msgstr "Може бачити весь журнал"
 
-#: aleksis/apps/alsijil/models.py:568
+#: aleksis/apps/alsijil/models.py:575
 msgid "Can register absence"
 msgstr "Може реєструвати пропуск"
 
-#: aleksis/apps/alsijil/models.py:569
+#: aleksis/apps/alsijil/models.py:576
 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 "Блокувати додавання особистих нотаток до скасованих уроків"
@@ -602,24 +561,24 @@ 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
+#: 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/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 "Запізнення"
@@ -629,15 +588,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 "Реєстрація відсутності"
 
@@ -691,26 +687,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 "Тижневий огляд"
 
@@ -725,8 +731,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 "Підготувати для друку"
 
@@ -743,39 +749,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"
@@ -835,52 +827,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"
@@ -889,32 +886,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"
@@ -965,6 +962,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 "Призначити"
@@ -1071,16 +1073,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 "(н)"
@@ -1104,8 +1106,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 "Сума (п)"
@@ -1122,14 +1124,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"
@@ -1140,13 +1156,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"
@@ -1157,7 +1173,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"
@@ -1168,19 +1184,19 @@ msgstr ""
 "        Наступний урок %(subject)s\n"
 "      "
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:30
 msgid "Instruction done"
 msgstr ""
 
-#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:81
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html:80
 msgid "Instruction done in this lesson"
 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 "Запізнення (хв)"
 
@@ -1308,27 +1324,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 "Деталі"
 
@@ -1513,96 +1529,134 @@ msgstr "Тиждень"
 msgid "Notes"
 msgstr "Нотатки"
 
-#: aleksis/apps/alsijil/views.py:122
+#: aleksis/apps/alsijil/views.py:125
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr "Або Ви обрали неправильний урок, або зараз уроку немає."
 
-#: aleksis/apps/alsijil/views.py:155
+#: aleksis/apps/alsijil/views.py:158
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr "Вам не дозволено створювати учбові матеріали для уроку у майбутньому."
 
-#: aleksis/apps/alsijil/views.py:278
+#: aleksis/apps/alsijil/views.py:281
 msgid "The lesson documentation has been saved."
 msgstr "Учбовий матеріал збережений."
 
-#: aleksis/apps/alsijil/views.py:312
+#: aleksis/apps/alsijil/views.py:315
 msgid "The personal notes have been saved."
 msgstr "Особисті нотатки збережені."
 
-#: aleksis/apps/alsijil/views.py:1129
+#: aleksis/apps/alsijil/views.py:682
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout for {}"
+msgstr "Підготувати для друку"
+
+#: aleksis/apps/alsijil/views.py:683
+#, fuzzy
+#| msgid "Generate printout"
+msgid "Generate full register printout …"
+msgstr "Підготувати для друку"
+
+#: aleksis/apps/alsijil/views.py:684
+#, fuzzy
+#| msgid "The group role has been created."
+msgid "The printout has been generated successfully."
+msgstr "Роль групи створена."
+
+#: aleksis/apps/alsijil/views.py:685
+msgid "There was a problem while generating the printout."
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:688
+msgid "Download PDF"
+msgstr ""
+
+#: aleksis/apps/alsijil/views.py:1054
 msgid "The absence has been saved."
 msgstr "Пропуск збережений."
 
-#: aleksis/apps/alsijil/views.py:1150
+#: aleksis/apps/alsijil/views.py:1075
 msgid "The personal note has been deleted."
 msgstr "Особиста нотатка видалена."
 
-#: aleksis/apps/alsijil/views.py:1172
+#: aleksis/apps/alsijil/views.py:1098
 msgid "The extra mark has been created."
 msgstr "Додаткова позначка сторена."
 
-#: aleksis/apps/alsijil/views.py:1184
+#: aleksis/apps/alsijil/views.py:1110
 msgid "The extra mark has been saved."
 msgstr "Додаткова позначка збережена."
 
-#: aleksis/apps/alsijil/views.py:1195
+#: aleksis/apps/alsijil/views.py:1121
 msgid "The extra mark has been deleted."
 msgstr "Додаткова позначка видалена."
 
-#: aleksis/apps/alsijil/views.py:1216
+#: aleksis/apps/alsijil/views.py:1143
 msgid "The excuse type has been created."
 msgstr "Тип пояснення створений."
 
-#: aleksis/apps/alsijil/views.py:1228
+#: aleksis/apps/alsijil/views.py:1155
 msgid "The excuse type has been saved."
 msgstr "Тип пояснення збережений."
 
-#: aleksis/apps/alsijil/views.py:1239
+#: aleksis/apps/alsijil/views.py:1166
 msgid "The excuse type has been deleted."
 msgstr "Тип пояснення видалений."
 
-#: aleksis/apps/alsijil/views.py:1260
+#: aleksis/apps/alsijil/views.py:1188
 msgid "The group role has been created."
 msgstr "Роль групи створена."
 
-#: aleksis/apps/alsijil/views.py:1272
+#: aleksis/apps/alsijil/views.py:1200
 msgid "The group role has been saved."
 msgstr "Роль групи збережена."
 
-#: aleksis/apps/alsijil/views.py:1283
+#: aleksis/apps/alsijil/views.py:1211
 msgid "The group role has been deleted."
 msgstr "Роль групи видалена."
 
-#: aleksis/apps/alsijil/views.py:1316 aleksis/apps/alsijil/views.py:1348
+#: aleksis/apps/alsijil/views.py:1245 aleksis/apps/alsijil/views.py:1277
 msgid "The group role has been assigned."
 msgstr "Роль групи призначена."
 
-#: aleksis/apps/alsijil/views.py:1367
+#: aleksis/apps/alsijil/views.py:1296
 msgid "The group role assignment has been saved."
 msgstr "Призначення ролі групи збережене."
 
-#: aleksis/apps/alsijil/views.py:1388
+#: aleksis/apps/alsijil/views.py:1317
 msgid "The group role assignment has been stopped."
 msgstr "Призначення ролі групи зупинене."
 
-#: aleksis/apps/alsijil/views.py:1401
+#: aleksis/apps/alsijil/views.py:1330
 msgid "The group role assignment has been deleted."
 msgstr "Призначення ролі групи видалене."
 
-#: aleksis/apps/alsijil/views.py:1543
+#: aleksis/apps/alsijil/views.py:1473
 #, fuzzy
 #| msgid "The group role has been created."
 msgid "The instruction has been created."
 msgstr "Роль групи створена."
 
-#: aleksis/apps/alsijil/views.py:1555
+#: aleksis/apps/alsijil/views.py:1485
 #, fuzzy
 #| msgid "The absence has been saved."
 msgid "The instruction has been saved."
 msgstr "Пропуск збережений."
 
-#: aleksis/apps/alsijil/views.py:1566
+#: aleksis/apps/alsijil/views.py:1496
 #, fuzzy
 #| msgid "The group role has been deleted."
 msgid "The instruction has been deleted."
 msgstr "Роль групи видалена."
+
+#~ msgid "Current lesson"
+#~ msgstr "Поточний урок"
+
+#~ msgid "Current week"
+#~ msgstr "Поточний тиждень"
+
+#~ msgid "My overview"
+#~ msgstr "Мій огляд"
+
+#~ msgid "Manage group roles"
+#~ msgstr "Керування ролями групи"