diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index cc2bf300d75413c22a07390343080b80ba899b6e..5aeb0368516a20fd84948c7d6597a89c02226ea3 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -6,6 +6,20 @@ All notable changes to this project will be documented in this file.
 The format is based on `Keep a Changelog`_,
 and this project adheres to `Semantic Versioning`_.
 
+`2.0rc1`_ - 2021-06-23
+----------------------
+
+Changed
+~~~~~~~
+* Show 'Lesson documentations' tab on person overview only if the person is a teacher.
+* Use semantically correct html elements for headings and alerts.
+
+Fixed
+~~~~~
+
+* Preference section verbose names were displayed in server language and not
+  user language (fixed by using gettext_lazy).
+
 `2.0b0`_ - 2021-05-21
 ---------------------
 
@@ -126,3 +140,4 @@ Fixed
 .. _1.0a3: https://edugit.org/AlekSIS/Official/AlekSIS-App-Alsijil/-/tags/1.0a3
 .. _2.0a1: https://edugit.org/AlekSIS/Official/AlekSIS-App-Alsijil/-/tags/2.0a1
 .. _2.0b0: https://edugit.org/AlekSIS/Official/AlekSIS-App-Alsijil/-/tags/2.0b0
+.. _2.0rc1: https://edugit.org/AlekSIS/Official/AlekSIS-App-Alsijil/-/tags/2.0rc1
diff --git a/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/ar/LC_MESSAGES/django.po
index b5ad8e4119ee7698a5ea81258b708ecd4266a2fd..331729ebc465ea158ae6fda64df94c1eb20b3950 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: 2021-03-21 14:38+0100\n"
+"POT-Creation-Date: 2021-06-08 16:49+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,465 +18,559 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
 
-#: actions.py:30
+#: aleksis/apps/alsijil/actions.py:17
+msgid "Mark as excused"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:24
+msgid "Mark as unexcused"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:31
+#, python-brace-format
+msgid "Mark as {excuse_type.name}"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:41 aleksis/apps/alsijil/tables.py:29
+#: aleksis/apps/alsijil/tables.py:49 aleksis/apps/alsijil/tables.py:74
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:29
+msgid "Delete"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:61
 msgid "{} asks you to check some class register entries."
 msgstr ""
 
-#: actions.py:48
+#: aleksis/apps/alsijil/actions.py:79
 #, python-brace-format
 msgid "We have successfully sent notifications to {count_teachers} persons for {count_items} lessons."
 msgstr ""
 
-#: actions.py:54
+#: aleksis/apps/alsijil/actions.py:85
 msgid "Ask teacher to check data"
 msgstr ""
 
-#: data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:12
 msgid "Delete object"
 msgstr ""
 
-#: data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:22
 msgid "Set current groups"
 msgstr ""
 
-#: data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:33
 msgid "Reset personal note to defaults"
 msgstr ""
 
-#: data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:45
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr ""
 
-#: data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:46
 msgid "The personal note is related to a cancelled lesson."
 msgstr ""
 
-#: data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:73
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr ""
 
-#: data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:74
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr ""
 
-#: data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:99
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr ""
 
-#: data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:100
 msgid "The lesson documentation is on holidays."
 msgstr ""
 
-#: data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:133
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr ""
 
-#: data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:134
 msgid "The personal note is on holidays."
 msgstr ""
 
-#: data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:162
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr ""
 
-#: data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:163
 msgid "The personal note is marked as excused, but not as absent."
 msgstr ""
 
-#: forms.py:41
+#: aleksis/apps/alsijil/filters.py:10
+msgid "After"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:11
+msgid "Before"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:12 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/tables.py:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:106
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:169
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:200
+msgid "Subject"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:16
+msgid "Tardiness is lower than"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:17
+msgid "Tardiness is bigger than"
+msgstr ""
+
+#: aleksis/apps/alsijil/forms.py:47
 msgid "Homework for the next lesson"
 msgstr ""
 
-#: forms.py:66 forms.py:190 forms.py:272
-#: templates/alsijil/print/full_register.html:199
+#: aleksis/apps/alsijil/forms.py:72 aleksis/apps/alsijil/forms.py:208
+#: aleksis/apps/alsijil/forms.py:290
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:199
 msgid "Group"
 msgstr ""
 
-#: forms.py:69 templates/alsijil/print/full_register.html:170
-#: templates/alsijil/print/full_register.html:201
+#: aleksis/apps/alsijil/forms.py:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:170
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:201
 msgid "Teacher"
 msgstr ""
 
-#: forms.py:84
+#: aleksis/apps/alsijil/forms.py:90
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: forms.py:138 forms.py:274 models.py:397
-#: templates/alsijil/group_role/assigned_list.html:64
+#: aleksis/apps/alsijil/forms.py:144 aleksis/apps/alsijil/forms.py:292
+#: aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: forms.py:139 forms.py:275 models.py:401
-#: templates/alsijil/group_role/assigned_list.html:65
+#: aleksis/apps/alsijil/forms.py:145 aleksis/apps/alsijil/forms.py:293
+#: aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: forms.py:140
+#: aleksis/apps/alsijil/forms.py:146
 msgid "Start period"
 msgstr ""
 
-#: forms.py:141
+#: aleksis/apps/alsijil/forms.py:147
 msgid "End period"
 msgstr ""
 
-#: forms.py:142 templates/alsijil/absences/register_confirm.html:52
-#: templates/alsijil/class_register/lesson.html:261
-#: templates/alsijil/class_register/person.html:234
-#: templates/alsijil/class_register/week_view.html:342
-#: templates/alsijil/print/full_register.html:75
-#: templates/alsijil/print/full_register.html:312
+#: aleksis/apps/alsijil/forms.py:148
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:52
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:263
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:339
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:312
 msgid "Absent"
 msgstr ""
 
-#: forms.py:143 templates/alsijil/absences/register_confirm.html:56
-#: templates/alsijil/class_register/lesson.html:263
-#: templates/alsijil/class_register/person.html:113
-#: templates/alsijil/class_register/person.html:242
-#: templates/alsijil/partials/mark_as_buttons.html:2
-#: templates/alsijil/partials/mark_as_buttons.html:3
-#: templates/alsijil/partials/persons_with_stats.html:74
-#: templates/alsijil/print/full_register.html:84
-#: templates/alsijil/print/full_register.html:275
+#: aleksis/apps/alsijil/forms.py:149 aleksis/apps/alsijil/tables.py:137
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:74
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:275
 msgid "Excused"
 msgstr ""
 
-#: forms.py:145 models.py:62 models.py:199
-#: templates/alsijil/class_register/lesson.html:264
-#: templates/alsijil/class_register/lesson.html:305
+#: aleksis/apps/alsijil/forms.py:151 aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:232
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:266
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:307
 msgid "Excuse type"
 msgstr ""
 
-#: forms.py:150 templates/alsijil/class_register/lesson.html:266
-#: templates/alsijil/class_register/lesson.html:326
-#: templates/alsijil/print/full_register.html:314
+#: aleksis/apps/alsijil/forms.py:156
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:268
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:328
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:314
 msgid "Remarks"
 msgstr ""
 
-#: forms.py:200 templates/alsijil/absences/register.html:9
-#: templates/alsijil/class_register/lesson.html:260
-#: templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/forms.py:218
+#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:262
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
 msgid "Person"
 msgstr ""
 
-#: forms.py:270
+#: aleksis/apps/alsijil/forms.py:288
 msgid "School term"
 msgstr ""
 
-#: forms.py:271
+#: aleksis/apps/alsijil/forms.py:289
 msgid "Has lesson documentation"
 msgstr ""
 
-#: forms.py:273 templates/alsijil/class_register/week_view.html:106
-#: templates/alsijil/class_register/week_view.html:202
-#: templates/alsijil/print/full_register.html:169
-#: templates/alsijil/print/full_register.html:200
-msgid "Subject"
+#: aleksis/apps/alsijil/managers.py:81 aleksis/apps/alsijil/tables.py:121
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:151
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:214
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:268
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:16
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:335
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:415
+#: aleksis/apps/alsijil/util/alsijil_helpers.py:314
+msgid "Event"
 msgstr ""
 
-#: menus.py:6 preferences.py:9 templates/alsijil/print/full_register.html:16
+#: 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 ""
 
-#: menus.py:16
+#: aleksis/apps/alsijil/menus.py:16
 msgid "Current lesson"
 msgstr ""
 
-#: menus.py:27
+#: aleksis/apps/alsijil/menus.py:27
 msgid "Current week"
 msgstr ""
 
-#: menus.py:38 templates/alsijil/class_register/groups.html:5
-#: templates/alsijil/class_register/groups.html:8
+#: 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 ""
 
-#: menus.py:49
+#: aleksis/apps/alsijil/menus.py:49
 msgid "My overview"
 msgstr ""
 
-#: menus.py:60 templates/alsijil/class_register/persons.html:5
-#: templates/alsijil/class_register/persons.html:9
+#: 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 ""
 
-#: menus.py:71 templates/alsijil/group_role/assign.html:11
-#: templates/alsijil/group_role/assign.html:18
+#: aleksis/apps/alsijil/menus.py:71
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
 msgid "Assign group role"
 msgstr ""
 
-#: menus.py:82 templates/alsijil/class_register/all_objects.html:5
-#: templates/alsijil/class_register/all_objects.html:8
+#: aleksis/apps/alsijil/menus.py:82
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
 msgid "All lessons"
 msgstr ""
 
-#: menus.py:93 models.py:63 templates/alsijil/excuse_type/list.html:8
-#: templates/alsijil/excuse_type/list.html:9
-#: templates/alsijil/partials/legend.html:26
+#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:63
+#: 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:26
 msgid "Excuse types"
 msgstr ""
 
-#: menus.py:104 models.py:204 models.py:361
-#: templates/alsijil/class_register/lesson.html:265
-#: templates/alsijil/extra_mark/list.html:8
-#: templates/alsijil/extra_mark/list.html:9
-#: templates/alsijil/partials/legend.html:41
-#: templates/alsijil/partials/persons_with_stats.html:19
-#: templates/alsijil/print/full_register.html:293
+#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:237
+#: aleksis/apps/alsijil/models.py:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:267
+#: 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:41
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:293
 msgid "Extra marks"
 msgstr ""
 
-#: menus.py:115
+#: aleksis/apps/alsijil/menus.py:115
 msgid "Manage group roles"
 msgstr ""
 
-#: model_extensions.py:181
+#: aleksis/apps/alsijil/model_extensions.py:180
 msgid "Can view week overview of group class register"
 msgstr ""
 
-#: model_extensions.py:184
+#: aleksis/apps/alsijil/model_extensions.py:183
 msgid "Can view lesson overview of group class register"
 msgstr ""
 
-#: model_extensions.py:186
+#: aleksis/apps/alsijil/model_extensions.py:185
 msgid "Can view all personal notes of a group"
 msgstr ""
 
-#: model_extensions.py:187
+#: aleksis/apps/alsijil/model_extensions.py:186
 msgid "Can edit all personal notes of a group"
 msgstr ""
 
-#: model_extensions.py:189
+#: aleksis/apps/alsijil/model_extensions.py:188
 msgid "Can view all lesson documentation of a group"
 msgstr ""
 
-#: model_extensions.py:192
+#: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can edit all lesson documentation of a group"
 msgstr ""
 
-#: model_extensions.py:194
+#: aleksis/apps/alsijil/model_extensions.py:193
 msgid "Can view full register of a group"
 msgstr ""
 
-#: model_extensions.py:196
+#: aleksis/apps/alsijil/model_extensions.py:195
 msgid "Can register an absence for all members of a group"
 msgstr ""
 
-#: model_extensions.py:198
+#: aleksis/apps/alsijil/model_extensions.py:197
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: models.py:50 models.py:348
+#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:388
 msgid "Short name"
 msgstr ""
 
-#: models.py:51 models.py:349 models.py:367
-#: templates/alsijil/class_register/groups.html:20
-#: templates/alsijil/partials/persons_with_stats.html:14
-#: templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:389
+#: aleksis/apps/alsijil/models.py:413
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
 msgid "Name"
 msgstr ""
 
-#: models.py:183 models.py:266
+#: aleksis/apps/alsijil/models.py:216 aleksis/apps/alsijil/models.py:303
 msgid "Year"
 msgstr ""
 
-#: models.py:238
+#: aleksis/apps/alsijil/models.py:271
 msgid "Personal note"
 msgstr ""
 
-#: models.py:239 templates/alsijil/class_register/lesson.html:114
-#: templates/alsijil/class_register/lesson.html:251
-#: templates/alsijil/class_register/person.html:31
-#: templates/alsijil/class_register/week_view.html:71
-#: templates/alsijil/class_register/week_view.html:317
+#: aleksis/apps/alsijil/models.py:272
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:317
 msgid "Personal notes"
 msgstr ""
 
-#: models.py:278 templates/alsijil/class_register/lesson.html:147
-#: templates/alsijil/class_register/week_view.html:108
-#: templates/alsijil/class_register/week_view.html:237
-#: templates/alsijil/print/full_register.html:381
+#: aleksis/apps/alsijil/models.py:315
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:149
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:108
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:237
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:381
 msgid "Lesson topic"
 msgstr ""
 
-#: models.py:279 templates/alsijil/class_register/lesson.html:155
-#: templates/alsijil/class_register/week_view.html:109
-#: templates/alsijil/class_register/week_view.html:243
-#: templates/alsijil/class_register/week_view.html:289
-#: templates/alsijil/print/full_register.html:382
+#: aleksis/apps/alsijil/models.py:316
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:157
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:109
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:243
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:382
 msgid "Homework"
 msgstr ""
 
-#: models.py:280 templates/alsijil/class_register/lesson.html:163
-#: templates/alsijil/class_register/week_view.html:110
-#: templates/alsijil/class_register/week_view.html:249
-#: templates/alsijil/class_register/week_view.html:295
+#: aleksis/apps/alsijil/models.py:317
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:165
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:249
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:295
 msgid "Group note"
 msgstr ""
 
-#: models.py:327 templates/alsijil/class_register/lesson.html:110
-#: templates/alsijil/class_register/lesson.html:138
+#: aleksis/apps/alsijil/models.py:363
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:140
 msgid "Lesson documentation"
 msgstr ""
 
-#: models.py:328 templates/alsijil/class_register/person.html:27
-#: templates/alsijil/class_register/week_view.html:68
+#: aleksis/apps/alsijil/models.py:364
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:68
 msgid "Lesson documentations"
 msgstr ""
 
-#: models.py:360
+#: aleksis/apps/alsijil/models.py:400
 msgid "Extra mark"
 msgstr ""
 
-#: models.py:368
+#: aleksis/apps/alsijil/models.py:414
 msgid "Icon"
 msgstr ""
 
-#: models.py:369
+#: aleksis/apps/alsijil/models.py:415
 msgid "Colour"
 msgstr ""
 
-#: models.py:375 models.py:386
-#: templates/alsijil/group_role/assigned_list.html:62
+#: aleksis/apps/alsijil/models.py:421 aleksis/apps/alsijil/models.py:435
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr ""
 
-#: models.py:376 templates/alsijil/class_register/lesson.html:125
-#: templates/alsijil/class_register/week_view.html:75
-#: templates/alsijil/group_role/list.html:8
-#: templates/alsijil/group_role/list.html:9
+#: aleksis/apps/alsijil/models.py:422
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:75
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 msgid "Group roles"
 msgstr ""
 
-#: models.py:392
+#: aleksis/apps/alsijil/models.py:441
 msgid "Assigned person"
 msgstr ""
 
-#: models.py:395 templates/alsijil/class_register/week_view.html:104
-#: templates/alsijil/class_register/week_view.html:220
+#: aleksis/apps/alsijil/models.py:444 aleksis/apps/alsijil/tables.py:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:220
 msgid "Groups"
 msgstr ""
 
-#: models.py:402
+#: aleksis/apps/alsijil/models.py:451
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: models.py:417
+#: aleksis/apps/alsijil/models.py:466
 msgid "Group role assignment"
 msgstr ""
 
-#: models.py:418
+#: aleksis/apps/alsijil/models.py:467
 msgid "Group role assignments"
 msgstr ""
 
-#: models.py:425
+#: aleksis/apps/alsijil/models.py:474
 msgid "Can view week overview"
 msgstr ""
 
-#: models.py:426
+#: aleksis/apps/alsijil/models.py:475
 msgid "Can register absence"
 msgstr ""
 
-#: models.py:427
+#: aleksis/apps/alsijil/models.py:476
 msgid "Can list all personal note filters"
 msgstr ""
 
-#: preferences.py:17
+#: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr ""
 
-#: preferences.py:25
+#: aleksis/apps/alsijil/preferences.py:25
 msgid "Allow users to view their own personal notes"
 msgstr ""
 
-#: preferences.py:34
+#: aleksis/apps/alsijil/preferences.py:34
 msgid "Allow primary group owners to register future absences for students in their groups"
 msgstr ""
 
-#: preferences.py:43
+#: aleksis/apps/alsijil/preferences.py:43
 msgid "Allow original teachers to edit their lessons although they are substituted"
 msgstr ""
 
-#: preferences.py:52
+#: aleksis/apps/alsijil/preferences.py:52
 msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
 msgstr ""
 
-#: preferences.py:55
+#: aleksis/apps/alsijil/preferences.py:55
 msgid "This will carry over data only if the data in the following periods are empty."
 msgstr ""
 
-#: preferences.py:63
+#: aleksis/apps/alsijil/preferences.py:63
 msgid "Carry over personal notes to all following lesson periods on the same day."
 msgstr ""
 
-#: preferences.py:72
+#: aleksis/apps/alsijil/preferences.py:72
 msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
 msgstr ""
 
-#: preferences.py:76
+#: aleksis/apps/alsijil/preferences.py:76
 msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
 msgstr ""
 
-#: preferences.py:85
+#: aleksis/apps/alsijil/preferences.py:85
 msgid "Allow teachers to add data for lessons in holidays"
 msgstr ""
 
-#: preferences.py:94
+#: aleksis/apps/alsijil/preferences.py:94
 msgid "Allow group owners to assign group roles to the parents of the group's members"
 msgstr ""
 
-#: preferences.py:103
+#: aleksis/apps/alsijil/preferences.py:103
 msgid "Show assigned group roles in week view"
 msgstr ""
 
-#: preferences.py:104
+#: aleksis/apps/alsijil/preferences.py:104
 msgid "Only week view of groups"
 msgstr ""
 
-#: preferences.py:112
+#: aleksis/apps/alsijil/preferences.py:112
 msgid "Show assigned group roles in lesson view"
 msgstr ""
 
-#: preferences.py:122
+#: aleksis/apps/alsijil/preferences.py:122
 msgid "Items per page in lessons table"
 msgstr ""
 
-#: preferences.py:126
+#: aleksis/apps/alsijil/preferences.py:126
 msgid "Each page must show at least one item."
 msgstr ""
 
-#: tables.py:19 tables.py:39 tables.py:64
-#: templates/alsijil/group_role/partials/assignment_options.html:13
+#: aleksis/apps/alsijil/preferences.py:134
+msgid "Filter lessons by existence of their lesson documentation on default"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:43
+#: aleksis/apps/alsijil/tables.py:68
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
 msgid "Edit"
 msgstr ""
 
-#: tables.py:25 tables.py:45 tables.py:70
-#: templates/alsijil/class_register/person.html:276
-#: templates/alsijil/group_role/partials/assignment_options.html:29
-msgid "Delete"
+#: aleksis/apps/alsijil/tables.py:92
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:308
+msgid "Date"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:102
+msgid "Period"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:103
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:231
+msgid "Teachers"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:110
+msgid "Excuse"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:147
+#, python-brace-format
+msgid "{value}' late"
 msgstr ""
 
-#: templates/alsijil/absences/register.html:5
-#: templates/alsijil/absences/register.html:6
-#: templates/alsijil/class_register/person.html:46
-#: templates/alsijil/class_register/week_view.html:332
-#: templates/alsijil/partials/persons_with_stats.html:115
+#: 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:327
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:115
 msgid "Register absence"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:5
-#: templates/alsijil/absences/register_confirm.html:6
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:5
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:6
 msgid "Confirm: Register absence"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:10
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:10
 msgid ""
 "\n"
 "      Do you really want to register the following absence?\n"
 "    "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:27
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:27
 msgid ""
 "\n"
 "                  As the length of this absence is longer than one day,\n"
@@ -484,106 +578,95 @@ msgid ""
 "                "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:37
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:37
 #, python-format
 msgid " %(count)s affected lessons "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:42
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:42
 msgid ""
 "\n"
 "                  There are no affected lessons. Registering this absence won't have any effect.\n"
 "                "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:59
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:59
 msgid "Reset status to 'not absent'"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:81
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:81
 msgid "Cancel"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:35
-#: templates/alsijil/class_register/groups.html:76
-#: templates/alsijil/class_register/week_view.html:40
-#: templates/alsijil/class_register/week_view.html:51
+#: 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:40
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
 msgid "Students list"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:39
-#: templates/alsijil/class_register/groups.html:82
-#: templates/alsijil/class_register/persons.html:27
-#: templates/alsijil/class_register/persons.html:43
-#: templates/alsijil/class_register/students_list.html:16
-#: templates/alsijil/class_register/students_list.html:35
-#: templates/alsijil/class_register/week_view.html:6
+#: 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/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
 msgid "Week view"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:45
-#: templates/alsijil/class_register/groups.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:45
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:90
 msgid "Roles"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:51
-#: templates/alsijil/class_register/groups.html:98
-#: templates/alsijil/class_register/persons.html:31
-#: templates/alsijil/class_register/persons.html:50
-#: templates/alsijil/class_register/students_list.html:20
-#: templates/alsijil/class_register/students_list.html:42
-#: templates/alsijil/class_register/week_view.html:44
-#: templates/alsijil/class_register/week_view.html:58
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:31
+#: 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:44
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:58
 msgid "Generate printout"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:59
-#: templates/alsijil/class_register/groups.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:59
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:104
 msgid "No groups available."
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:71
 msgid "students"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:5
 msgid "Lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:20
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:20
 msgid "Back to week view"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:29
 msgid "My previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:38
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:38
 msgid "My next lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:50
-#: templates/alsijil/class_register/lesson.html:185
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:50
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:187
 #, python-format
 msgid "%(period)s. period"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:56
-#: templates/alsijil/class_register/person.html:206
-#: templates/alsijil/class_register/week_view.html:151
-#: templates/alsijil/class_register/week_view.html:214
-#: templates/alsijil/class_register/week_view.html:268
-#: templates/alsijil/partials/lesson_status_icon.html:16
-#: templates/alsijil/print/full_register.html:335
-#: templates/alsijil/print/full_register.html:415 util/alsijil_helpers.py:316
-msgid "Event"
-msgstr ""
-
-#: templates/alsijil/class_register/lesson.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:85
 #, python-format
 msgid ""
 "\n"
@@ -591,7 +674,7 @@ msgid ""
 "          "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:95
 #, python-format
 msgid ""
 "\n"
@@ -599,53 +682,53 @@ msgid ""
 "          "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:120
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:121
 msgid "Previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:129
-#: templates/alsijil/class_register/lesson.html:378
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:131
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:380
 msgid "Change history"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:184
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:186
 msgid "Overview: Previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:191
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:193
 msgid "Lesson topic of previous lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:198
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:200
 msgid "Homework for this lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:205
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:207
 msgid "Group notes for previous lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:212
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:214
 msgid "Absent persons:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:219
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:221
 msgid "Late persons:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:262
-#: templates/alsijil/class_register/person.html:125
-#: templates/alsijil/partials/persons_with_stats.html:17
-#: templates/alsijil/partials/persons_with_stats.html:34
-#: templates/alsijil/partials/persons_with_stats.html:91
-#: templates/alsijil/print/full_register.html:287
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:264
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:146
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:17
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:34
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:91
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:287
 msgid "Tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:291
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:293
 msgid "Tardiness (in m)"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:397
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:399
 #, python-format
 msgid ""
 "\n"
@@ -653,7 +736,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:407
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:409
 #, python-format
 msgid ""
 "\n"
@@ -661,163 +744,134 @@ msgid ""
 "            "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:423
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:425
 msgid ""
 "\n"
 "                This lesson overlaps with holidays and can't be edited.\n"
 "              "
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:10
 msgid "Class register: person"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:13
-#: templates/alsijil/class_register/students_list.html:10
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:18
+#: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:10
 msgid "Back"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:16
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:22
 #, python-format
 msgid ""
 "\n"
-"    Class register overview for %(person)s\n"
-"  "
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:52
-#: templates/alsijil/partials/legend.html:14
-msgid "Unexcused absences"
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:61
-#: templates/alsijil/class_register/person.html:80
-#: templates/alsijil/class_register/person.html:217
-#: templates/alsijil/class_register/person.html:264
-msgid "Mark as"
+"      Class register overview for %(person)s\n"
+"    "
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:64
-#: templates/alsijil/class_register/person.html:83
-#: templates/alsijil/class_register/person.html:220
-#: templates/alsijil/class_register/person.html:226
-#: templates/alsijil/class_register/person.html:267
-#: templates/alsijil/class_register/person.html:273
-msgid "Delete note"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:50
+msgid "Statistics"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:93
-msgid "There are no unexcused lessons."
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:65
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:304
+msgid "Relevant personal notes"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:98
-msgid "Statistics on absences, tardiness and remarks"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:68
+msgid "Filter personal notes"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:107
-#: templates/alsijil/partials/legend.html:10
-#: templates/alsijil/partials/persons_with_stats.html:16
-#: templates/alsijil/partials/persons_with_stats.html:26
-#: templates/alsijil/partials/persons_with_stats.html:69
-#: templates/alsijil/print/full_register.html:269
-msgid "Absences"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:73
+msgid "Clear all filters"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:111
-#: templates/alsijil/print/full_register.html:274
-msgid "thereof"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:76
+msgid "Close"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:121
-#: templates/alsijil/partials/persons_with_stats.html:86
-#: templates/alsijil/print/full_register.html:81
-#: templates/alsijil/print/full_register.html:283
-msgid "Unexcused"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:79
+msgid "Filter"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:142
-#: templates/alsijil/print/full_register.html:304
-msgid "Relevant personal notes"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+msgid "Statistics on absences, tardiness and remarks"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:158
-#, python-format
-msgid "Week %(week)s"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:269
+msgid "Absences"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:166
-#: templates/alsijil/class_register/person.html:184
-msgid "Mark all as"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:274
+msgid "thereof"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:249
-#, python-format
-msgid "%(late)s' late"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:142
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:86
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:283
+msgid "Unexcused"
 msgstr ""
 
-#: templates/alsijil/class_register/students_list.html:5
-#: templates/alsijil/class_register/students_list.html:12
+#: 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 ""
 
-#: templates/alsijil/class_register/week_view.html:23
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:23
 msgid "Select"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:31
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 #, python-format
 msgid ""
 "CW %(week)s:\n"
 "      %(instance)s"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:102
-msgid "Period"
-msgstr ""
-
-#: templates/alsijil/class_register/week_view.html:107
-#: templates/alsijil/class_register/week_view.html:231
-msgid "Teachers"
-msgstr ""
-
-#: templates/alsijil/class_register/week_view.html:343
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:340
 msgid "unexcused"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:343
 msgid "Summed up tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:349
-#: templates/alsijil/partials/persons_with_stats.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:94
 msgid "Count of tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:383
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:378
 msgid "No lessons available"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:386
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:381
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
 "          "
 msgstr ""
 
-#: templates/alsijil/excuse_type/create.html:6
-#: templates/alsijil/excuse_type/create.html:7
-#: templates/alsijil/excuse_type/list.html:18
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:18
 msgid "Create excuse type"
 msgstr ""
 
-#: templates/alsijil/excuse_type/edit.html:6
-#: templates/alsijil/excuse_type/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:7
 msgid "Edit excuse type"
 msgstr ""
 
-#: templates/alsijil/excuse_type/warning.html:5
-#: templates/alsijil/group_role/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/group_role/warning.html:5
 msgid ""
 "\n"
 "      This function should only be used to define alternatives to the default excuse which also will be counted extra.\n"
@@ -825,75 +879,75 @@ msgid ""
 "    "
 msgstr ""
 
-#: templates/alsijil/extra_mark/create.html:6
-#: templates/alsijil/extra_mark/create.html:7
-#: templates/alsijil/extra_mark/list.html:14
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:14
 msgid "Create extra mark"
 msgstr ""
 
-#: templates/alsijil/extra_mark/edit.html:6
-#: templates/alsijil/extra_mark/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:7
 msgid "Edit extra mark"
 msgstr ""
 
-#: templates/alsijil/group_role/assign.html:9
-#: templates/alsijil/group_role/assign.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:16
 #, python-format
 msgid "Assign group role for %(group)s"
 msgstr ""
 
-#: templates/alsijil/group_role/assign.html:34
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:9
-#: templates/alsijil/group_role/assigned_list.html:12
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:12
 #, python-format
 msgid "Group roles for %(group)s"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:28
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:28
 msgid "Back to my groups"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:36
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:36
 msgid "Assign a role to a person"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:45
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:45
 msgid "Current roles"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:48
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:48
 msgid "All assignments"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:66
-#: templates/alsijil/group_role/assigned_list.html:83
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:66
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:83
 msgid "Actions"
 msgstr ""
 
-#: templates/alsijil/group_role/create.html:6
-#: templates/alsijil/group_role/create.html:7
-#: templates/alsijil/group_role/list.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:16
 msgid "Create group role"
 msgstr ""
 
-#: templates/alsijil/group_role/edit.html:6
-#: templates/alsijil/group_role/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:7
 msgid "Edit group role"
 msgstr ""
 
-#: templates/alsijil/group_role/edit_assignment.html:7
-#: templates/alsijil/group_role/edit_assignment.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:8
 msgid "Edit group role assignment"
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:31
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:31
 msgid "No one assigned."
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:42
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:42
 msgid ""
 "\n"
 "      You can get some additional actions for each group role assignment if you click on the name of the\n"
@@ -901,122 +955,119 @@ msgid ""
 "    "
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assignment_options.html:21
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:21
 msgid "Stop"
 msgstr ""
 
-#: templates/alsijil/notifications/check.html:1
+#: aleksis/apps/alsijil/templates/alsijil/notifications/check.html:1
 msgid "Please check if the following class register entries are complete and correct:"
 msgstr ""
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:27
-#: templates/alsijil/partials/persons_with_stats.html:44
-#: templates/alsijil/print/full_register.html:126
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:44
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:126
 msgid "(e)"
 msgstr ""
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:33
-#: templates/alsijil/partials/persons_with_stats.html:50
-#: templates/alsijil/print/full_register.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:130
 msgid "(u)"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:4
 msgid "Legend"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:7
-#: templates/alsijil/print/full_register.html:71
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:7
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:71
 msgid "General"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:18
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
+msgid "Unexcused absences"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
 msgid "Excused absences"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:6
 msgid "Data complete"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:12
-#: templates/alsijil/partials/lesson_status_icon.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:12
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:25
 msgid "Missing data"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:14
-#: templates/alsijil/partials/lesson_status_icon.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:27
 msgid "Pending"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:23
-#: templates/alsijil/print/full_register.html:426
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:23
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:426
 msgid "Lesson cancelled"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:29
 msgid "Substitution"
 msgstr ""
 
-#: templates/alsijil/partials/mark_as_buttons.html:4
-#: templates/alsijil/print/full_register.html:346
-#: templates/alsijil/print/full_register.html:444
-#: templates/alsijil/print/full_register.html:459
-msgid "e"
-msgstr ""
-
-#: templates/alsijil/partials/objects_table.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:4
 msgid "Lesson filter"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:9
 msgid "Update filters"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:22
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:22
 msgid "Lesson table"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:31
 msgid "Execute"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:7
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:7
 msgid "No students available."
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:15
-#: templates/alsijil/partials/persons_with_stats.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Primary group"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:43
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:43
 msgid "Sum"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:107
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:107
 msgid "Show more details"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:108
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:108
 msgid "Details"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:6
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:6
 msgid "Class register:"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:26
-#: templates/alsijil/print/full_register.html:59
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:26
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:59
 msgid "Owners"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:30
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:30
 msgid "Printed on"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:38
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:38
 msgid ""
 "\n"
 "        This printout is intended for archival purposes. The main copy of\n"
@@ -1025,7 +1076,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:45
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:45
 msgid ""
 "\n"
 "        Copies of the class register, both digital and as printout, must\n"
@@ -1034,7 +1085,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:52
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:52
 msgid ""
 "\n"
 "        The owner of the group and the headteacher confirm the above, as\n"
@@ -1042,208 +1093,202 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:62
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:62
 msgid "Headteacher"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:69
 msgid "Abbreviations"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:78
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:78
 msgid "Late"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:89
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:89
 msgid "Custom excuse types"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:101
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:101
 msgid "Available extra marks"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:115
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:115
 msgid "Persons in group"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:120
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:120
 msgid "No."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:121
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:121
 msgid "Last name"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:122
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:122
 msgid "First name"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:123
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:123
 msgid "Sex"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:124
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:124
 msgid "Date of birth"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:125
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:125
 msgid "(a)"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:131
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:131
 msgid "(b)"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:164
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:164
 msgid "Teachers and lessons in group"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:171
-#: templates/alsijil/print/full_register.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:171
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:202
 msgid "Lesson start"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:172
-#: templates/alsijil/print/full_register.html:203
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:172
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:203
 msgid "Lesson end"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:173
-#: templates/alsijil/print/full_register.html:204
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:173
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:204
 msgid "Per week"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:194
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:194
 msgid "Teachers and lessons in child groups"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:227
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:227
 msgid "Personal overview"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:229
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:229
 msgid "Contact details"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:266
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:266
 msgid "Absences and tardiness"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:308
-msgid "Date"
-msgstr ""
-
-#: templates/alsijil/print/full_register.html:309
-#: templates/alsijil/print/full_register.html:379
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:309
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:379
 msgid "Pe."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:310
-#: templates/alsijil/print/full_register.html:380
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:310
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:380
 msgid "Subj."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:311
-#: templates/alsijil/print/full_register.html:384
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:311
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:384
 msgid "Te."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:313
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Tard."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:341
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:341
 msgid "Yes"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:373
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:346
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:444
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:459
+msgid "e"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:373
 msgid "Week"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:383
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:383
 msgid "Notes"
 msgstr ""
 
-#: views.py:108
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: views.py:141
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: views.py:225
+#: aleksis/apps/alsijil/views.py:241
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: views.py:259
+#: aleksis/apps/alsijil/views.py:275
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: views.py:782
-msgid "The absences have been marked as excused."
-msgstr ""
-
-#: views.py:797
-msgid "The absence has been marked as excused."
-msgstr ""
-
-#: views.py:988
+#: aleksis/apps/alsijil/views.py:1029
 msgid "The absence has been saved."
 msgstr ""
 
-#: views.py:1009
+#: aleksis/apps/alsijil/views.py:1050
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: views.py:1031
+#: aleksis/apps/alsijil/views.py:1072
 msgid "The extra mark has been created."
 msgstr ""
 
-#: views.py:1043
+#: aleksis/apps/alsijil/views.py:1084
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: views.py:1054
+#: aleksis/apps/alsijil/views.py:1095
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: views.py:1075
+#: aleksis/apps/alsijil/views.py:1116
 msgid "The excuse type has been created."
 msgstr ""
 
-#: views.py:1087
+#: aleksis/apps/alsijil/views.py:1128
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: views.py:1098
+#: aleksis/apps/alsijil/views.py:1139
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: views.py:1119
+#: aleksis/apps/alsijil/views.py:1160
 msgid "The group role has been created."
 msgstr ""
 
-#: views.py:1131
+#: aleksis/apps/alsijil/views.py:1172
 msgid "The group role has been saved."
 msgstr ""
 
-#: views.py:1142
+#: aleksis/apps/alsijil/views.py:1183
 msgid "The group role has been deleted."
 msgstr ""
 
-#: views.py:1175 views.py:1207
+#: aleksis/apps/alsijil/views.py:1216 aleksis/apps/alsijil/views.py:1248
 msgid "The group role has been assigned."
 msgstr ""
 
-#: views.py:1226
+#: aleksis/apps/alsijil/views.py:1267
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: views.py:1247
+#: aleksis/apps/alsijil/views.py:1288
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: views.py:1260
+#: aleksis/apps/alsijil/views.py:1301
 msgid "The group role assignment has been deleted."
 msgstr ""
diff --git a/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po
index 7028d3fa15fb04f08301641872c00536d05e1f97..928e8b7b62f838796c845ba16d07be450fdae3b2 100644
--- a/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po
+++ b/aleksis/apps/alsijil/locale/de_DE/LC_MESSAGES/django.po
@@ -7,11 +7,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-03-21 14:38+0100\n"
+"POT-Creation-Date: 2021-06-08 16:49+0200\n"
 "PO-Revision-Date: 2021-05-21 16:09+0000\n"
 "Last-Translator: Lloyd Meins <teckids@lloydmeins.de>\n"
-"Language-Team: German <https://translate.edugit.org/projects/aleksis/"
-"aleksis-app-alsijil/de/>\n"
+"Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/de/>\n"
 "Language: de_DE\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -19,458 +18,562 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 4.4\n"
 
-#: actions.py:30
+#: aleksis/apps/alsijil/actions.py:17
+#, fuzzy
+#| msgid "Mark as"
+msgid "Mark as excused"
+msgstr "Markiere als"
+
+#: aleksis/apps/alsijil/actions.py:24
+#, fuzzy
+#| msgid "unexcused"
+msgid "Mark as unexcused"
+msgstr "unentschuldigt"
+
+#: aleksis/apps/alsijil/actions.py:31
+#, python-brace-format
+msgid "Mark as {excuse_type.name}"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:41 aleksis/apps/alsijil/tables.py:29
+#: aleksis/apps/alsijil/tables.py:49 aleksis/apps/alsijil/tables.py:74
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:29
+msgid "Delete"
+msgstr "Löschen"
+
+#: aleksis/apps/alsijil/actions.py:61
 msgid "{} asks you to check some class register entries."
 msgstr "{} bittet Sie, einige Klassenbucheinträge zu überprüfen."
 
-#: actions.py:48
+#: aleksis/apps/alsijil/actions.py:79
 #, python-brace-format
 msgid "We have successfully sent notifications to {count_teachers} persons for {count_items} lessons."
 msgstr "Wir haben erfolgreich Benachrichtigungen an {count_teachers} Personen für {count_items} Stunden gesendet."
 
-#: actions.py:54
+#: aleksis/apps/alsijil/actions.py:85
 msgid "Ask teacher to check data"
 msgstr "Lehrkraft bitten, die Daten zu überprüfen"
 
-#: data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:12
 msgid "Delete object"
 msgstr "Objekt löschen"
 
-#: data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:22
 msgid "Set current groups"
 msgstr "Aktuelle Gruppen setzen"
 
-#: data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:33
 msgid "Reset personal note to defaults"
 msgstr "Persönliche Notiz zurücksetzen"
 
-#: data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:45
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr "Sicherstellen, dass es keine persönlichen Notizen in ausgefallenen Stunden gibt"
 
-#: data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:46
 msgid "The personal note is related to a cancelled lesson."
 msgstr "Die persönliche Notiz ist einer ausgefallenen Stunde zugeordnet."
 
-#: data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:73
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr "Sicherstellen, dass \"groups_of_person\" für alle persönlichen Notizen gesetzt ist"
 
-#: data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:74
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr "Die persönliche Notiz hat keine Gruppe in \"groups_of_person\"."
 
-#: data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:99
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr "Sicherstellen, dass es keine ausgefüllten Stundendokumentationen in den Ferien gibt"
 
-#: data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:100
 msgid "The lesson documentation is on holidays."
 msgstr "Die Stundendokumentation ist in den Ferien."
 
-#: data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:133
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr "Sicherstellen, dass es keine ausgefüllten persönlichen Notizen in den Ferien gibt"
 
-#: data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:134
 msgid "The personal note is on holidays."
 msgstr "Die persönliche Notiz ist in den Ferien."
 
-#: data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:162
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr "Sicherstellen, dass es keine entschuldigten persönlichen Notizen ohne eine Absenz gibt"
 
-#: data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:163
 msgid "The personal note is marked as excused, but not as absent."
 msgstr "Die persönliche Notiz ist als entschuldigt, aber nicht als abwesend markiert."
 
-#: forms.py:41
+#: aleksis/apps/alsijil/filters.py:10
+msgid "After"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:11
+msgid "Before"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:12 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/tables.py:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:106
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:169
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:200
+msgid "Subject"
+msgstr "Fach"
+
+#: aleksis/apps/alsijil/filters.py:16
+#, fuzzy
+#| msgid "Tardiness (in m)"
+msgid "Tardiness is lower than"
+msgstr "Verspätung (in m)"
+
+#: aleksis/apps/alsijil/filters.py:17
+#, fuzzy
+#| msgid "Tardiness (in m)"
+msgid "Tardiness is bigger than"
+msgstr "Verspätung (in m)"
+
+#: aleksis/apps/alsijil/forms.py:47
 msgid "Homework for the next lesson"
 msgstr "Hausaufgabe zur nächsten Stunde"
 
-#: forms.py:66 forms.py:190 forms.py:272
-#: templates/alsijil/print/full_register.html:199
+#: aleksis/apps/alsijil/forms.py:72 aleksis/apps/alsijil/forms.py:208
+#: aleksis/apps/alsijil/forms.py:290
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:199
 msgid "Group"
 msgstr "Gruppe"
 
-#: forms.py:69 templates/alsijil/print/full_register.html:170
-#: templates/alsijil/print/full_register.html:201
+#: aleksis/apps/alsijil/forms.py:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:170
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:201
 msgid "Teacher"
 msgstr "Lehrkraft"
 
-#: forms.py:84
+#: aleksis/apps/alsijil/forms.py:90
 msgid "You can't select a group and a teacher both."
 msgstr "Es kann nur entweder eine Gruppe oder eine Lehrkraft ausgewählt werden."
 
-#: forms.py:138 forms.py:274 models.py:397
-#: templates/alsijil/group_role/assigned_list.html:64
+#: aleksis/apps/alsijil/forms.py:144 aleksis/apps/alsijil/forms.py:292
+#: aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr "Startdatum"
 
-#: forms.py:139 forms.py:275 models.py:401
-#: templates/alsijil/group_role/assigned_list.html:65
+#: aleksis/apps/alsijil/forms.py:145 aleksis/apps/alsijil/forms.py:293
+#: aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr "Enddatum"
 
-#: forms.py:140
+#: aleksis/apps/alsijil/forms.py:146
 msgid "Start period"
 msgstr "Startstunde"
 
-#: forms.py:141
+#: aleksis/apps/alsijil/forms.py:147
 msgid "End period"
 msgstr "Endstunde"
 
-#: forms.py:142 templates/alsijil/absences/register_confirm.html:52
-#: templates/alsijil/class_register/lesson.html:261
-#: templates/alsijil/class_register/person.html:234
-#: templates/alsijil/class_register/week_view.html:342
-#: templates/alsijil/print/full_register.html:75
-#: templates/alsijil/print/full_register.html:312
+#: aleksis/apps/alsijil/forms.py:148
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:52
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:263
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:339
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:312
 msgid "Absent"
 msgstr "Abwesend"
 
-#: forms.py:143 templates/alsijil/absences/register_confirm.html:56
-#: templates/alsijil/class_register/lesson.html:263
-#: templates/alsijil/class_register/person.html:113
-#: templates/alsijil/class_register/person.html:242
-#: templates/alsijil/partials/mark_as_buttons.html:2
-#: templates/alsijil/partials/mark_as_buttons.html:3
-#: templates/alsijil/partials/persons_with_stats.html:74
-#: templates/alsijil/print/full_register.html:84
-#: templates/alsijil/print/full_register.html:275
+#: aleksis/apps/alsijil/forms.py:149 aleksis/apps/alsijil/tables.py:137
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:74
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:275
 msgid "Excused"
 msgstr "Entschuldigt"
 
-#: forms.py:145 models.py:62 models.py:199
-#: templates/alsijil/class_register/lesson.html:264
-#: templates/alsijil/class_register/lesson.html:305
+#: aleksis/apps/alsijil/forms.py:151 aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:232
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:266
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:307
 msgid "Excuse type"
 msgstr "Entschuldigungsart"
 
-#: forms.py:150 templates/alsijil/class_register/lesson.html:266
-#: templates/alsijil/class_register/lesson.html:326
-#: templates/alsijil/print/full_register.html:314
+#: aleksis/apps/alsijil/forms.py:156
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:268
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:328
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:314
 msgid "Remarks"
 msgstr "Bemerkungen"
 
-#: forms.py:200 templates/alsijil/absences/register.html:9
-#: templates/alsijil/class_register/lesson.html:260
-#: templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/forms.py:218
+#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:262
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
 msgid "Person"
 msgstr "Person"
 
-#: forms.py:270
+#: aleksis/apps/alsijil/forms.py:288
 msgid "School term"
 msgstr "Schuljahr"
 
-#: forms.py:271
+#: aleksis/apps/alsijil/forms.py:289
 msgid "Has lesson documentation"
 msgstr "Hat eine Stunden-Dokumentation"
 
-#: forms.py:273 templates/alsijil/class_register/week_view.html:106
-#: templates/alsijil/class_register/week_view.html:202
-#: templates/alsijil/print/full_register.html:169
-#: templates/alsijil/print/full_register.html:200
-msgid "Subject"
-msgstr "Fach"
+#: aleksis/apps/alsijil/managers.py:81 aleksis/apps/alsijil/tables.py:121
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:151
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:214
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:268
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:16
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:335
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:415
+#: aleksis/apps/alsijil/util/alsijil_helpers.py:314
+msgid "Event"
+msgstr "Veranstaltung"
 
-#: menus.py:6 preferences.py:9 templates/alsijil/print/full_register.html:16
+#: 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"
 
-#: menus.py:16
+#: aleksis/apps/alsijil/menus.py:16
 msgid "Current lesson"
 msgstr "Aktuelle Unterrichtsstunde"
 
-#: menus.py:27
+#: aleksis/apps/alsijil/menus.py:27
 msgid "Current week"
 msgstr "Aktuelle Woche"
 
-#: menus.py:38 templates/alsijil/class_register/groups.html:5
-#: templates/alsijil/class_register/groups.html:8
+#: 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"
 
-#: menus.py:49
+#: aleksis/apps/alsijil/menus.py:49
 msgid "My overview"
 msgstr "Meine Ãœbersicht"
 
-#: menus.py:60 templates/alsijil/class_register/persons.html:5
-#: templates/alsijil/class_register/persons.html:9
+#: 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"
 
-#: menus.py:71 templates/alsijil/group_role/assign.html:11
-#: templates/alsijil/group_role/assign.html:18
+#: aleksis/apps/alsijil/menus.py:71
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
 msgid "Assign group role"
 msgstr "Gruppenrolle zuweisen"
 
-#: menus.py:82 templates/alsijil/class_register/all_objects.html:5
-#: templates/alsijil/class_register/all_objects.html:8
+#: aleksis/apps/alsijil/menus.py:82
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
 msgid "All lessons"
 msgstr "Alle Stunden"
 
-#: menus.py:93 models.py:63 templates/alsijil/excuse_type/list.html:8
-#: templates/alsijil/excuse_type/list.html:9
-#: templates/alsijil/partials/legend.html:26
+#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:63
+#: 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:26
 msgid "Excuse types"
 msgstr "Entschuldigungsarten"
 
-#: menus.py:104 models.py:204 models.py:361
-#: templates/alsijil/class_register/lesson.html:265
-#: templates/alsijil/extra_mark/list.html:8
-#: templates/alsijil/extra_mark/list.html:9
-#: templates/alsijil/partials/legend.html:41
-#: templates/alsijil/partials/persons_with_stats.html:19
-#: templates/alsijil/print/full_register.html:293
+#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:237
+#: aleksis/apps/alsijil/models.py:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:267
+#: 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:41
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:293
 msgid "Extra marks"
 msgstr "Zusätzliche Markierungen"
 
-#: menus.py:115
+#: aleksis/apps/alsijil/menus.py:115
 msgid "Manage group roles"
 msgstr "Gruppenrollen verwalten"
 
-#: model_extensions.py:181
+#: aleksis/apps/alsijil/model_extensions.py:180
 msgid "Can view week overview of group class register"
 msgstr "Kann Wochenübersicht des Gruppenklassenbuches sehen"
 
-#: model_extensions.py:184
+#: aleksis/apps/alsijil/model_extensions.py:183
 msgid "Can view lesson overview of group class register"
 msgstr "Kann Stundenübersicht des Gruppenklassenbuches sehen"
 
-#: model_extensions.py:186
+#: aleksis/apps/alsijil/model_extensions.py:185
 msgid "Can view all personal notes of a group"
 msgstr "Kann alle persönlichen Notizen einer Gruppe sehen"
 
-#: model_extensions.py:187
+#: aleksis/apps/alsijil/model_extensions.py:186
 msgid "Can edit all personal notes of a group"
 msgstr "Kann alle persönlichen Notizen einer Gruppe bearbeiten"
 
-#: model_extensions.py:189
+#: aleksis/apps/alsijil/model_extensions.py:188
 msgid "Can view all lesson documentation of a group"
 msgstr "Kann alle Unterrichtsdokumentationen für eine Gruppe sehen"
 
-#: model_extensions.py:192
+#: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can edit all lesson documentation of a group"
 msgstr "Kann alle Unterrichtsdokumentationen für eine Gruppe bearbeiten"
 
-#: model_extensions.py:194
+#: aleksis/apps/alsijil/model_extensions.py:193
 msgid "Can view full register of a group"
 msgstr "Kann komplettes Klassenbuch einer Gruppe sehen"
 
-#: model_extensions.py:196
+#: aleksis/apps/alsijil/model_extensions.py:195
 msgid "Can register an absence for all members of a group"
 msgstr "Kann eine Absenz für alle Mitglieder eine Gruppe registrieren"
 
-#: model_extensions.py:198
+#: aleksis/apps/alsijil/model_extensions.py:197
 msgid "Can register an absence for a person"
 msgstr "Kann eine Absenz für eine Person registrieren"
 
-#: models.py:50 models.py:348
+#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:388
 msgid "Short name"
 msgstr "Kurzname"
 
-#: models.py:51 models.py:349 models.py:367
-#: templates/alsijil/class_register/groups.html:20
-#: templates/alsijil/partials/persons_with_stats.html:14
-#: templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:389
+#: aleksis/apps/alsijil/models.py:413
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
 msgid "Name"
 msgstr "Name"
 
-#: models.py:183 models.py:266
+#: aleksis/apps/alsijil/models.py:216 aleksis/apps/alsijil/models.py:303
 msgid "Year"
 msgstr "Jahr"
 
-#: models.py:238
+#: aleksis/apps/alsijil/models.py:271
 msgid "Personal note"
 msgstr "Persönliche Notiz"
 
-#: models.py:239 templates/alsijil/class_register/lesson.html:114
-#: templates/alsijil/class_register/lesson.html:251
-#: templates/alsijil/class_register/person.html:31
-#: templates/alsijil/class_register/week_view.html:71
-#: templates/alsijil/class_register/week_view.html:317
+#: aleksis/apps/alsijil/models.py:272
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:317
 msgid "Personal notes"
 msgstr "Persönliche Notizen"
 
-#: models.py:278 templates/alsijil/class_register/lesson.html:147
-#: templates/alsijil/class_register/week_view.html:108
-#: templates/alsijil/class_register/week_view.html:237
-#: templates/alsijil/print/full_register.html:381
+#: aleksis/apps/alsijil/models.py:315
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:149
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:108
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:237
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:381
 msgid "Lesson topic"
 msgstr "Stundenthema"
 
-#: models.py:279 templates/alsijil/class_register/lesson.html:155
-#: templates/alsijil/class_register/week_view.html:109
-#: templates/alsijil/class_register/week_view.html:243
-#: templates/alsijil/class_register/week_view.html:289
-#: templates/alsijil/print/full_register.html:382
+#: aleksis/apps/alsijil/models.py:316
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:157
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:109
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:243
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:382
 msgid "Homework"
 msgstr "Hausaufgaben"
 
-#: models.py:280 templates/alsijil/class_register/lesson.html:163
-#: templates/alsijil/class_register/week_view.html:110
-#: templates/alsijil/class_register/week_view.html:249
-#: templates/alsijil/class_register/week_view.html:295
+#: aleksis/apps/alsijil/models.py:317
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:165
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:249
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:295
 msgid "Group note"
 msgstr "Gruppennotiz"
 
-#: models.py:327 templates/alsijil/class_register/lesson.html:110
-#: templates/alsijil/class_register/lesson.html:138
+#: aleksis/apps/alsijil/models.py:363
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:140
 msgid "Lesson documentation"
 msgstr "Stunden-Dokumentation"
 
-#: models.py:328 templates/alsijil/class_register/person.html:27
-#: templates/alsijil/class_register/week_view.html:68
+#: aleksis/apps/alsijil/models.py:364
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:68
 msgid "Lesson documentations"
 msgstr "Stunden-Dokumentationen"
 
-#: models.py:360
+#: aleksis/apps/alsijil/models.py:400
 msgid "Extra mark"
 msgstr "Zusätzliche Markierung"
 
-#: models.py:368
+#: aleksis/apps/alsijil/models.py:414
 msgid "Icon"
 msgstr "Symbol"
 
-#: models.py:369
+#: aleksis/apps/alsijil/models.py:415
 msgid "Colour"
 msgstr "Farbe"
 
-#: models.py:375 models.py:386
-#: templates/alsijil/group_role/assigned_list.html:62
+#: aleksis/apps/alsijil/models.py:421 aleksis/apps/alsijil/models.py:435
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr "Gruppenrolle"
 
-#: models.py:376 templates/alsijil/class_register/lesson.html:125
-#: templates/alsijil/class_register/week_view.html:75
-#: templates/alsijil/group_role/list.html:8
-#: templates/alsijil/group_role/list.html:9
+#: aleksis/apps/alsijil/models.py:422
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:75
+#: 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"
 
-#: models.py:392
+#: aleksis/apps/alsijil/models.py:441
 msgid "Assigned person"
 msgstr "Zugewiesene Person"
 
-#: models.py:395 templates/alsijil/class_register/week_view.html:104
-#: templates/alsijil/class_register/week_view.html:220
+#: aleksis/apps/alsijil/models.py:444 aleksis/apps/alsijil/tables.py:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:220
 msgid "Groups"
 msgstr "Gruppen"
 
-#: models.py:402
+#: aleksis/apps/alsijil/models.py:451
 msgid "Can be left empty if end date is not clear yet"
 msgstr "Kann frei gelassen werden, wenn das Enddatum noch nicht feststeht"
 
-#: models.py:417
+#: aleksis/apps/alsijil/models.py:466
 msgid "Group role assignment"
 msgstr "Zuweisung von Gruppenrollen"
 
-#: models.py:418
+#: aleksis/apps/alsijil/models.py:467
 msgid "Group role assignments"
 msgstr "Zuweisungen von Gruppenrollen"
 
-#: models.py:425
+#: aleksis/apps/alsijil/models.py:474
 msgid "Can view week overview"
 msgstr "Kann die Wochenübersicht sehen"
 
-#: models.py:426
+#: aleksis/apps/alsijil/models.py:475
 msgid "Can register absence"
 msgstr "Kann eine Absenz registrieren"
 
-#: models.py:427
+#: aleksis/apps/alsijil/models.py:476
 msgid "Can list all personal note filters"
 msgstr "Kann alle Filter für persönliche Notizen anzeigen"
 
-#: preferences.py:17
+#: 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"
 
-#: preferences.py:25
+#: aleksis/apps/alsijil/preferences.py:25
 msgid "Allow users to view their own personal notes"
 msgstr "Erlaube Nutzern, ihre eigenen persönlichen Notizen zu sehen"
 
-#: preferences.py:34
+#: aleksis/apps/alsijil/preferences.py:34
 msgid "Allow primary group owners to register future absences for students in their groups"
 msgstr "Erlaube Primärgruppeninhabern Absenzen in der Zukunft für Mitglieder ihrer Gruppen zu registrieren"
 
-#: preferences.py:43
+#: aleksis/apps/alsijil/preferences.py:43
 msgid "Allow original teachers to edit their lessons although they are substituted"
 msgstr "Erlaube den Ursprungslehrkräften, ihre Stunden zu bearbeiten, obwohl sie vertreten worden sind"
 
-#: preferences.py:52
+#: aleksis/apps/alsijil/preferences.py:52
 msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
 msgstr "Daten von der ersten Stunde zu weiteren folgenden Stunden übernehmen"
 
-#: preferences.py:55
+#: aleksis/apps/alsijil/preferences.py:55
 msgid "This will carry over data only if the data in the following periods are empty."
 msgstr "Dies wird die Daten nur übernehmen, wenn die Daten in den Folgestunden leer sind."
 
-#: preferences.py:63
+#: aleksis/apps/alsijil/preferences.py:63
 msgid "Carry over personal notes to all following lesson periods on the same day."
 msgstr "Persönliche Notizen in alle folgenden Unterrichtsstunden am gleichen Tag übernehmen."
 
-#: preferences.py:72
+#: aleksis/apps/alsijil/preferences.py:72
 msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
 msgstr "Erlaube Lehrkräften, Unterrichtsstunden bereits am gleichen Tag und nicht erst zu Beginn der Stunde zu öffnen"
 
-#: preferences.py:76
+#: aleksis/apps/alsijil/preferences.py:76
 msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
 msgstr "Unterrichtsstunden in der Vergangenheit werden nicht durch diese Einstellung beeinflusst, sie können immer geöffnet werden."
 
-#: preferences.py:85
+#: aleksis/apps/alsijil/preferences.py:85
 msgid "Allow teachers to add data for lessons in holidays"
 msgstr "Lehrkräften erlauben, Daten für Stunden in den Ferien hinzuzufügen"
 
-#: preferences.py:94
+#: aleksis/apps/alsijil/preferences.py:94
 msgid "Allow group owners to assign group roles to the parents of the group's members"
 msgstr "Erlaube Gruppenbesitzern, Gruppenrollen für Eltern von Gruppenmitgliedern zuzuweisen"
 
-#: preferences.py:103
+#: aleksis/apps/alsijil/preferences.py:103
 msgid "Show assigned group roles in week view"
 msgstr "Zugewiesene Gruppenrollen in der Wochenansicht zeigen"
 
-#: preferences.py:104
+#: aleksis/apps/alsijil/preferences.py:104
 msgid "Only week view of groups"
 msgstr "Nur Wochenansicht von Gruppen"
 
-#: preferences.py:112
+#: aleksis/apps/alsijil/preferences.py:112
 msgid "Show assigned group roles in lesson view"
 msgstr "Zugewiesene Gruppenrollen in der Stundenansicht anzeigen"
 
-#: preferences.py:122
+#: aleksis/apps/alsijil/preferences.py:122
 msgid "Items per page in lessons table"
 msgstr "Einträge pro Seite in der Stundentabelle"
 
-#: preferences.py:126
+#: aleksis/apps/alsijil/preferences.py:126
 msgid "Each page must show at least one item."
 msgstr "Jede Seite muss mindestens einen Eintrag anzeigen."
 
-#: tables.py:19 tables.py:39 tables.py:64
-#: templates/alsijil/group_role/partials/assignment_options.html:13
+#: aleksis/apps/alsijil/preferences.py:134
+msgid "Filter lessons by existence of their lesson documentation on default"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:43
+#: aleksis/apps/alsijil/tables.py:68
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: tables.py:25 tables.py:45 tables.py:70
-#: templates/alsijil/class_register/person.html:276
-#: templates/alsijil/group_role/partials/assignment_options.html:29
-msgid "Delete"
-msgstr "Löschen"
+#: aleksis/apps/alsijil/tables.py:92
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:308
+msgid "Date"
+msgstr "Datum"
+
+#: aleksis/apps/alsijil/tables.py:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:102
+msgid "Period"
+msgstr "Stunde"
+
+#: aleksis/apps/alsijil/tables.py:103
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:231
+msgid "Teachers"
+msgstr "Lehrkräfte"
+
+#: aleksis/apps/alsijil/tables.py:110
+#, fuzzy
+#| msgid "Excused"
+msgid "Excuse"
+msgstr "Entschuldigt"
+
+#: aleksis/apps/alsijil/tables.py:147
+#, python-brace-format
+msgid "{value}' late"
+msgstr ""
 
-#: templates/alsijil/absences/register.html:5
-#: templates/alsijil/absences/register.html:6
-#: templates/alsijil/class_register/person.html:46
-#: templates/alsijil/class_register/week_view.html:332
-#: templates/alsijil/partials/persons_with_stats.html:115
+#: 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:327
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:115
 msgid "Register absence"
 msgstr "Abwesenheit eintragen"
 
-#: templates/alsijil/absences/register_confirm.html:5
-#: templates/alsijil/absences/register_confirm.html:6
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:5
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:6
 msgid "Confirm: Register absence"
 msgstr "Bestätigung: Abwesenheit eintragen"
 
-#: templates/alsijil/absences/register_confirm.html:10
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:10
 msgid ""
 "\n"
 "      Do you really want to register the following absence?\n"
@@ -480,7 +583,7 @@ msgstr ""
 "      Möchten Sie wirklich folgende Abwesenheit eintragen?\n"
 "    "
 
-#: templates/alsijil/absences/register_confirm.html:27
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:27
 msgid ""
 "\n"
 "                  As the length of this absence is longer than one day,\n"
@@ -492,12 +595,12 @@ msgstr ""
 "überprüfen Sie bitte die Richtigkeit Ihres Eintrags erneut.\n"
 "                "
 
-#: templates/alsijil/absences/register_confirm.html:37
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:37
 #, python-format
 msgid " %(count)s affected lessons "
 msgstr " %(count)s betroffene Stunden "
 
-#: templates/alsijil/absences/register_confirm.html:42
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:42
 msgid ""
 "\n"
 "                  There are no affected lessons. Registering this absence won't have any effect.\n"
@@ -507,94 +610,83 @@ msgstr ""
 "                  Es gibt keine betroffenen Stunden. Das Eintragen dieser Abwesenheit wird keinen Effekt haben.\n"
 "                "
 
-#: templates/alsijil/absences/register_confirm.html:59
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:59
 msgid "Reset status to 'not absent'"
 msgstr "Status auf \"nicht abwesend\" zurücksetzen"
 
-#: templates/alsijil/absences/register_confirm.html:81
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:81
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: templates/alsijil/class_register/groups.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr "Schülerinnen und Schüler"
 
-#: templates/alsijil/class_register/groups.html:35
-#: templates/alsijil/class_register/groups.html:76
-#: templates/alsijil/class_register/week_view.html:40
-#: templates/alsijil/class_register/week_view.html:51
+#: 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:40
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
 msgid "Students list"
 msgstr "Liste der Schülerinnen und Schüler"
 
-#: templates/alsijil/class_register/groups.html:39
-#: templates/alsijil/class_register/groups.html:82
-#: templates/alsijil/class_register/persons.html:27
-#: templates/alsijil/class_register/persons.html:43
-#: templates/alsijil/class_register/students_list.html:16
-#: templates/alsijil/class_register/students_list.html:35
-#: templates/alsijil/class_register/week_view.html:6
+#: 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/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
 msgid "Week view"
 msgstr "Wochenansicht"
 
-#: templates/alsijil/class_register/groups.html:45
-#: templates/alsijil/class_register/groups.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:45
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:90
 msgid "Roles"
 msgstr "Rollen"
 
-#: templates/alsijil/class_register/groups.html:51
-#: templates/alsijil/class_register/groups.html:98
-#: templates/alsijil/class_register/persons.html:31
-#: templates/alsijil/class_register/persons.html:50
-#: templates/alsijil/class_register/students_list.html:20
-#: templates/alsijil/class_register/students_list.html:42
-#: templates/alsijil/class_register/week_view.html:44
-#: templates/alsijil/class_register/week_view.html:58
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:31
+#: 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:44
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:58
 msgid "Generate printout"
 msgstr "Ausdruck generieren"
 
-#: templates/alsijil/class_register/groups.html:59
-#: templates/alsijil/class_register/groups.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:59
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:104
 msgid "No groups available."
 msgstr "Keine Gruppen verfügbar."
 
-#: templates/alsijil/class_register/groups.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:71
 msgid "students"
 msgstr "Schülerinnen und Schüler"
 
-#: templates/alsijil/class_register/lesson.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:5
 msgid "Lesson"
 msgstr "Unterrichtsstunde"
 
-#: templates/alsijil/class_register/lesson.html:20
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:20
 msgid "Back to week view"
 msgstr "Zurück zur Wochenübersicht"
 
-#: templates/alsijil/class_register/lesson.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:29
 msgid "My previous lesson"
 msgstr "Meine vorherige Stunde"
 
-#: templates/alsijil/class_register/lesson.html:38
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:38
 msgid "My next lesson"
 msgstr "Meine nächste Stunde"
 
-#: templates/alsijil/class_register/lesson.html:50
-#: templates/alsijil/class_register/lesson.html:185
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:50
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:187
 #, python-format
 msgid "%(period)s. period"
 msgstr "%(period)s. Stunde"
 
-#: templates/alsijil/class_register/lesson.html:56
-#: templates/alsijil/class_register/person.html:206
-#: templates/alsijil/class_register/week_view.html:151
-#: templates/alsijil/class_register/week_view.html:214
-#: templates/alsijil/class_register/week_view.html:268
-#: templates/alsijil/partials/lesson_status_icon.html:16
-#: templates/alsijil/print/full_register.html:335
-#: templates/alsijil/print/full_register.html:415 util/alsijil_helpers.py:316
-msgid "Event"
-msgstr "Veranstaltung"
-
-#: templates/alsijil/class_register/lesson.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:85
 #, python-format
 msgid ""
 "\n"
@@ -605,7 +697,7 @@ msgstr ""
 "            Vorherige %(subject)s-Stunde\n"
 "          "
 
-#: templates/alsijil/class_register/lesson.html:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:95
 #, python-format
 msgid ""
 "\n"
@@ -616,53 +708,53 @@ msgstr ""
 "            Nächste %(subject)s-Stunde\n"
 "          "
 
-#: templates/alsijil/class_register/lesson.html:120
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:121
 msgid "Previous lesson"
 msgstr "Vorherige Unterrichtsstunde"
 
-#: templates/alsijil/class_register/lesson.html:129
-#: templates/alsijil/class_register/lesson.html:378
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:131
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:380
 msgid "Change history"
 msgstr "Veränderungen"
 
-#: templates/alsijil/class_register/lesson.html:184
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:186
 msgid "Overview: Previous lesson"
 msgstr "Ãœbersicht: Vorherige Stunde"
 
-#: templates/alsijil/class_register/lesson.html:191
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:193
 msgid "Lesson topic of previous lesson:"
 msgstr "Stundenthema der vorherigen Stunde:"
 
-#: templates/alsijil/class_register/lesson.html:198
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:200
 msgid "Homework for this lesson:"
 msgstr "Hausaufgaben zu dieser Stunde:"
 
-#: templates/alsijil/class_register/lesson.html:205
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:207
 msgid "Group notes for previous lesson:"
 msgstr "Gruppennotizen für die vorherige Stunde:"
 
-#: templates/alsijil/class_register/lesson.html:212
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:214
 msgid "Absent persons:"
 msgstr "Abwesende Personen:"
 
-#: templates/alsijil/class_register/lesson.html:219
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:221
 msgid "Late persons:"
 msgstr "Verspätete Personen:"
 
-#: templates/alsijil/class_register/lesson.html:262
-#: templates/alsijil/class_register/person.html:125
-#: templates/alsijil/partials/persons_with_stats.html:17
-#: templates/alsijil/partials/persons_with_stats.html:34
-#: templates/alsijil/partials/persons_with_stats.html:91
-#: templates/alsijil/print/full_register.html:287
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:264
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:146
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:17
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:34
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:91
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:287
 msgid "Tardiness"
 msgstr "Verspätung"
 
-#: templates/alsijil/class_register/lesson.html:291
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:293
 msgid "Tardiness (in m)"
 msgstr "Verspätung (in m)"
 
-#: templates/alsijil/class_register/lesson.html:397
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:399
 #, python-format
 msgid ""
 "\n"
@@ -673,7 +765,7 @@ msgstr ""
 "              Vorherige %(subject)s Stunde\n"
 "            "
 
-#: templates/alsijil/class_register/lesson.html:407
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:409
 #, python-format
 msgid ""
 "\n"
@@ -684,7 +776,7 @@ msgstr ""
 "              Nächste %(subject)s Stunde\n"
 "            "
 
-#: templates/alsijil/class_register/lesson.html:423
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:425
 msgid ""
 "\n"
 "                This lesson overlaps with holidays and can't be edited.\n"
@@ -694,107 +786,95 @@ msgstr ""
 "                Diese Stunde ist in den Ferien und kann somit nicht bearbeitet werden.\n"
 "              "
 
-#: templates/alsijil/class_register/person.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:10
 msgid "Class register: person"
 msgstr "Klassenbuch: Person"
 
-#: templates/alsijil/class_register/person.html:13
-#: templates/alsijil/class_register/students_list.html:10
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:18
+#: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:10
 msgid "Back"
 msgstr "Zurück"
 
-#: templates/alsijil/class_register/person.html:16
-#, python-format
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:22
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "    Class register overview for %(person)s\n"
+#| "  "
 msgid ""
 "\n"
-"    Class register overview for %(person)s\n"
-"  "
+"      Class register overview for %(person)s\n"
+"    "
 msgstr ""
 "\n"
 "    Klassenbuchübersicht für %(person)s\n"
 "  "
 
-#: templates/alsijil/class_register/person.html:52
-#: templates/alsijil/partials/legend.html:14
-msgid "Unexcused absences"
-msgstr "Unentschuldigte Fehlzeiten"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:50
+msgid "Statistics"
+msgstr ""
 
-#: templates/alsijil/class_register/person.html:61
-#: templates/alsijil/class_register/person.html:80
-#: templates/alsijil/class_register/person.html:217
-#: templates/alsijil/class_register/person.html:264
-msgid "Mark as"
-msgstr "Markiere als"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:65
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:304
+msgid "Relevant personal notes"
+msgstr "Relevante persönliche Notizen"
 
-#: templates/alsijil/class_register/person.html:64
-#: templates/alsijil/class_register/person.html:83
-#: templates/alsijil/class_register/person.html:220
-#: templates/alsijil/class_register/person.html:226
-#: templates/alsijil/class_register/person.html:267
-#: templates/alsijil/class_register/person.html:273
-msgid "Delete note"
-msgstr "Notiz löschen"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:68
+#, fuzzy
+#| msgid "Relevant personal notes"
+msgid "Filter personal notes"
+msgstr "Relevante persönliche Notizen"
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:73
+#, fuzzy
+#| msgid "Personal note filters"
+msgid "Clear all filters"
+msgstr "Filter für persönliche Notizen"
 
-#: templates/alsijil/class_register/person.html:93
-msgid "There are no unexcused lessons."
-msgstr "Es gibt keine unentschuldigten Unterrichtsstunden."
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:76
+msgid "Close"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:79
+msgid "Filter"
+msgstr ""
 
-#: templates/alsijil/class_register/person.html:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
 msgid "Statistics on absences, tardiness and remarks"
 msgstr "Statistiken zu Fehlzeiten, Verspätungen und Bemerkungen"
 
-#: templates/alsijil/class_register/person.html:107
-#: templates/alsijil/partials/legend.html:10
-#: templates/alsijil/partials/persons_with_stats.html:16
-#: templates/alsijil/partials/persons_with_stats.html:26
-#: templates/alsijil/partials/persons_with_stats.html:69
-#: templates/alsijil/print/full_register.html:269
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:269
 msgid "Absences"
 msgstr "Fehlstunden"
 
-#: templates/alsijil/class_register/person.html:111
-#: templates/alsijil/print/full_register.html:274
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:274
 msgid "thereof"
 msgstr "davon"
 
-#: templates/alsijil/class_register/person.html:121
-#: templates/alsijil/partials/persons_with_stats.html:86
-#: templates/alsijil/print/full_register.html:81
-#: templates/alsijil/print/full_register.html:283
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:142
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:86
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:283
 msgid "Unexcused"
 msgstr "Unentschuldigt"
 
-#: templates/alsijil/class_register/person.html:142
-#: templates/alsijil/print/full_register.html:304
-msgid "Relevant personal notes"
-msgstr "Relevante persönliche Notizen"
-
-#: templates/alsijil/class_register/person.html:158
-#, python-format
-msgid "Week %(week)s"
-msgstr "Woche %(week)s"
-
-#: templates/alsijil/class_register/person.html:166
-#: templates/alsijil/class_register/person.html:184
-msgid "Mark all as"
-msgstr "Alle als markieren"
-
-#: templates/alsijil/class_register/person.html:249
-#, python-format
-msgid "%(late)s' late"
-msgstr "%(late)s' verspätet"
-
-#: templates/alsijil/class_register/students_list.html:5
-#: templates/alsijil/class_register/students_list.html:12
+#: 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"
 
-#: templates/alsijil/class_register/week_view.html:23
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:23
 msgid "Select"
 msgstr "Auswählen"
 
-#: templates/alsijil/class_register/week_view.html:31
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 #, python-format
 msgid ""
 "CW %(week)s:\n"
@@ -803,33 +883,24 @@ msgstr ""
 "KW %(week)s: \n"
 "%(instance)s"
 
-#: templates/alsijil/class_register/week_view.html:102
-msgid "Period"
-msgstr "Stunde"
-
-#: templates/alsijil/class_register/week_view.html:107
-#: templates/alsijil/class_register/week_view.html:231
-msgid "Teachers"
-msgstr "Lehrkräfte"
-
-#: templates/alsijil/class_register/week_view.html:343
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:340
 msgid "unexcused"
 msgstr "unentschuldigt"
 
-#: templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:343
 msgid "Summed up tardiness"
 msgstr "Summierte Verspätung"
 
-#: templates/alsijil/class_register/week_view.html:349
-#: templates/alsijil/partials/persons_with_stats.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:94
 msgid "Count of tardiness"
 msgstr "Anzahl der Verspätungen"
 
-#: templates/alsijil/class_register/week_view.html:383
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:378
 msgid "No lessons available"
 msgstr "Keine Stunden verfügbar"
 
-#: templates/alsijil/class_register/week_view.html:386
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:381
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
@@ -839,19 +910,19 @@ msgstr ""
 "            Es gibt keine Stunden für die ausgewählte Gruppe oder Lehrkraft in dieser Woche.\n"
 "          "
 
-#: templates/alsijil/excuse_type/create.html:6
-#: templates/alsijil/excuse_type/create.html:7
-#: templates/alsijil/excuse_type/list.html:18
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:18
 msgid "Create excuse type"
 msgstr "Entschuldigungsart erstellen"
 
-#: templates/alsijil/excuse_type/edit.html:6
-#: templates/alsijil/excuse_type/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:7
 msgid "Edit excuse type"
 msgstr "Entschuldigungsart bearbeiten"
 
-#: templates/alsijil/excuse_type/warning.html:5
-#: templates/alsijil/group_role/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/group_role/warning.html:5
 msgid ""
 "\n"
 "      This function should only be used to define alternatives to the default excuse which also will be counted extra.\n"
@@ -863,75 +934,75 @@ msgstr ""
 "Benutzen Sie diese Funktion nicht, um eine Entschuldigungsart für normale Entschuldigungen zu erstellen oder wenn Sie nicht zwischen verschiedenen Entschuldigungsarten unterscheiden möchten.\n"
 "    "
 
-#: templates/alsijil/extra_mark/create.html:6
-#: templates/alsijil/extra_mark/create.html:7
-#: templates/alsijil/extra_mark/list.html:14
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:14
 msgid "Create extra mark"
 msgstr "Zusätzliche Markierung erstellen"
 
-#: templates/alsijil/extra_mark/edit.html:6
-#: templates/alsijil/extra_mark/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:7
 msgid "Edit extra mark"
 msgstr "Zusätzliche Markierung bearbeiten"
 
-#: templates/alsijil/group_role/assign.html:9
-#: templates/alsijil/group_role/assign.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:16
 #, python-format
 msgid "Assign group role for %(group)s"
 msgstr "Gruppenrolle für %(group)s zuweisen"
 
-#: templates/alsijil/group_role/assign.html:34
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr "Zuweisen"
 
-#: templates/alsijil/group_role/assigned_list.html:9
-#: templates/alsijil/group_role/assigned_list.html:12
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:12
 #, python-format
 msgid "Group roles for %(group)s"
 msgstr "Gruppenrollen für %(group)s"
 
-#: templates/alsijil/group_role/assigned_list.html:28
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:28
 msgid "Back to my groups"
 msgstr "Zurück zu meinen Gruppen"
 
-#: templates/alsijil/group_role/assigned_list.html:36
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:36
 msgid "Assign a role to a person"
 msgstr "Einer Person eine Rolle zuweisen"
 
-#: templates/alsijil/group_role/assigned_list.html:45
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:45
 msgid "Current roles"
 msgstr "Aktuelle Rollen"
 
-#: templates/alsijil/group_role/assigned_list.html:48
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:48
 msgid "All assignments"
 msgstr "Alle Zuweisungen"
 
-#: templates/alsijil/group_role/assigned_list.html:66
-#: templates/alsijil/group_role/assigned_list.html:83
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:66
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:83
 msgid "Actions"
 msgstr "Aktionen"
 
-#: templates/alsijil/group_role/create.html:6
-#: templates/alsijil/group_role/create.html:7
-#: templates/alsijil/group_role/list.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:16
 msgid "Create group role"
 msgstr "Gruppenrolle erstellen"
 
-#: templates/alsijil/group_role/edit.html:6
-#: templates/alsijil/group_role/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:7
 msgid "Edit group role"
 msgstr "Gruppenrolle bearbeiten"
 
-#: templates/alsijil/group_role/edit_assignment.html:7
-#: templates/alsijil/group_role/edit_assignment.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:8
 msgid "Edit group role assignment"
 msgstr "Gruppenrollenzuweisung bearbeiten"
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:31
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:31
 msgid "No one assigned."
 msgstr "Niemand zugewiesen."
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:42
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:42
 msgid ""
 "\n"
 "      You can get some additional actions for each group role assignment if you click on the name of the\n"
@@ -943,122 +1014,119 @@ msgstr ""
 "wenn Sie auf den Namen der entsprechenden Person klicken.\n"
 "    "
 
-#: templates/alsijil/group_role/partials/assignment_options.html:21
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:21
 msgid "Stop"
 msgstr "Beenden"
 
-#: templates/alsijil/notifications/check.html:1
+#: aleksis/apps/alsijil/templates/alsijil/notifications/check.html:1
 msgid "Please check if the following class register entries are complete and correct:"
 msgstr "Bitte prüfen Sie, ob die folgenden Klassenbucheinträge komplett und richtig sind:"
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:27
-#: templates/alsijil/partials/persons_with_stats.html:44
-#: templates/alsijil/print/full_register.html:126
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:44
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:126
 msgid "(e)"
 msgstr "(e)"
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:33
-#: templates/alsijil/partials/persons_with_stats.html:50
-#: templates/alsijil/print/full_register.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:130
 msgid "(u)"
 msgstr "(u)"
 
-#: templates/alsijil/partials/legend.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:4
 msgid "Legend"
 msgstr "Legende"
 
-#: templates/alsijil/partials/legend.html:7
-#: templates/alsijil/print/full_register.html:71
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:7
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:71
 msgid "General"
 msgstr "Allgemein"
 
-#: templates/alsijil/partials/legend.html:18
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
+msgid "Unexcused absences"
+msgstr "Unentschuldigte Fehlzeiten"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
 msgid "Excused absences"
 msgstr "Entschuldigte Fehlzeiten"
 
-#: templates/alsijil/partials/lesson_status_icon.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:6
 msgid "Data complete"
 msgstr "Daten vollständig"
 
-#: templates/alsijil/partials/lesson_status_icon.html:12
-#: templates/alsijil/partials/lesson_status_icon.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:12
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:25
 msgid "Missing data"
 msgstr "Fehlende Daten"
 
-#: templates/alsijil/partials/lesson_status_icon.html:14
-#: templates/alsijil/partials/lesson_status_icon.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:27
 msgid "Pending"
 msgstr "Findet gerade statt"
 
-#: templates/alsijil/partials/lesson_status_icon.html:23
-#: templates/alsijil/print/full_register.html:426
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:23
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:426
 msgid "Lesson cancelled"
 msgstr "Stunde ist ausgefallen"
 
-#: templates/alsijil/partials/lesson_status_icon.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:29
 msgid "Substitution"
 msgstr "Vertretung"
 
-#: templates/alsijil/partials/mark_as_buttons.html:4
-#: templates/alsijil/print/full_register.html:346
-#: templates/alsijil/print/full_register.html:444
-#: templates/alsijil/print/full_register.html:459
-msgid "e"
-msgstr "e"
-
-#: templates/alsijil/partials/objects_table.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:4
 msgid "Lesson filter"
 msgstr "Stundenfilter"
 
-#: templates/alsijil/partials/objects_table.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:9
 msgid "Update filters"
 msgstr "Filter aktualisieren"
 
-#: templates/alsijil/partials/objects_table.html:22
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:22
 msgid "Lesson table"
 msgstr "Stundentabelle"
 
-#: templates/alsijil/partials/objects_table.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:31
 msgid "Execute"
 msgstr "Ausführen"
 
-#: templates/alsijil/partials/persons_with_stats.html:7
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:7
 msgid "No students available."
 msgstr "Keine Schülerinnen und Schüler verfügbar."
 
-#: templates/alsijil/partials/persons_with_stats.html:15
-#: templates/alsijil/partials/persons_with_stats.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Primary group"
 msgstr "Primärgruppe"
 
-#: templates/alsijil/partials/persons_with_stats.html:43
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:43
 msgid "Sum"
 msgstr "Summe"
 
-#: templates/alsijil/partials/persons_with_stats.html:107
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:107
 msgid "Show more details"
 msgstr "Mehr Details anzeigen"
 
-#: templates/alsijil/partials/persons_with_stats.html:108
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:108
 msgid "Details"
 msgstr "Details"
 
-#: templates/alsijil/print/full_register.html:6
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:6
 msgid "Class register:"
 msgstr "Klassenbuch:"
 
-#: templates/alsijil/print/full_register.html:26
-#: templates/alsijil/print/full_register.html:59
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:26
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:59
 msgid "Owners"
 msgstr "Leiter/-innen"
 
-#: templates/alsijil/print/full_register.html:30
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:30
 msgid "Printed on"
 msgstr "Gedruckt am"
 
-#: templates/alsijil/print/full_register.html:38
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:38
 msgid ""
 "\n"
 "        This printout is intended for archival purposes. The main copy of\n"
@@ -1072,7 +1140,7 @@ msgstr ""
 "AlekSIS-Schul-Informations-System gespeichert.\n"
 "      "
 
-#: templates/alsijil/print/full_register.html:45
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:45
 msgid ""
 "\n"
 "        Copies of the class register, both digital and as printout, must\n"
@@ -1086,7 +1154,7 @@ msgstr ""
 "            gespeichert werden.\n"
 "      "
 
-#: templates/alsijil/print/full_register.html:52
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:52
 msgid ""
 "\n"
 "        The owner of the group and the headteacher confirm the above, as\n"
@@ -1098,214 +1166,231 @@ msgstr ""
 "            die Richtigkeit des Ausdrucks.\n"
 "      "
 
-#: templates/alsijil/print/full_register.html:62
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:62
 msgid "Headteacher"
 msgstr "Schulleitung"
 
-#: templates/alsijil/print/full_register.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:69
 msgid "Abbreviations"
 msgstr "Abkürzungen"
 
-#: templates/alsijil/print/full_register.html:78
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:78
 msgid "Late"
 msgstr "Verspätet"
 
-#: templates/alsijil/print/full_register.html:89
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:89
 msgid "Custom excuse types"
 msgstr "Benutzerdefinierte Entschuldigungsarten"
 
-#: templates/alsijil/print/full_register.html:101
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:101
 msgid "Available extra marks"
 msgstr "Verfügbare zusätzliche Markierungen"
 
-#: templates/alsijil/print/full_register.html:115
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:115
 msgid "Persons in group"
 msgstr "Personen in der Gruppe"
 
-#: templates/alsijil/print/full_register.html:120
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:120
 msgid "No."
 msgstr "Nr."
 
-#: templates/alsijil/print/full_register.html:121
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:121
 msgid "Last name"
 msgstr "Nachname"
 
-#: templates/alsijil/print/full_register.html:122
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:122
 msgid "First name"
 msgstr "Vorname"
 
-#: templates/alsijil/print/full_register.html:123
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:123
 msgid "Sex"
 msgstr "Geschlecht"
 
-#: templates/alsijil/print/full_register.html:124
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:124
 msgid "Date of birth"
 msgstr "Geburtsdatum"
 
-#: templates/alsijil/print/full_register.html:125
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:125
 msgid "(a)"
 msgstr "(a)"
 
-#: templates/alsijil/print/full_register.html:131
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:131
 msgid "(b)"
 msgstr "(b)"
 
-#: templates/alsijil/print/full_register.html:164
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:164
 msgid "Teachers and lessons in group"
 msgstr "Lehrkräfte und Fächer der Gruppe"
 
-#: templates/alsijil/print/full_register.html:171
-#: templates/alsijil/print/full_register.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:171
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:202
 msgid "Lesson start"
 msgstr "Unterrichtsbeginn"
 
-#: templates/alsijil/print/full_register.html:172
-#: templates/alsijil/print/full_register.html:203
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:172
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:203
 msgid "Lesson end"
 msgstr "Unterrichtsende"
 
-#: templates/alsijil/print/full_register.html:173
-#: templates/alsijil/print/full_register.html:204
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:173
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:204
 msgid "Per week"
 msgstr "Pro Woche"
 
-#: templates/alsijil/print/full_register.html:194
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:194
 msgid "Teachers and lessons in child groups"
 msgstr "Lehrkräfte und Fächer von Untergruppen"
 
-#: templates/alsijil/print/full_register.html:227
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:227
 msgid "Personal overview"
 msgstr "Persönliche Übersicht"
 
-#: templates/alsijil/print/full_register.html:229
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:229
 msgid "Contact details"
 msgstr "Kontaktdetails"
 
-#: templates/alsijil/print/full_register.html:266
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:266
 msgid "Absences and tardiness"
 msgstr "Abwesenheiten und Verspätungen"
 
-#: templates/alsijil/print/full_register.html:308
-msgid "Date"
-msgstr "Datum"
-
-#: templates/alsijil/print/full_register.html:309
-#: templates/alsijil/print/full_register.html:379
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:309
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:379
 msgid "Pe."
 msgstr "Std."
 
-#: templates/alsijil/print/full_register.html:310
-#: templates/alsijil/print/full_register.html:380
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:310
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:380
 msgid "Subj."
 msgstr "Fa."
 
-#: templates/alsijil/print/full_register.html:311
-#: templates/alsijil/print/full_register.html:384
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:311
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:384
 msgid "Te."
 msgstr "Lk."
 
-#: templates/alsijil/print/full_register.html:313
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Tard."
 msgstr "Verspät."
 
-#: templates/alsijil/print/full_register.html:341
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:341
 msgid "Yes"
 msgstr "Ja"
 
-#: templates/alsijil/print/full_register.html:373
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:346
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:444
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:459
+msgid "e"
+msgstr "e"
+
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:373
 msgid "Week"
 msgstr "Woche"
 
-#: templates/alsijil/print/full_register.html:383
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:383
 msgid "Notes"
 msgstr "Notizen"
 
-#: views.py:108
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 "Sie haben eine ungültige Stunde ausgewählt oder es\n"
 "      läuft momentan keine Stunde."
 
-#: views.py:141
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr "Ihnen ist es nicht erlaubt, eine Eintragung für eine Unterrichtsstunde in der Zukunft vorzunehmen."
 
-#: views.py:225
+#: aleksis/apps/alsijil/views.py:241
 msgid "The lesson documentation has been saved."
 msgstr "Die Stunden-Dokumentation wurde gespeichert."
 
-#: views.py:259
+#: aleksis/apps/alsijil/views.py:275
 msgid "The personal notes have been saved."
 msgstr "Die persönlichen Notizen wurden gespeichert."
 
-#: views.py:782
-msgid "The absences have been marked as excused."
-msgstr "Die Fehlzeiten wurden als entschuldigt markiert."
-
-#: views.py:797
-msgid "The absence has been marked as excused."
-msgstr "Die Fehlzeit wurde als entschuldigt markiert."
-
-#: views.py:988
+#: aleksis/apps/alsijil/views.py:1029
 msgid "The absence has been saved."
 msgstr "Die Abwesenheit wurde gespeichert."
 
-#: views.py:1009
+#: aleksis/apps/alsijil/views.py:1050
 msgid "The personal note has been deleted."
 msgstr "Die persönliche Notiz wurde gelöscht."
 
-#: views.py:1031
+#: aleksis/apps/alsijil/views.py:1072
 msgid "The extra mark has been created."
 msgstr "Die zusätzliche Markierung wurde erstellt."
 
-#: views.py:1043
+#: aleksis/apps/alsijil/views.py:1084
 msgid "The extra mark has been saved."
 msgstr "Die zusätzliche Markierung wurde gespeichert."
 
-#: views.py:1054
+#: aleksis/apps/alsijil/views.py:1095
 msgid "The extra mark has been deleted."
 msgstr "Die zusätzliche Markierung wurde gelöscht."
 
-#: views.py:1075
+#: aleksis/apps/alsijil/views.py:1116
 msgid "The excuse type has been created."
 msgstr "Die Entschuldigungsart wurde erstellt."
 
-#: views.py:1087
+#: aleksis/apps/alsijil/views.py:1128
 msgid "The excuse type has been saved."
 msgstr "Die Entschuldigunsart wurde gespeichert."
 
-#: views.py:1098
+#: aleksis/apps/alsijil/views.py:1139
 msgid "The excuse type has been deleted."
 msgstr "Die Entschuldigungsart wurde gelöscht."
 
-#: views.py:1119
+#: aleksis/apps/alsijil/views.py:1160
 msgid "The group role has been created."
 msgstr "Die Gruppenrolle wurde erstellt."
 
-#: views.py:1131
+#: aleksis/apps/alsijil/views.py:1172
 msgid "The group role has been saved."
 msgstr "Die Gruppenrolle wurde gespeichert."
 
-#: views.py:1142
+#: aleksis/apps/alsijil/views.py:1183
 msgid "The group role has been deleted."
 msgstr "Die Gruppenrolle wurde gelöscht."
 
-#: views.py:1175 views.py:1207
+#: aleksis/apps/alsijil/views.py:1216 aleksis/apps/alsijil/views.py:1248
 msgid "The group role has been assigned."
 msgstr "Die Gruppenrolle wurde zugewiesen."
 
-#: views.py:1226
+#: aleksis/apps/alsijil/views.py:1267
 msgid "The group role assignment has been saved."
 msgstr "Die Gruppenrollenzuweisung wurde gespeichert."
 
-#: views.py:1247
+#: aleksis/apps/alsijil/views.py:1288
 msgid "The group role assignment has been stopped."
 msgstr "Die Gruppenrollenzuweisung wurde beendet."
 
-#: views.py:1260
+#: aleksis/apps/alsijil/views.py:1301
 msgid "The group role assignment has been deleted."
 msgstr "Die Gruppenrollenzuweisung wurde gelöscht."
 
+#~ msgid "Delete note"
+#~ msgstr "Notiz löschen"
+
+#~ msgid "There are no unexcused lessons."
+#~ msgstr "Es gibt keine unentschuldigten Unterrichtsstunden."
+
+#, python-format
+#~ msgid "Week %(week)s"
+#~ msgstr "Woche %(week)s"
+
+#~ msgid "Mark all as"
+#~ msgstr "Alle als markieren"
+
+#, python-format
+#~ msgid "%(late)s' late"
+#~ msgstr "%(late)s' verspätet"
+
+#~ msgid "The absences have been marked as excused."
+#~ msgstr "Die Fehlzeiten wurden als entschuldigt markiert."
+
+#~ msgid "The absence has been marked as excused."
+#~ msgstr "Die Fehlzeit wurde als entschuldigt markiert."
+
 #~ msgid ""
 #~ "Week\n"
 #~ "                        %(week)s"
@@ -1340,9 +1425,6 @@ msgstr "Die Gruppenrollenzuweisung wurde gelöscht."
 #~ msgid "Manage absence"
 #~ msgstr "Abwesenheiten verwalten"
 
-#~ msgid "Personal note filters"
-#~ msgstr "Filter für persönliche Notizen"
-
 #~ msgid "Identifier"
 #~ msgstr "Kennung"
 
diff --git a/aleksis/apps/alsijil/locale/fr/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/fr/LC_MESSAGES/django.po
index dc04646f1e122369278568740845251cb865c206..0dff823e709924c61a0c1956ac95d722da1d23ee 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: 2021-03-21 14:38+0100\n"
+"POT-Creation-Date: 2021-06-08 16:49+0200\n"
 "PO-Revision-Date: 2020-07-26 14:08+0000\n"
 "Last-Translator: Marlene Grundey <grundema@katharineum.de>\n"
 "Language-Team: French <https://translate.edugit.org/projects/aleksis/aleksis-app-alsijil/fr/>\n"
@@ -18,525 +18,627 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "X-Generator: Weblate 4.0.1\n"
 
-#: actions.py:30
+#: aleksis/apps/alsijil/actions.py:17
+msgid "Mark as excused"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:24
+#, fuzzy
+#| msgid "unexcused"
+msgid "Mark as unexcused"
+msgstr "Injustifié(e)"
+
+#: aleksis/apps/alsijil/actions.py:31
+#, python-brace-format
+msgid "Mark as {excuse_type.name}"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:41 aleksis/apps/alsijil/tables.py:29
+#: aleksis/apps/alsijil/tables.py:49 aleksis/apps/alsijil/tables.py:74
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:29
+msgid "Delete"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:61
 msgid "{} asks you to check some class register entries."
 msgstr ""
 
-#: actions.py:48
+#: aleksis/apps/alsijil/actions.py:79
 #, python-brace-format
 msgid "We have successfully sent notifications to {count_teachers} persons for {count_items} lessons."
 msgstr ""
 
-#: actions.py:54
+#: aleksis/apps/alsijil/actions.py:85
 msgid "Ask teacher to check data"
 msgstr ""
 
-#: data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:12
 msgid "Delete object"
 msgstr ""
 
-#: data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:22
 msgid "Set current groups"
 msgstr ""
 
-#: data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:33
 #, fuzzy
 #| msgid "Relevant personal notes"
 msgid "Reset personal note to defaults"
 msgstr "Notes personnelles importantes"
 
-#: data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:45
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr ""
 
-#: data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:46
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The personal note is related to a cancelled lesson."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:73
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr ""
 
-#: data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:74
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr ""
 
-#: data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:99
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr ""
 
-#: data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:100
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The lesson documentation is on holidays."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:133
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr ""
 
-#: data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:134
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The personal note is on holidays."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:162
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr ""
 
-#: data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:163
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The personal note is marked as excused, but not as absent."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: forms.py:41
+#: aleksis/apps/alsijil/filters.py:10
+msgid "After"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:11
+msgid "Before"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:12 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/tables.py:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:106
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:169
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:200
+msgid "Subject"
+msgstr "Sujet"
+
+#: aleksis/apps/alsijil/filters.py:16
+#, fuzzy
+#| msgid "Tardiness"
+msgid "Tardiness is lower than"
+msgstr "Retard"
+
+#: aleksis/apps/alsijil/filters.py:17
+#, fuzzy
+#| msgid "Tardiness"
+msgid "Tardiness is bigger than"
+msgstr "Retard"
+
+#: aleksis/apps/alsijil/forms.py:47
 msgid "Homework for the next lesson"
 msgstr ""
 
-#: forms.py:66 forms.py:190 forms.py:272
-#: templates/alsijil/print/full_register.html:199
+#: aleksis/apps/alsijil/forms.py:72 aleksis/apps/alsijil/forms.py:208
+#: aleksis/apps/alsijil/forms.py:290
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:199
 msgid "Group"
 msgstr "Groupe"
 
-#: forms.py:69 templates/alsijil/print/full_register.html:170
-#: templates/alsijil/print/full_register.html:201
+#: aleksis/apps/alsijil/forms.py:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:170
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:201
 msgid "Teacher"
 msgstr "Profs"
 
-#: forms.py:84
+#: aleksis/apps/alsijil/forms.py:90
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: forms.py:138 forms.py:274 models.py:397
-#: templates/alsijil/group_role/assigned_list.html:64
+#: aleksis/apps/alsijil/forms.py:144 aleksis/apps/alsijil/forms.py:292
+#: aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr "Date de début"
 
-#: forms.py:139 forms.py:275 models.py:401
-#: templates/alsijil/group_role/assigned_list.html:65
+#: aleksis/apps/alsijil/forms.py:145 aleksis/apps/alsijil/forms.py:293
+#: aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr "Date de fin"
 
-#: forms.py:140
+#: aleksis/apps/alsijil/forms.py:146
 #, fuzzy
 #| msgid "From period"
 msgid "Start period"
 msgstr "De la période"
 
-#: forms.py:141
+#: aleksis/apps/alsijil/forms.py:147
 #, fuzzy
 #| msgid "From period"
 msgid "End period"
 msgstr "De la période"
 
-#: forms.py:142 templates/alsijil/absences/register_confirm.html:52
-#: templates/alsijil/class_register/lesson.html:261
-#: templates/alsijil/class_register/person.html:234
-#: templates/alsijil/class_register/week_view.html:342
-#: templates/alsijil/print/full_register.html:75
-#: templates/alsijil/print/full_register.html:312
+#: aleksis/apps/alsijil/forms.py:148
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:52
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:263
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:339
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:312
 msgid "Absent"
 msgstr "Absent(e)"
 
-#: forms.py:143 templates/alsijil/absences/register_confirm.html:56
-#: templates/alsijil/class_register/lesson.html:263
-#: templates/alsijil/class_register/person.html:113
-#: templates/alsijil/class_register/person.html:242
-#: templates/alsijil/partials/mark_as_buttons.html:2
-#: templates/alsijil/partials/mark_as_buttons.html:3
-#: templates/alsijil/partials/persons_with_stats.html:74
-#: templates/alsijil/print/full_register.html:84
-#: templates/alsijil/print/full_register.html:275
+#: aleksis/apps/alsijil/forms.py:149 aleksis/apps/alsijil/tables.py:137
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:74
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:275
 msgid "Excused"
 msgstr "Excusé"
 
-#: forms.py:145 models.py:62 models.py:199
-#: templates/alsijil/class_register/lesson.html:264
-#: templates/alsijil/class_register/lesson.html:305
+#: aleksis/apps/alsijil/forms.py:151 aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:232
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:266
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:307
 #, fuzzy
 #| msgid "Excused"
 msgid "Excuse type"
 msgstr "Excusé"
 
-#: forms.py:150 templates/alsijil/class_register/lesson.html:266
-#: templates/alsijil/class_register/lesson.html:326
-#: templates/alsijil/print/full_register.html:314
+#: aleksis/apps/alsijil/forms.py:156
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:268
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:328
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:314
 msgid "Remarks"
 msgstr "Remarque"
 
-#: forms.py:200 templates/alsijil/absences/register.html:9
-#: templates/alsijil/class_register/lesson.html:260
-#: templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/forms.py:218
+#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:262
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
 msgid "Person"
 msgstr "Personne"
 
-#: forms.py:270
+#: aleksis/apps/alsijil/forms.py:288
 msgid "School term"
 msgstr ""
 
-#: forms.py:271
+#: aleksis/apps/alsijil/forms.py:289
 #, fuzzy
 #| msgid "Lesson documentation"
 msgid "Has lesson documentation"
 msgstr "Documentation de cours"
 
-#: forms.py:273 templates/alsijil/class_register/week_view.html:106
-#: templates/alsijil/class_register/week_view.html:202
-#: templates/alsijil/print/full_register.html:169
-#: templates/alsijil/print/full_register.html:200
-msgid "Subject"
-msgstr "Sujet"
+#: aleksis/apps/alsijil/managers.py:81 aleksis/apps/alsijil/tables.py:121
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:151
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:214
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:268
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:16
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:335
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:415
+#: aleksis/apps/alsijil/util/alsijil_helpers.py:314
+msgid "Event"
+msgstr ""
 
-#: menus.py:6 preferences.py:9 templates/alsijil/print/full_register.html:16
+#: 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"
 
-#: menus.py:16
+#: aleksis/apps/alsijil/menus.py:16
 msgid "Current lesson"
 msgstr "Lecon actuelle"
 
-#: menus.py:27
+#: aleksis/apps/alsijil/menus.py:27
 msgid "Current week"
 msgstr "Semaine actuelle"
 
-#: menus.py:38 templates/alsijil/class_register/groups.html:5
-#: templates/alsijil/class_register/groups.html:8
+#: 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"
 
-#: menus.py:49
+#: aleksis/apps/alsijil/menus.py:49
 #, fuzzy
 #| msgid "Personal overview"
 msgid "My overview"
 msgstr "Vue d'ensemble personnelle"
 
-#: menus.py:60 templates/alsijil/class_register/persons.html:5
-#: templates/alsijil/class_register/persons.html:9
+#: 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 ""
 
-#: menus.py:71 templates/alsijil/group_role/assign.html:11
-#: templates/alsijil/group_role/assign.html:18
+#: aleksis/apps/alsijil/menus.py:71
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
 #, fuzzy
 #| msgid "Persons in group"
 msgid "Assign group role"
 msgstr "Personnes en groupe"
 
-#: menus.py:82 templates/alsijil/class_register/all_objects.html:5
-#: templates/alsijil/class_register/all_objects.html:8
+#: aleksis/apps/alsijil/menus.py:82
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
 msgid "All lessons"
 msgstr ""
 
-#: menus.py:93 models.py:63 templates/alsijil/excuse_type/list.html:8
-#: templates/alsijil/excuse_type/list.html:9
-#: templates/alsijil/partials/legend.html:26
+#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:63
+#: 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:26
 #, fuzzy
 #| msgid "Excused"
 msgid "Excuse types"
 msgstr "Excusé"
 
-#: menus.py:104 models.py:204 models.py:361
-#: templates/alsijil/class_register/lesson.html:265
-#: templates/alsijil/extra_mark/list.html:8
-#: templates/alsijil/extra_mark/list.html:9
-#: templates/alsijil/partials/legend.html:41
-#: templates/alsijil/partials/persons_with_stats.html:19
-#: templates/alsijil/print/full_register.html:293
+#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:237
+#: aleksis/apps/alsijil/models.py:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:267
+#: 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:41
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:293
 msgid "Extra marks"
 msgstr ""
 
-#: menus.py:115
+#: aleksis/apps/alsijil/menus.py:115
 msgid "Manage group roles"
 msgstr ""
 
-#: model_extensions.py:181
+#: aleksis/apps/alsijil/model_extensions.py:180
 msgid "Can view week overview of group class register"
 msgstr ""
 
-#: model_extensions.py:184
+#: aleksis/apps/alsijil/model_extensions.py:183
 msgid "Can view lesson overview of group class register"
 msgstr ""
 
-#: model_extensions.py:186
+#: aleksis/apps/alsijil/model_extensions.py:185
 #, fuzzy
 #| msgid "List of all personal note filters"
 msgid "Can view all personal notes of a group"
 msgstr "Liste de filtres de notes personnelles"
 
-#: model_extensions.py:187
+#: aleksis/apps/alsijil/model_extensions.py:186
 #, fuzzy
 #| msgid "List of all personal note filters"
 msgid "Can edit all personal notes of a group"
 msgstr "Liste de filtres de notes personnelles"
 
-#: model_extensions.py:189
+#: aleksis/apps/alsijil/model_extensions.py:188
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "Can view all lesson documentation of a group"
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: model_extensions.py:192
+#: aleksis/apps/alsijil/model_extensions.py:191
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "Can edit all lesson documentation of a group"
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: model_extensions.py:194
+#: aleksis/apps/alsijil/model_extensions.py:193
 msgid "Can view full register of a group"
 msgstr ""
 
-#: model_extensions.py:196
+#: aleksis/apps/alsijil/model_extensions.py:195
 msgid "Can register an absence for all members of a group"
 msgstr ""
 
-#: model_extensions.py:198
+#: aleksis/apps/alsijil/model_extensions.py:197
 #, fuzzy
 #| msgid "Class register"
 msgid "Can register an absence for a person"
 msgstr "Registre de la classe"
 
-#: models.py:50 models.py:348
+#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:388
 #, fuzzy
 #| msgid "First name"
 msgid "Short name"
 msgstr "Prénom"
 
-#: models.py:51 models.py:349 models.py:367
-#: templates/alsijil/class_register/groups.html:20
-#: templates/alsijil/partials/persons_with_stats.html:14
-#: templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:389
+#: aleksis/apps/alsijil/models.py:413
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
 msgid "Name"
 msgstr ""
 
-#: models.py:183 models.py:266
+#: aleksis/apps/alsijil/models.py:216 aleksis/apps/alsijil/models.py:303
 msgid "Year"
 msgstr ""
 
-#: models.py:238
+#: aleksis/apps/alsijil/models.py:271
 #, fuzzy
 #| msgid "Personal notes"
 msgid "Personal note"
 msgstr "Notes personnelles"
 
-#: models.py:239 templates/alsijil/class_register/lesson.html:114
-#: templates/alsijil/class_register/lesson.html:251
-#: templates/alsijil/class_register/person.html:31
-#: templates/alsijil/class_register/week_view.html:71
-#: templates/alsijil/class_register/week_view.html:317
+#: aleksis/apps/alsijil/models.py:272
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:317
 msgid "Personal notes"
 msgstr "Notes personnelles"
 
-#: models.py:278 templates/alsijil/class_register/lesson.html:147
-#: templates/alsijil/class_register/week_view.html:108
-#: templates/alsijil/class_register/week_view.html:237
-#: templates/alsijil/print/full_register.html:381
+#: aleksis/apps/alsijil/models.py:315
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:149
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:108
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:237
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:381
 msgid "Lesson topic"
 msgstr "Sujet de cours"
 
-#: models.py:279 templates/alsijil/class_register/lesson.html:155
-#: templates/alsijil/class_register/week_view.html:109
-#: templates/alsijil/class_register/week_view.html:243
-#: templates/alsijil/class_register/week_view.html:289
-#: templates/alsijil/print/full_register.html:382
+#: aleksis/apps/alsijil/models.py:316
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:157
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:109
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:243
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:382
 msgid "Homework"
 msgstr "Devoirs"
 
-#: models.py:280 templates/alsijil/class_register/lesson.html:163
-#: templates/alsijil/class_register/week_view.html:110
-#: templates/alsijil/class_register/week_view.html:249
-#: templates/alsijil/class_register/week_view.html:295
+#: aleksis/apps/alsijil/models.py:317
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:165
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:249
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:295
 #, fuzzy
 #| msgid "Group"
 msgid "Group note"
 msgstr "Groupe"
 
-#: models.py:327 templates/alsijil/class_register/lesson.html:110
-#: templates/alsijil/class_register/lesson.html:138
+#: aleksis/apps/alsijil/models.py:363
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:140
 msgid "Lesson documentation"
 msgstr "Documentation de cours"
 
-#: models.py:328 templates/alsijil/class_register/person.html:27
-#: templates/alsijil/class_register/week_view.html:68
+#: aleksis/apps/alsijil/models.py:364
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:68
 #, fuzzy
 #| msgid "Lesson documentation"
 msgid "Lesson documentations"
 msgstr "Documentation de cours"
 
-#: models.py:360
+#: aleksis/apps/alsijil/models.py:400
 msgid "Extra mark"
 msgstr ""
 
-#: models.py:368
+#: aleksis/apps/alsijil/models.py:414
 msgid "Icon"
 msgstr ""
 
-#: models.py:369
+#: aleksis/apps/alsijil/models.py:415
 msgid "Colour"
 msgstr ""
 
-#: models.py:375 models.py:386
-#: templates/alsijil/group_role/assigned_list.html:62
+#: aleksis/apps/alsijil/models.py:421 aleksis/apps/alsijil/models.py:435
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 #, fuzzy
 #| msgid "Group"
 msgid "Group role"
 msgstr "Groupe"
 
-#: models.py:376 templates/alsijil/class_register/lesson.html:125
-#: templates/alsijil/class_register/week_view.html:75
-#: templates/alsijil/group_role/list.html:8
-#: templates/alsijil/group_role/list.html:9
+#: aleksis/apps/alsijil/models.py:422
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:75
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 #, fuzzy
 #| msgid "Group"
 msgid "Group roles"
 msgstr "Groupe"
 
-#: models.py:392
+#: aleksis/apps/alsijil/models.py:441
 #, fuzzy
 #| msgid "Absences"
 msgid "Assigned person"
 msgstr "Absences"
 
-#: models.py:395 templates/alsijil/class_register/week_view.html:104
-#: templates/alsijil/class_register/week_view.html:220
+#: aleksis/apps/alsijil/models.py:444 aleksis/apps/alsijil/tables.py:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:220
 #, fuzzy
 #| msgid "Group"
 msgid "Groups"
 msgstr "Groupe"
 
-#: models.py:402
+#: aleksis/apps/alsijil/models.py:451
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: models.py:417
+#: aleksis/apps/alsijil/models.py:466
 msgid "Group role assignment"
 msgstr ""
 
-#: models.py:418
+#: aleksis/apps/alsijil/models.py:467
 msgid "Group role assignments"
 msgstr ""
 
-#: models.py:425
+#: aleksis/apps/alsijil/models.py:474
 msgid "Can view week overview"
 msgstr ""
 
-#: models.py:426
+#: aleksis/apps/alsijil/models.py:475
 #, fuzzy
 #| msgid "Register absence"
 msgid "Can register absence"
 msgstr "Registre de Absence"
 
-#: models.py:427
+#: aleksis/apps/alsijil/models.py:476
 #, fuzzy
 #| msgid "List of all personal note filters"
 msgid "Can list all personal note filters"
 msgstr "Liste de filtres de notes personnelles"
 
-#: preferences.py:17
+#: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr ""
 
-#: preferences.py:25
+#: aleksis/apps/alsijil/preferences.py:25
 msgid "Allow users to view their own personal notes"
 msgstr ""
 
-#: preferences.py:34
+#: aleksis/apps/alsijil/preferences.py:34
 msgid "Allow primary group owners to register future absences for students in their groups"
 msgstr ""
 
-#: preferences.py:43
+#: aleksis/apps/alsijil/preferences.py:43
 msgid "Allow original teachers to edit their lessons although they are substituted"
 msgstr ""
 
-#: preferences.py:52
+#: aleksis/apps/alsijil/preferences.py:52
 msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
 msgstr ""
 
-#: preferences.py:55
+#: aleksis/apps/alsijil/preferences.py:55
 msgid "This will carry over data only if the data in the following periods are empty."
 msgstr ""
 
-#: preferences.py:63
+#: aleksis/apps/alsijil/preferences.py:63
 msgid "Carry over personal notes to all following lesson periods on the same day."
 msgstr ""
 
-#: preferences.py:72
+#: aleksis/apps/alsijil/preferences.py:72
 msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
 msgstr ""
 
-#: preferences.py:76
+#: aleksis/apps/alsijil/preferences.py:76
 msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
 msgstr ""
 
-#: preferences.py:85
+#: aleksis/apps/alsijil/preferences.py:85
 #, fuzzy
 #| msgid "Teachers and lessons in group"
 msgid "Allow teachers to add data for lessons in holidays"
 msgstr "Profs et cours en groupe"
 
-#: preferences.py:94
+#: aleksis/apps/alsijil/preferences.py:94
 msgid "Allow group owners to assign group roles to the parents of the group's members"
 msgstr ""
 
-#: preferences.py:103
+#: aleksis/apps/alsijil/preferences.py:103
 msgid "Show assigned group roles in week view"
 msgstr ""
 
-#: preferences.py:104
+#: aleksis/apps/alsijil/preferences.py:104
 msgid "Only week view of groups"
 msgstr ""
 
-#: preferences.py:112
+#: aleksis/apps/alsijil/preferences.py:112
 msgid "Show assigned group roles in lesson view"
 msgstr ""
 
-#: preferences.py:122
+#: aleksis/apps/alsijil/preferences.py:122
 msgid "Items per page in lessons table"
 msgstr ""
 
-#: preferences.py:126
+#: aleksis/apps/alsijil/preferences.py:126
 msgid "Each page must show at least one item."
 msgstr ""
 
-#: tables.py:19 tables.py:39 tables.py:64
-#: templates/alsijil/group_role/partials/assignment_options.html:13
+#: aleksis/apps/alsijil/preferences.py:134
+msgid "Filter lessons by existence of their lesson documentation on default"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:43
+#: aleksis/apps/alsijil/tables.py:68
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
 msgid "Edit"
 msgstr ""
 
-#: tables.py:25 tables.py:45 tables.py:70
-#: templates/alsijil/class_register/person.html:276
-#: templates/alsijil/group_role/partials/assignment_options.html:29
-msgid "Delete"
+#: aleksis/apps/alsijil/tables.py:92
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:308
+msgid "Date"
+msgstr "Date"
+
+#: aleksis/apps/alsijil/tables.py:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:102
+msgid "Period"
+msgstr "Période"
+
+#: aleksis/apps/alsijil/tables.py:103
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:231
+msgid "Teachers"
+msgstr "Profs"
+
+#: aleksis/apps/alsijil/tables.py:110
+#, fuzzy
+#| msgid "Excused"
+msgid "Excuse"
+msgstr "Excusé"
+
+#: aleksis/apps/alsijil/tables.py:147
+#, python-brace-format
+msgid "{value}' late"
 msgstr ""
 
-#: templates/alsijil/absences/register.html:5
-#: templates/alsijil/absences/register.html:6
-#: templates/alsijil/class_register/person.html:46
-#: templates/alsijil/class_register/week_view.html:332
-#: templates/alsijil/partials/persons_with_stats.html:115
+#: 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:327
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:115
 msgid "Register absence"
 msgstr "Registre de Absence"
 
-#: templates/alsijil/absences/register_confirm.html:5
-#: templates/alsijil/absences/register_confirm.html:6
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:5
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:6
 #, fuzzy
 #| msgid "Register absence"
 msgid "Confirm: Register absence"
 msgstr "Registre de Absence"
 
-#: templates/alsijil/absences/register_confirm.html:10
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:10
 msgid ""
 "\n"
 "      Do you really want to register the following absence?\n"
 "    "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:27
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:27
 msgid ""
 "\n"
 "                  As the length of this absence is longer than one day,\n"
@@ -544,12 +646,12 @@ msgid ""
 "                "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:37
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:37
 #, python-format
 msgid " %(count)s affected lessons "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:42
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:42
 #, fuzzy
 #| msgid ""
 #| "\n"
@@ -564,101 +666,90 @@ msgstr ""
 "            Il n' y a pas des cours pour le groupe sélectionné, les profs, le salle ou le temps.\n"
 "          "
 
-#: templates/alsijil/absences/register_confirm.html:59
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:59
 msgid "Reset status to 'not absent'"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:81
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:81
 msgid "Cancel"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:35
-#: templates/alsijil/class_register/groups.html:76
-#: templates/alsijil/class_register/week_view.html:40
-#: templates/alsijil/class_register/week_view.html:51
+#: 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:40
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
 msgid "Students list"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:39
-#: templates/alsijil/class_register/groups.html:82
-#: templates/alsijil/class_register/persons.html:27
-#: templates/alsijil/class_register/persons.html:43
-#: templates/alsijil/class_register/students_list.html:16
-#: templates/alsijil/class_register/students_list.html:35
-#: templates/alsijil/class_register/week_view.html:6
+#: 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/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
 msgid "Week view"
 msgstr "Vue de semaine"
 
-#: templates/alsijil/class_register/groups.html:45
-#: templates/alsijil/class_register/groups.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:45
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:90
 msgid "Roles"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:51
-#: templates/alsijil/class_register/groups.html:98
-#: templates/alsijil/class_register/persons.html:31
-#: templates/alsijil/class_register/persons.html:50
-#: templates/alsijil/class_register/students_list.html:20
-#: templates/alsijil/class_register/students_list.html:42
-#: templates/alsijil/class_register/week_view.html:44
-#: templates/alsijil/class_register/week_view.html:58
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:31
+#: 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:44
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:58
 msgid "Generate printout"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:59
-#: templates/alsijil/class_register/groups.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:59
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:104
 msgid "No groups available."
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:71
 msgid "students"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:5
 msgid "Lesson"
 msgstr "Cours"
 
-#: templates/alsijil/class_register/lesson.html:20
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:20
 #, fuzzy
 #| msgid "Week view"
 msgid "Back to week view"
 msgstr "Vue de semaine"
 
-#: templates/alsijil/class_register/lesson.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:29
 #, fuzzy
 #| msgid "Current lesson"
 msgid "My previous lesson"
 msgstr "Lecon actuelle"
 
-#: templates/alsijil/class_register/lesson.html:38
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:38
 #, fuzzy
 #| msgid "Current lesson"
 msgid "My next lesson"
 msgstr "Lecon actuelle"
 
-#: templates/alsijil/class_register/lesson.html:50
-#: templates/alsijil/class_register/lesson.html:185
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:50
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:187
 #, fuzzy, python-format
 #| msgid "From period"
 msgid "%(period)s. period"
 msgstr "De la période"
 
-#: templates/alsijil/class_register/lesson.html:56
-#: templates/alsijil/class_register/person.html:206
-#: templates/alsijil/class_register/week_view.html:151
-#: templates/alsijil/class_register/week_view.html:214
-#: templates/alsijil/class_register/week_view.html:268
-#: templates/alsijil/partials/lesson_status_icon.html:16
-#: templates/alsijil/print/full_register.html:335
-#: templates/alsijil/print/full_register.html:415 util/alsijil_helpers.py:316
-msgid "Event"
-msgstr ""
-
-#: templates/alsijil/class_register/lesson.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:85
 #, python-format
 msgid ""
 "\n"
@@ -666,7 +757,7 @@ msgid ""
 "          "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:95
 #, python-format
 msgid ""
 "\n"
@@ -674,59 +765,59 @@ msgid ""
 "          "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:120
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:121
 #, fuzzy
 #| msgid "Current lesson"
 msgid "Previous lesson"
 msgstr "Lecon actuelle"
 
-#: templates/alsijil/class_register/lesson.html:129
-#: templates/alsijil/class_register/lesson.html:378
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:131
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:380
 msgid "Change history"
 msgstr "Changement d' histoire"
 
-#: templates/alsijil/class_register/lesson.html:184
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:186
 msgid "Overview: Previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:191
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:193
 msgid "Lesson topic of previous lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:198
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:200
 msgid "Homework for this lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:205
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:207
 msgid "Group notes for previous lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:212
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:214
 #, fuzzy
 #| msgid "Absences"
 msgid "Absent persons:"
 msgstr "Absences"
 
-#: templates/alsijil/class_register/lesson.html:219
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:221
 msgid "Late persons:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:262
-#: templates/alsijil/class_register/person.html:125
-#: templates/alsijil/partials/persons_with_stats.html:17
-#: templates/alsijil/partials/persons_with_stats.html:34
-#: templates/alsijil/partials/persons_with_stats.html:91
-#: templates/alsijil/print/full_register.html:287
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:264
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:146
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:17
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:34
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:91
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:287
 msgid "Tardiness"
 msgstr "Retard"
 
-#: templates/alsijil/class_register/lesson.html:291
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:293
 #, fuzzy
 #| msgid "Tardiness"
 msgid "Tardiness (in m)"
 msgstr "Retard"
 
-#: templates/alsijil/class_register/lesson.html:397
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:399
 #, python-format
 msgid ""
 "\n"
@@ -734,7 +825,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:407
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:409
 #, python-format
 msgid ""
 "\n"
@@ -742,7 +833,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:423
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:425
 #, fuzzy
 #| msgid ""
 #| "\n"
@@ -757,143 +848,116 @@ msgstr ""
 "            Il n' y a pas des cours pour le groupe sélectionné, les profs, le salle ou le temps.\n"
 "          "
 
-#: templates/alsijil/class_register/person.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:10
 #, fuzzy
 #| msgid "Class register"
 msgid "Class register: person"
 msgstr "Registre de la classe"
 
-#: templates/alsijil/class_register/person.html:13
-#: templates/alsijil/class_register/students_list.html:10
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:18
+#: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:10
 msgid "Back"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:16
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:22
 #, python-format
 msgid ""
 "\n"
-"    Class register overview for %(person)s\n"
-"  "
+"      Class register overview for %(person)s\n"
+"    "
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:52
-#: templates/alsijil/partials/legend.html:14
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:50
+msgid "Statistics"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:65
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:304
+msgid "Relevant personal notes"
+msgstr "Notes personnelles importantes"
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:68
 #, fuzzy
-#| msgid "Unexcused"
-msgid "Unexcused absences"
-msgstr "injustifié(e)"
+#| msgid "Relevant personal notes"
+msgid "Filter personal notes"
+msgstr "Notes personnelles importantes"
 
-#: templates/alsijil/class_register/person.html:61
-#: templates/alsijil/class_register/person.html:80
-#: templates/alsijil/class_register/person.html:217
-#: templates/alsijil/class_register/person.html:264
-msgid "Mark as"
-msgstr ""
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:73
+#, fuzzy
+#| msgid "Personal note filters"
+msgid "Clear all filters"
+msgstr "Filtres de notes personnelles"
 
-#: templates/alsijil/class_register/person.html:64
-#: templates/alsijil/class_register/person.html:83
-#: templates/alsijil/class_register/person.html:220
-#: templates/alsijil/class_register/person.html:226
-#: templates/alsijil/class_register/person.html:267
-#: templates/alsijil/class_register/person.html:273
-msgid "Delete note"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:76
+msgid "Close"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:93
-msgid "There are no unexcused lessons."
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:79
+msgid "Filter"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
 msgid "Statistics on absences, tardiness and remarks"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:107
-#: templates/alsijil/partials/legend.html:10
-#: templates/alsijil/partials/persons_with_stats.html:16
-#: templates/alsijil/partials/persons_with_stats.html:26
-#: templates/alsijil/partials/persons_with_stats.html:69
-#: templates/alsijil/print/full_register.html:269
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:269
 msgid "Absences"
 msgstr "Absences"
 
-#: templates/alsijil/class_register/person.html:111
-#: templates/alsijil/print/full_register.html:274
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:274
 msgid "thereof"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:121
-#: templates/alsijil/partials/persons_with_stats.html:86
-#: templates/alsijil/print/full_register.html:81
-#: templates/alsijil/print/full_register.html:283
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:142
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:86
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:283
 msgid "Unexcused"
 msgstr "injustifié(e)"
 
-#: templates/alsijil/class_register/person.html:142
-#: templates/alsijil/print/full_register.html:304
-msgid "Relevant personal notes"
-msgstr "Notes personnelles importantes"
-
-#: templates/alsijil/class_register/person.html:158
-#, python-format
-msgid "Week %(week)s"
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:166
-#: templates/alsijil/class_register/person.html:184
-msgid "Mark all as"
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:249
-#, python-format
-msgid "%(late)s' late"
-msgstr ""
-
-#: templates/alsijil/class_register/students_list.html:5
-#: templates/alsijil/class_register/students_list.html:12
+#: 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 ""
 
-#: templates/alsijil/class_register/week_view.html:23
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:23
 msgid "Select"
 msgstr "Sélectionner"
 
-#: templates/alsijil/class_register/week_view.html:31
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 #, python-format
 msgid ""
 "CW %(week)s:\n"
 "      %(instance)s"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:102
-msgid "Period"
-msgstr "Période"
-
-#: templates/alsijil/class_register/week_view.html:107
-#: templates/alsijil/class_register/week_view.html:231
-msgid "Teachers"
-msgstr "Profs"
-
-#: templates/alsijil/class_register/week_view.html:343
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:340
 msgid "unexcused"
 msgstr "Injustifié(e)"
 
-#: templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:343
 msgid "Summed up tardiness"
 msgstr "Résumé des retards"
 
-#: templates/alsijil/class_register/week_view.html:349
-#: templates/alsijil/partials/persons_with_stats.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:94
 #, fuzzy
 #| msgid "Summed up tardiness"
 msgid "Count of tardiness"
 msgstr "Résumé des retards"
 
-#: templates/alsijil/class_register/week_view.html:383
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:378
 msgid "No lessons available"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:386
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:381
 #, fuzzy
 #| msgid ""
 #| "\n"
@@ -908,19 +972,19 @@ msgstr ""
 "            Il n' y a pas des cours pour le groupe sélectionné, les profs, le salle ou le temps.\n"
 "          "
 
-#: templates/alsijil/excuse_type/create.html:6
-#: templates/alsijil/excuse_type/create.html:7
-#: templates/alsijil/excuse_type/list.html:18
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:18
 msgid "Create excuse type"
 msgstr ""
 
-#: templates/alsijil/excuse_type/edit.html:6
-#: templates/alsijil/excuse_type/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:7
 msgid "Edit excuse type"
 msgstr ""
 
-#: templates/alsijil/excuse_type/warning.html:5
-#: templates/alsijil/group_role/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/group_role/warning.html:5
 msgid ""
 "\n"
 "      This function should only be used to define alternatives to the default excuse which also will be counted extra.\n"
@@ -928,79 +992,79 @@ msgid ""
 "    "
 msgstr ""
 
-#: templates/alsijil/extra_mark/create.html:6
-#: templates/alsijil/extra_mark/create.html:7
-#: templates/alsijil/extra_mark/list.html:14
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:14
 msgid "Create extra mark"
 msgstr ""
 
-#: templates/alsijil/extra_mark/edit.html:6
-#: templates/alsijil/extra_mark/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:7
 msgid "Edit extra mark"
 msgstr ""
 
-#: templates/alsijil/group_role/assign.html:9
-#: templates/alsijil/group_role/assign.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:16
 #, python-format
 msgid "Assign group role for %(group)s"
 msgstr ""
 
-#: templates/alsijil/group_role/assign.html:34
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:9
-#: templates/alsijil/group_role/assigned_list.html:12
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:12
 #, python-format
 msgid "Group roles for %(group)s"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:28
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:28
 #, fuzzy
 #| msgid "Group"
 msgid "Back to my groups"
 msgstr "Groupe"
 
-#: templates/alsijil/group_role/assigned_list.html:36
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:36
 msgid "Assign a role to a person"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:45
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:45
 #, fuzzy
 #| msgid "Current lesson"
 msgid "Current roles"
 msgstr "Lecon actuelle"
 
-#: templates/alsijil/group_role/assigned_list.html:48
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:48
 msgid "All assignments"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:66
-#: templates/alsijil/group_role/assigned_list.html:83
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:66
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:83
 msgid "Actions"
 msgstr ""
 
-#: templates/alsijil/group_role/create.html:6
-#: templates/alsijil/group_role/create.html:7
-#: templates/alsijil/group_role/list.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:16
 msgid "Create group role"
 msgstr ""
 
-#: templates/alsijil/group_role/edit.html:6
-#: templates/alsijil/group_role/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:7
 msgid "Edit group role"
 msgstr ""
 
-#: templates/alsijil/group_role/edit_assignment.html:7
-#: templates/alsijil/group_role/edit_assignment.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:8
 msgid "Edit group role assignment"
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:31
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:31
 msgid "No one assigned."
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:42
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:42
 msgid ""
 "\n"
 "      You can get some additional actions for each group role assignment if you click on the name of the\n"
@@ -1008,134 +1072,133 @@ msgid ""
 "    "
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assignment_options.html:21
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:21
 msgid "Stop"
 msgstr ""
 
-#: templates/alsijil/notifications/check.html:1
+#: aleksis/apps/alsijil/templates/alsijil/notifications/check.html:1
 msgid "Please check if the following class register entries are complete and correct:"
 msgstr ""
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:27
-#: templates/alsijil/partials/persons_with_stats.html:44
-#: templates/alsijil/print/full_register.html:126
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:44
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:126
 msgid "(e)"
 msgstr ""
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:33
-#: templates/alsijil/partials/persons_with_stats.html:50
-#: templates/alsijil/print/full_register.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:130
 msgid "(u)"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:4
 msgid "Legend"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:7
-#: templates/alsijil/print/full_register.html:71
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:7
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:71
 msgid "General"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:18
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
+#, fuzzy
+#| msgid "Unexcused"
+msgid "Unexcused absences"
+msgstr "injustifié(e)"
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
 #, fuzzy
 #| msgid "Unexcused"
 msgid "Excused absences"
 msgstr "injustifié(e)"
 
-#: templates/alsijil/partials/lesson_status_icon.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:6
 msgid "Data complete"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:12
-#: templates/alsijil/partials/lesson_status_icon.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:12
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:25
 msgid "Missing data"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:14
-#: templates/alsijil/partials/lesson_status_icon.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:27
 msgid "Pending"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:23
-#: templates/alsijil/print/full_register.html:426
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:23
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:426
 msgid "Lesson cancelled"
 msgstr "Cours annulés"
 
-#: templates/alsijil/partials/lesson_status_icon.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:29
 msgid "Substitution"
 msgstr ""
 
-#: templates/alsijil/partials/mark_as_buttons.html:4
-#: templates/alsijil/print/full_register.html:346
-#: templates/alsijil/print/full_register.html:444
-#: templates/alsijil/print/full_register.html:459
-msgid "e"
-msgstr "e"
-
-#: templates/alsijil/partials/objects_table.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:4
 #, fuzzy
 #| msgid "Lesson start"
 msgid "Lesson filter"
 msgstr "Début de cours"
 
-#: templates/alsijil/partials/objects_table.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:9
 #, fuzzy
 #| msgid "Personal note filters"
 msgid "Update filters"
 msgstr "Filtres de notes personnelles"
 
-#: templates/alsijil/partials/objects_table.html:22
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:22
 #, fuzzy
 #| msgid "Lesson start"
 msgid "Lesson table"
 msgstr "Début de cours"
 
-#: templates/alsijil/partials/objects_table.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:31
 msgid "Execute"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:7
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:7
 msgid "No students available."
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:15
-#: templates/alsijil/partials/persons_with_stats.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 #, fuzzy
 #| msgid "Group"
 msgid "Primary group"
 msgstr "Groupe"
 
-#: templates/alsijil/partials/persons_with_stats.html:43
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:43
 msgid "Sum"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:107
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:107
 msgid "Show more details"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:108
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:108
 msgid "Details"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:6
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:6
 #, fuzzy
 #| msgid "Class register"
 msgid "Class register:"
 msgstr "Registre de la classe"
 
-#: templates/alsijil/print/full_register.html:26
-#: templates/alsijil/print/full_register.html:59
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:26
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:59
 msgid "Owners"
 msgstr "Propriétaires"
 
-#: templates/alsijil/print/full_register.html:30
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:30
 msgid "Printed on"
 msgstr "Imprimé sur"
 
-#: templates/alsijil/print/full_register.html:38
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:38
 msgid ""
 "\n"
 "        This printout is intended for archival purposes. The main copy of\n"
@@ -1144,7 +1207,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:45
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:45
 msgid ""
 "\n"
 "        Copies of the class register, both digital and as printout, must\n"
@@ -1153,7 +1216,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:52
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:52
 msgid ""
 "\n"
 "        The owner of the group and the headteacher confirm the above, as\n"
@@ -1161,233 +1224,227 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:62
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:62
 msgid "Headteacher"
 msgstr "Prof principale"
 
-#: templates/alsijil/print/full_register.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:69
 msgid "Abbreviations"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:78
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:78
 msgid "Late"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:89
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:89
 msgid "Custom excuse types"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:101
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:101
 msgid "Available extra marks"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:115
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:115
 msgid "Persons in group"
 msgstr "Personnes en groupe"
 
-#: templates/alsijil/print/full_register.html:120
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:120
 msgid "No."
 msgstr "Non."
 
-#: templates/alsijil/print/full_register.html:121
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:121
 msgid "Last name"
 msgstr "Nom de famille"
 
-#: templates/alsijil/print/full_register.html:122
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:122
 msgid "First name"
 msgstr "Prénom"
 
-#: templates/alsijil/print/full_register.html:123
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:123
 msgid "Sex"
 msgstr "Sexe"
 
-#: templates/alsijil/print/full_register.html:124
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:124
 msgid "Date of birth"
 msgstr "Date d'anniversaire"
 
-#: templates/alsijil/print/full_register.html:125
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:125
 msgid "(a)"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:131
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:131
 msgid "(b)"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:164
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:164
 msgid "Teachers and lessons in group"
 msgstr "Profs et cours en groupe"
 
-#: templates/alsijil/print/full_register.html:171
-#: templates/alsijil/print/full_register.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:171
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:202
 msgid "Lesson start"
 msgstr "Début de cours"
 
-#: templates/alsijil/print/full_register.html:172
-#: templates/alsijil/print/full_register.html:203
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:172
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:203
 msgid "Lesson end"
 msgstr "Fin de cours"
 
-#: templates/alsijil/print/full_register.html:173
-#: templates/alsijil/print/full_register.html:204
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:173
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:204
 msgid "Per week"
 msgstr "Par semaine"
 
-#: templates/alsijil/print/full_register.html:194
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:194
 #, fuzzy
 #| msgid "Teachers and lessons in group"
 msgid "Teachers and lessons in child groups"
 msgstr "Profs et cours en groupe"
 
-#: templates/alsijil/print/full_register.html:227
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:227
 msgid "Personal overview"
 msgstr "Vue d'ensemble personnelle"
 
-#: templates/alsijil/print/full_register.html:229
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:229
 msgid "Contact details"
 msgstr "Détails de contact"
 
-#: templates/alsijil/print/full_register.html:266
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:266
 msgid "Absences and tardiness"
 msgstr "Absences et retards"
 
-#: templates/alsijil/print/full_register.html:308
-msgid "Date"
-msgstr "Date"
-
-#: templates/alsijil/print/full_register.html:309
-#: templates/alsijil/print/full_register.html:379
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:309
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:379
 msgid "Pe."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:310
-#: templates/alsijil/print/full_register.html:380
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:310
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:380
 msgid "Subj."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:311
-#: templates/alsijil/print/full_register.html:384
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:311
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:384
 msgid "Te."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:313
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Tard."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:341
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:341
 msgid "Yes"
 msgstr "Oui"
 
-#: templates/alsijil/print/full_register.html:373
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:346
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:444
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:459
+msgid "e"
+msgstr "e"
+
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:373
 #, fuzzy
 #| msgid "Week view"
 msgid "Week"
 msgstr "Vue de semaine"
 
-#: templates/alsijil/print/full_register.html:383
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:383
 msgid "Notes"
 msgstr "Notes"
 
-#: views.py:108
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: views.py:141
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: views.py:225
+#: aleksis/apps/alsijil/views.py:241
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The lesson documentation has been saved."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: views.py:259
+#: aleksis/apps/alsijil/views.py:275
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: views.py:782
-msgid "The absences have been marked as excused."
-msgstr ""
-
-#: views.py:797
-msgid "The absence has been marked as excused."
-msgstr ""
-
-#: views.py:988
+#: aleksis/apps/alsijil/views.py:1029
 msgid "The absence has been saved."
 msgstr ""
 
-#: views.py:1009
+#: aleksis/apps/alsijil/views.py:1050
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The personal note has been deleted."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: views.py:1031
+#: aleksis/apps/alsijil/views.py:1072
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The extra mark has been created."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: views.py:1043
+#: aleksis/apps/alsijil/views.py:1084
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The extra mark has been saved."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: views.py:1054
+#: aleksis/apps/alsijil/views.py:1095
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: views.py:1075
+#: aleksis/apps/alsijil/views.py:1116
 msgid "The excuse type has been created."
 msgstr ""
 
-#: views.py:1087
+#: aleksis/apps/alsijil/views.py:1128
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: views.py:1098
+#: aleksis/apps/alsijil/views.py:1139
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: views.py:1119
+#: aleksis/apps/alsijil/views.py:1160
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role has been created."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: views.py:1131
+#: aleksis/apps/alsijil/views.py:1172
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role has been saved."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: views.py:1142
+#: aleksis/apps/alsijil/views.py:1183
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role has been deleted."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: views.py:1175 views.py:1207
+#: aleksis/apps/alsijil/views.py:1216 aleksis/apps/alsijil/views.py:1248
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role has been assigned."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: views.py:1226
+#: aleksis/apps/alsijil/views.py:1267
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role assignment has been saved."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: views.py:1247
+#: aleksis/apps/alsijil/views.py:1288
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role assignment has been stopped."
 msgstr "Documentation de cours pour la semaine calendrier"
 
-#: views.py:1260
+#: aleksis/apps/alsijil/views.py:1301
 #, fuzzy
 #| msgid "Lesson documentation for calendar week"
 msgid "The group role assignment has been deleted."
@@ -1398,9 +1455,6 @@ msgstr "Documentation de cours pour la semaine calendrier"
 #~ msgid "Lesson documentation for week"
 #~ msgstr "Documentation de cours pour la semaine calendrier"
 
-#~ msgid "Personal note filters"
-#~ msgstr "Filtres de notes personnelles"
-
 #~ msgid "Identifier"
 #~ msgstr "Identificateur"
 
diff --git a/aleksis/apps/alsijil/locale/la/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/la/LC_MESSAGES/django.po
index 1876deb1661e1ead85c5ba1be9828bc06feb04ef..44aed60fac7d67d8daed7afe1583a857ecf38d40 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: 2021-03-21 14:38+0100\n"
+"POT-Creation-Date: 2021-06-08 16:49+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"
@@ -18,479 +18,573 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 4.0.1\n"
 
-#: actions.py:30
+#: aleksis/apps/alsijil/actions.py:17
+msgid "Mark as excused"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:24
+msgid "Mark as unexcused"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:31
+#, python-brace-format
+msgid "Mark as {excuse_type.name}"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:41 aleksis/apps/alsijil/tables.py:29
+#: aleksis/apps/alsijil/tables.py:49 aleksis/apps/alsijil/tables.py:74
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:29
+msgid "Delete"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:61
 msgid "{} asks you to check some class register entries."
 msgstr ""
 
-#: actions.py:48
+#: aleksis/apps/alsijil/actions.py:79
 #, python-brace-format
 msgid "We have successfully sent notifications to {count_teachers} persons for {count_items} lessons."
 msgstr ""
 
-#: actions.py:54
+#: aleksis/apps/alsijil/actions.py:85
 msgid "Ask teacher to check data"
 msgstr ""
 
-#: data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:12
 msgid "Delete object"
 msgstr ""
 
-#: data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:22
 msgid "Set current groups"
 msgstr ""
 
-#: data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:33
 msgid "Reset personal note to defaults"
 msgstr ""
 
-#: data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:45
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr ""
 
-#: data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:46
 msgid "The personal note is related to a cancelled lesson."
 msgstr ""
 
-#: data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:73
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr ""
 
-#: data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:74
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr ""
 
-#: data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:99
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr ""
 
-#: data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:100
 msgid "The lesson documentation is on holidays."
 msgstr ""
 
-#: data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:133
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr ""
 
-#: data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:134
 msgid "The personal note is on holidays."
 msgstr ""
 
-#: data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:162
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr ""
 
-#: data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:163
 msgid "The personal note is marked as excused, but not as absent."
 msgstr ""
 
-#: forms.py:41
+#: aleksis/apps/alsijil/filters.py:10
+msgid "After"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:11
+msgid "Before"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:12 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/tables.py:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:106
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:169
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:200
+msgid "Subject"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:16
+msgid "Tardiness is lower than"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:17
+msgid "Tardiness is bigger than"
+msgstr ""
+
+#: aleksis/apps/alsijil/forms.py:47
 msgid "Homework for the next lesson"
 msgstr ""
 
-#: forms.py:66 forms.py:190 forms.py:272
-#: templates/alsijil/print/full_register.html:199
+#: aleksis/apps/alsijil/forms.py:72 aleksis/apps/alsijil/forms.py:208
+#: aleksis/apps/alsijil/forms.py:290
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:199
 msgid "Group"
 msgstr "Grex"
 
-#: forms.py:69 templates/alsijil/print/full_register.html:170
-#: templates/alsijil/print/full_register.html:201
+#: aleksis/apps/alsijil/forms.py:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:170
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:201
 msgid "Teacher"
 msgstr ""
 
-#: forms.py:84
+#: aleksis/apps/alsijil/forms.py:90
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: forms.py:138 forms.py:274 models.py:397
-#: templates/alsijil/group_role/assigned_list.html:64
+#: aleksis/apps/alsijil/forms.py:144 aleksis/apps/alsijil/forms.py:292
+#: aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: forms.py:139 forms.py:275 models.py:401
-#: templates/alsijil/group_role/assigned_list.html:65
+#: aleksis/apps/alsijil/forms.py:145 aleksis/apps/alsijil/forms.py:293
+#: aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: forms.py:140
+#: aleksis/apps/alsijil/forms.py:146
 msgid "Start period"
 msgstr ""
 
-#: forms.py:141
+#: aleksis/apps/alsijil/forms.py:147
 msgid "End period"
 msgstr ""
 
-#: forms.py:142 templates/alsijil/absences/register_confirm.html:52
-#: templates/alsijil/class_register/lesson.html:261
-#: templates/alsijil/class_register/person.html:234
-#: templates/alsijil/class_register/week_view.html:342
-#: templates/alsijil/print/full_register.html:75
-#: templates/alsijil/print/full_register.html:312
+#: aleksis/apps/alsijil/forms.py:148
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:52
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:263
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:339
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:312
 msgid "Absent"
 msgstr ""
 
-#: forms.py:143 templates/alsijil/absences/register_confirm.html:56
-#: templates/alsijil/class_register/lesson.html:263
-#: templates/alsijil/class_register/person.html:113
-#: templates/alsijil/class_register/person.html:242
-#: templates/alsijil/partials/mark_as_buttons.html:2
-#: templates/alsijil/partials/mark_as_buttons.html:3
-#: templates/alsijil/partials/persons_with_stats.html:74
-#: templates/alsijil/print/full_register.html:84
-#: templates/alsijil/print/full_register.html:275
+#: aleksis/apps/alsijil/forms.py:149 aleksis/apps/alsijil/tables.py:137
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:74
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:275
 msgid "Excused"
 msgstr ""
 
-#: forms.py:145 models.py:62 models.py:199
-#: templates/alsijil/class_register/lesson.html:264
-#: templates/alsijil/class_register/lesson.html:305
+#: aleksis/apps/alsijil/forms.py:151 aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:232
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:266
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:307
 msgid "Excuse type"
 msgstr ""
 
-#: forms.py:150 templates/alsijil/class_register/lesson.html:266
-#: templates/alsijil/class_register/lesson.html:326
-#: templates/alsijil/print/full_register.html:314
+#: aleksis/apps/alsijil/forms.py:156
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:268
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:328
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:314
 msgid "Remarks"
 msgstr ""
 
-#: forms.py:200 templates/alsijil/absences/register.html:9
-#: templates/alsijil/class_register/lesson.html:260
-#: templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/forms.py:218
+#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:262
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
 msgid "Person"
 msgstr "Persona"
 
-#: forms.py:270
+#: aleksis/apps/alsijil/forms.py:288
 msgid "School term"
 msgstr ""
 
-#: forms.py:271
+#: aleksis/apps/alsijil/forms.py:289
 msgid "Has lesson documentation"
 msgstr ""
 
-#: forms.py:273 templates/alsijil/class_register/week_view.html:106
-#: templates/alsijil/class_register/week_view.html:202
-#: templates/alsijil/print/full_register.html:169
-#: templates/alsijil/print/full_register.html:200
-msgid "Subject"
+#: aleksis/apps/alsijil/managers.py:81 aleksis/apps/alsijil/tables.py:121
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:151
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:214
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:268
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:16
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:335
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:415
+#: aleksis/apps/alsijil/util/alsijil_helpers.py:314
+msgid "Event"
 msgstr ""
 
-#: menus.py:6 preferences.py:9 templates/alsijil/print/full_register.html:16
+#: 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 ""
 
-#: menus.py:16
+#: aleksis/apps/alsijil/menus.py:16
 msgid "Current lesson"
 msgstr ""
 
-#: menus.py:27
+#: aleksis/apps/alsijil/menus.py:27
 msgid "Current week"
 msgstr ""
 
-#: menus.py:38 templates/alsijil/class_register/groups.html:5
-#: templates/alsijil/class_register/groups.html:8
+#: 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"
 
-#: menus.py:49
+#: aleksis/apps/alsijil/menus.py:49
 msgid "My overview"
 msgstr ""
 
-#: menus.py:60 templates/alsijil/class_register/persons.html:5
-#: templates/alsijil/class_register/persons.html:9
+#: 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 ""
 
-#: menus.py:71 templates/alsijil/group_role/assign.html:11
-#: templates/alsijil/group_role/assign.html:18
+#: aleksis/apps/alsijil/menus.py:71
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
 msgid "Assign group role"
 msgstr ""
 
-#: menus.py:82 templates/alsijil/class_register/all_objects.html:5
-#: templates/alsijil/class_register/all_objects.html:8
+#: aleksis/apps/alsijil/menus.py:82
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
 msgid "All lessons"
 msgstr ""
 
-#: menus.py:93 models.py:63 templates/alsijil/excuse_type/list.html:8
-#: templates/alsijil/excuse_type/list.html:9
-#: templates/alsijil/partials/legend.html:26
+#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:63
+#: 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:26
 msgid "Excuse types"
 msgstr ""
 
-#: menus.py:104 models.py:204 models.py:361
-#: templates/alsijil/class_register/lesson.html:265
-#: templates/alsijil/extra_mark/list.html:8
-#: templates/alsijil/extra_mark/list.html:9
-#: templates/alsijil/partials/legend.html:41
-#: templates/alsijil/partials/persons_with_stats.html:19
-#: templates/alsijil/print/full_register.html:293
+#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:237
+#: aleksis/apps/alsijil/models.py:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:267
+#: 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:41
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:293
 msgid "Extra marks"
 msgstr ""
 
-#: menus.py:115
+#: aleksis/apps/alsijil/menus.py:115
 msgid "Manage group roles"
 msgstr ""
 
-#: model_extensions.py:181
+#: aleksis/apps/alsijil/model_extensions.py:180
 msgid "Can view week overview of group class register"
 msgstr ""
 
-#: model_extensions.py:184
+#: aleksis/apps/alsijil/model_extensions.py:183
 msgid "Can view lesson overview of group class register"
 msgstr ""
 
-#: model_extensions.py:186
+#: aleksis/apps/alsijil/model_extensions.py:185
 msgid "Can view all personal notes of a group"
 msgstr ""
 
-#: model_extensions.py:187
+#: aleksis/apps/alsijil/model_extensions.py:186
 msgid "Can edit all personal notes of a group"
 msgstr ""
 
-#: model_extensions.py:189
+#: aleksis/apps/alsijil/model_extensions.py:188
 msgid "Can view all lesson documentation of a group"
 msgstr ""
 
-#: model_extensions.py:192
+#: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can edit all lesson documentation of a group"
 msgstr ""
 
-#: model_extensions.py:194
+#: aleksis/apps/alsijil/model_extensions.py:193
 msgid "Can view full register of a group"
 msgstr ""
 
-#: model_extensions.py:196
+#: aleksis/apps/alsijil/model_extensions.py:195
 msgid "Can register an absence for all members of a group"
 msgstr ""
 
-#: model_extensions.py:198
+#: aleksis/apps/alsijil/model_extensions.py:197
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: models.py:50 models.py:348
+#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:388
 #, fuzzy
 #| msgid "First name"
 msgid "Short name"
 msgstr "Primus nomen"
 
-#: models.py:51 models.py:349 models.py:367
-#: templates/alsijil/class_register/groups.html:20
-#: templates/alsijil/partials/persons_with_stats.html:14
-#: templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:389
+#: aleksis/apps/alsijil/models.py:413
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
 msgid "Name"
 msgstr ""
 
-#: models.py:183 models.py:266
+#: aleksis/apps/alsijil/models.py:216 aleksis/apps/alsijil/models.py:303
 msgid "Year"
 msgstr ""
 
-#: models.py:238
+#: aleksis/apps/alsijil/models.py:271
 #, fuzzy
 #| msgid "Person"
 msgid "Personal note"
 msgstr "Persona"
 
-#: models.py:239 templates/alsijil/class_register/lesson.html:114
-#: templates/alsijil/class_register/lesson.html:251
-#: templates/alsijil/class_register/person.html:31
-#: templates/alsijil/class_register/week_view.html:71
-#: templates/alsijil/class_register/week_view.html:317
+#: aleksis/apps/alsijil/models.py:272
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:317
 msgid "Personal notes"
 msgstr ""
 
-#: models.py:278 templates/alsijil/class_register/lesson.html:147
-#: templates/alsijil/class_register/week_view.html:108
-#: templates/alsijil/class_register/week_view.html:237
-#: templates/alsijil/print/full_register.html:381
+#: aleksis/apps/alsijil/models.py:315
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:149
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:108
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:237
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:381
 msgid "Lesson topic"
 msgstr ""
 
-#: models.py:279 templates/alsijil/class_register/lesson.html:155
-#: templates/alsijil/class_register/week_view.html:109
-#: templates/alsijil/class_register/week_view.html:243
-#: templates/alsijil/class_register/week_view.html:289
-#: templates/alsijil/print/full_register.html:382
+#: aleksis/apps/alsijil/models.py:316
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:157
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:109
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:243
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:382
 msgid "Homework"
 msgstr ""
 
-#: models.py:280 templates/alsijil/class_register/lesson.html:163
-#: templates/alsijil/class_register/week_view.html:110
-#: templates/alsijil/class_register/week_view.html:249
-#: templates/alsijil/class_register/week_view.html:295
+#: aleksis/apps/alsijil/models.py:317
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:165
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:249
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:295
 #, fuzzy
 #| msgid "Group"
 msgid "Group note"
 msgstr "Grex"
 
-#: models.py:327 templates/alsijil/class_register/lesson.html:110
-#: templates/alsijil/class_register/lesson.html:138
+#: aleksis/apps/alsijil/models.py:363
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:140
 msgid "Lesson documentation"
 msgstr ""
 
-#: models.py:328 templates/alsijil/class_register/person.html:27
-#: templates/alsijil/class_register/week_view.html:68
+#: aleksis/apps/alsijil/models.py:364
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:68
 msgid "Lesson documentations"
 msgstr ""
 
-#: models.py:360
+#: aleksis/apps/alsijil/models.py:400
 msgid "Extra mark"
 msgstr ""
 
-#: models.py:368
+#: aleksis/apps/alsijil/models.py:414
 msgid "Icon"
 msgstr ""
 
-#: models.py:369
+#: aleksis/apps/alsijil/models.py:415
 msgid "Colour"
 msgstr ""
 
-#: models.py:375 models.py:386
-#: templates/alsijil/group_role/assigned_list.html:62
+#: aleksis/apps/alsijil/models.py:421 aleksis/apps/alsijil/models.py:435
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 #, fuzzy
 #| msgid "Group"
 msgid "Group role"
 msgstr "Grex"
 
-#: models.py:376 templates/alsijil/class_register/lesson.html:125
-#: templates/alsijil/class_register/week_view.html:75
-#: templates/alsijil/group_role/list.html:8
-#: templates/alsijil/group_role/list.html:9
+#: aleksis/apps/alsijil/models.py:422
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:75
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 #, fuzzy
 #| msgid "Group"
 msgid "Group roles"
 msgstr "Grex"
 
-#: models.py:392
+#: aleksis/apps/alsijil/models.py:441
 msgid "Assigned person"
 msgstr ""
 
-#: models.py:395 templates/alsijil/class_register/week_view.html:104
-#: templates/alsijil/class_register/week_view.html:220
+#: aleksis/apps/alsijil/models.py:444 aleksis/apps/alsijil/tables.py:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:220
 #, fuzzy
 #| msgid "Group"
 msgid "Groups"
 msgstr "Grex"
 
-#: models.py:402
+#: aleksis/apps/alsijil/models.py:451
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: models.py:417
+#: aleksis/apps/alsijil/models.py:466
 msgid "Group role assignment"
 msgstr ""
 
-#: models.py:418
+#: aleksis/apps/alsijil/models.py:467
 msgid "Group role assignments"
 msgstr ""
 
-#: models.py:425
+#: aleksis/apps/alsijil/models.py:474
 msgid "Can view week overview"
 msgstr ""
 
-#: models.py:426
+#: aleksis/apps/alsijil/models.py:475
 msgid "Can register absence"
 msgstr ""
 
-#: models.py:427
+#: aleksis/apps/alsijil/models.py:476
 msgid "Can list all personal note filters"
 msgstr ""
 
-#: preferences.py:17
+#: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr ""
 
-#: preferences.py:25
+#: aleksis/apps/alsijil/preferences.py:25
 msgid "Allow users to view their own personal notes"
 msgstr ""
 
-#: preferences.py:34
+#: aleksis/apps/alsijil/preferences.py:34
 msgid "Allow primary group owners to register future absences for students in their groups"
 msgstr ""
 
-#: preferences.py:43
+#: aleksis/apps/alsijil/preferences.py:43
 msgid "Allow original teachers to edit their lessons although they are substituted"
 msgstr ""
 
-#: preferences.py:52
+#: aleksis/apps/alsijil/preferences.py:52
 msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
 msgstr ""
 
-#: preferences.py:55
+#: aleksis/apps/alsijil/preferences.py:55
 msgid "This will carry over data only if the data in the following periods are empty."
 msgstr ""
 
-#: preferences.py:63
+#: aleksis/apps/alsijil/preferences.py:63
 msgid "Carry over personal notes to all following lesson periods on the same day."
 msgstr ""
 
-#: preferences.py:72
+#: aleksis/apps/alsijil/preferences.py:72
 msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
 msgstr ""
 
-#: preferences.py:76
+#: aleksis/apps/alsijil/preferences.py:76
 msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
 msgstr ""
 
-#: preferences.py:85
+#: aleksis/apps/alsijil/preferences.py:85
 msgid "Allow teachers to add data for lessons in holidays"
 msgstr ""
 
-#: preferences.py:94
+#: aleksis/apps/alsijil/preferences.py:94
 msgid "Allow group owners to assign group roles to the parents of the group's members"
 msgstr ""
 
-#: preferences.py:103
+#: aleksis/apps/alsijil/preferences.py:103
 msgid "Show assigned group roles in week view"
 msgstr ""
 
-#: preferences.py:104
+#: aleksis/apps/alsijil/preferences.py:104
 msgid "Only week view of groups"
 msgstr ""
 
-#: preferences.py:112
+#: aleksis/apps/alsijil/preferences.py:112
 msgid "Show assigned group roles in lesson view"
 msgstr ""
 
-#: preferences.py:122
+#: aleksis/apps/alsijil/preferences.py:122
 msgid "Items per page in lessons table"
 msgstr ""
 
-#: preferences.py:126
+#: aleksis/apps/alsijil/preferences.py:126
 msgid "Each page must show at least one item."
 msgstr ""
 
-#: tables.py:19 tables.py:39 tables.py:64
-#: templates/alsijil/group_role/partials/assignment_options.html:13
+#: aleksis/apps/alsijil/preferences.py:134
+msgid "Filter lessons by existence of their lesson documentation on default"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:43
+#: aleksis/apps/alsijil/tables.py:68
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
 msgid "Edit"
 msgstr ""
 
-#: tables.py:25 tables.py:45 tables.py:70
-#: templates/alsijil/class_register/person.html:276
-#: templates/alsijil/group_role/partials/assignment_options.html:29
-msgid "Delete"
+#: aleksis/apps/alsijil/tables.py:92
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:308
+msgid "Date"
+msgstr "dies"
+
+#: aleksis/apps/alsijil/tables.py:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:102
+msgid "Period"
 msgstr ""
 
-#: templates/alsijil/absences/register.html:5
-#: templates/alsijil/absences/register.html:6
-#: templates/alsijil/class_register/person.html:46
-#: templates/alsijil/class_register/week_view.html:332
-#: templates/alsijil/partials/persons_with_stats.html:115
+#: aleksis/apps/alsijil/tables.py:103
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:231
+msgid "Teachers"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:110
+msgid "Excuse"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:147
+#, python-brace-format
+msgid "{value}' late"
+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:327
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:115
 msgid "Register absence"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:5
-#: templates/alsijil/absences/register_confirm.html:6
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:5
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:6
 msgid "Confirm: Register absence"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:10
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:10
 msgid ""
 "\n"
 "      Do you really want to register the following absence?\n"
 "    "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:27
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:27
 msgid ""
 "\n"
 "                  As the length of this absence is longer than one day,\n"
@@ -498,106 +592,95 @@ msgid ""
 "                "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:37
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:37
 #, python-format
 msgid " %(count)s affected lessons "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:42
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:42
 msgid ""
 "\n"
 "                  There are no affected lessons. Registering this absence won't have any effect.\n"
 "                "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:59
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:59
 msgid "Reset status to 'not absent'"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:81
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:81
 msgid "Cancel"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:35
-#: templates/alsijil/class_register/groups.html:76
-#: templates/alsijil/class_register/week_view.html:40
-#: templates/alsijil/class_register/week_view.html:51
+#: 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:40
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
 msgid "Students list"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:39
-#: templates/alsijil/class_register/groups.html:82
-#: templates/alsijil/class_register/persons.html:27
-#: templates/alsijil/class_register/persons.html:43
-#: templates/alsijil/class_register/students_list.html:16
-#: templates/alsijil/class_register/students_list.html:35
-#: templates/alsijil/class_register/week_view.html:6
+#: 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/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
 msgid "Week view"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:45
-#: templates/alsijil/class_register/groups.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:45
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:90
 msgid "Roles"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:51
-#: templates/alsijil/class_register/groups.html:98
-#: templates/alsijil/class_register/persons.html:31
-#: templates/alsijil/class_register/persons.html:50
-#: templates/alsijil/class_register/students_list.html:20
-#: templates/alsijil/class_register/students_list.html:42
-#: templates/alsijil/class_register/week_view.html:44
-#: templates/alsijil/class_register/week_view.html:58
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:31
+#: 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:44
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:58
 msgid "Generate printout"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:59
-#: templates/alsijil/class_register/groups.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:59
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:104
 msgid "No groups available."
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:71
 msgid "students"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:5
 msgid "Lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:20
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:20
 msgid "Back to week view"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:29
 msgid "My previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:38
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:38
 msgid "My next lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:50
-#: templates/alsijil/class_register/lesson.html:185
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:50
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:187
 #, python-format
 msgid "%(period)s. period"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:56
-#: templates/alsijil/class_register/person.html:206
-#: templates/alsijil/class_register/week_view.html:151
-#: templates/alsijil/class_register/week_view.html:214
-#: templates/alsijil/class_register/week_view.html:268
-#: templates/alsijil/partials/lesson_status_icon.html:16
-#: templates/alsijil/print/full_register.html:335
-#: templates/alsijil/print/full_register.html:415 util/alsijil_helpers.py:316
-msgid "Event"
-msgstr ""
-
-#: templates/alsijil/class_register/lesson.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:85
 #, python-format
 msgid ""
 "\n"
@@ -605,7 +688,7 @@ msgid ""
 "          "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:95
 #, python-format
 msgid ""
 "\n"
@@ -613,53 +696,53 @@ msgid ""
 "          "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:120
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:121
 msgid "Previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:129
-#: templates/alsijil/class_register/lesson.html:378
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:131
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:380
 msgid "Change history"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:184
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:186
 msgid "Overview: Previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:191
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:193
 msgid "Lesson topic of previous lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:198
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:200
 msgid "Homework for this lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:205
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:207
 msgid "Group notes for previous lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:212
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:214
 msgid "Absent persons:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:219
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:221
 msgid "Late persons:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:262
-#: templates/alsijil/class_register/person.html:125
-#: templates/alsijil/partials/persons_with_stats.html:17
-#: templates/alsijil/partials/persons_with_stats.html:34
-#: templates/alsijil/partials/persons_with_stats.html:91
-#: templates/alsijil/print/full_register.html:287
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:264
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:146
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:17
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:34
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:91
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:287
 msgid "Tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:291
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:293
 msgid "Tardiness (in m)"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:397
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:399
 #, python-format
 msgid ""
 "\n"
@@ -667,7 +750,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:407
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:409
 #, python-format
 msgid ""
 "\n"
@@ -675,163 +758,136 @@ msgid ""
 "            "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:423
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:425
 msgid ""
 "\n"
 "                This lesson overlaps with holidays and can't be edited.\n"
 "              "
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:10
 msgid "Class register: person"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:13
-#: templates/alsijil/class_register/students_list.html:10
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:18
+#: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:10
 msgid "Back"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:16
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:22
 #, python-format
 msgid ""
 "\n"
-"    Class register overview for %(person)s\n"
-"  "
+"      Class register overview for %(person)s\n"
+"    "
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:52
-#: templates/alsijil/partials/legend.html:14
-msgid "Unexcused absences"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:50
+msgid "Statistics"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:61
-#: templates/alsijil/class_register/person.html:80
-#: templates/alsijil/class_register/person.html:217
-#: templates/alsijil/class_register/person.html:264
-msgid "Mark as"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:65
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:304
+msgid "Relevant personal notes"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:64
-#: templates/alsijil/class_register/person.html:83
-#: templates/alsijil/class_register/person.html:220
-#: templates/alsijil/class_register/person.html:226
-#: templates/alsijil/class_register/person.html:267
-#: templates/alsijil/class_register/person.html:273
-msgid "Delete note"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:68
+#, fuzzy
+#| msgid "Person"
+msgid "Filter personal notes"
+msgstr "Persona"
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:73
+msgid "Clear all filters"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:93
-msgid "There are no unexcused lessons."
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:76
+msgid "Close"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:79
+msgid "Filter"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
 msgid "Statistics on absences, tardiness and remarks"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:107
-#: templates/alsijil/partials/legend.html:10
-#: templates/alsijil/partials/persons_with_stats.html:16
-#: templates/alsijil/partials/persons_with_stats.html:26
-#: templates/alsijil/partials/persons_with_stats.html:69
-#: templates/alsijil/print/full_register.html:269
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:269
 msgid "Absences"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:111
-#: templates/alsijil/print/full_register.html:274
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:274
 msgid "thereof"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:121
-#: templates/alsijil/partials/persons_with_stats.html:86
-#: templates/alsijil/print/full_register.html:81
-#: templates/alsijil/print/full_register.html:283
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:142
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:86
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:283
 msgid "Unexcused"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:142
-#: templates/alsijil/print/full_register.html:304
-msgid "Relevant personal notes"
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:158
-#, python-format
-msgid "Week %(week)s"
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:166
-#: templates/alsijil/class_register/person.html:184
-msgid "Mark all as"
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:249
-#, python-format
-msgid "%(late)s' late"
-msgstr ""
-
-#: templates/alsijil/class_register/students_list.html:5
-#: templates/alsijil/class_register/students_list.html:12
+#: 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 ""
 
-#: templates/alsijil/class_register/week_view.html:23
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:23
 msgid "Select"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:31
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 #, python-format
 msgid ""
 "CW %(week)s:\n"
 "      %(instance)s"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:102
-msgid "Period"
-msgstr ""
-
-#: templates/alsijil/class_register/week_view.html:107
-#: templates/alsijil/class_register/week_view.html:231
-msgid "Teachers"
-msgstr ""
-
-#: templates/alsijil/class_register/week_view.html:343
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:340
 msgid "unexcused"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:343
 msgid "Summed up tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:349
-#: templates/alsijil/partials/persons_with_stats.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:94
 msgid "Count of tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:383
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:378
 msgid "No lessons available"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:386
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:381
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
 "          "
 msgstr ""
 
-#: templates/alsijil/excuse_type/create.html:6
-#: templates/alsijil/excuse_type/create.html:7
-#: templates/alsijil/excuse_type/list.html:18
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:18
 msgid "Create excuse type"
 msgstr ""
 
-#: templates/alsijil/excuse_type/edit.html:6
-#: templates/alsijil/excuse_type/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:7
 msgid "Edit excuse type"
 msgstr ""
 
-#: templates/alsijil/excuse_type/warning.html:5
-#: templates/alsijil/group_role/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/group_role/warning.html:5
 msgid ""
 "\n"
 "      This function should only be used to define alternatives to the default excuse which also will be counted extra.\n"
@@ -839,77 +895,77 @@ msgid ""
 "    "
 msgstr ""
 
-#: templates/alsijil/extra_mark/create.html:6
-#: templates/alsijil/extra_mark/create.html:7
-#: templates/alsijil/extra_mark/list.html:14
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:14
 msgid "Create extra mark"
 msgstr ""
 
-#: templates/alsijil/extra_mark/edit.html:6
-#: templates/alsijil/extra_mark/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:7
 msgid "Edit extra mark"
 msgstr ""
 
-#: templates/alsijil/group_role/assign.html:9
-#: templates/alsijil/group_role/assign.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:16
 #, python-format
 msgid "Assign group role for %(group)s"
 msgstr ""
 
-#: templates/alsijil/group_role/assign.html:34
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:9
-#: templates/alsijil/group_role/assigned_list.html:12
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:12
 #, python-format
 msgid "Group roles for %(group)s"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:28
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:28
 #, fuzzy
 #| msgid "Group"
 msgid "Back to my groups"
 msgstr "Grex"
 
-#: templates/alsijil/group_role/assigned_list.html:36
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:36
 msgid "Assign a role to a person"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:45
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:45
 msgid "Current roles"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:48
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:48
 msgid "All assignments"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:66
-#: templates/alsijil/group_role/assigned_list.html:83
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:66
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:83
 msgid "Actions"
 msgstr ""
 
-#: templates/alsijil/group_role/create.html:6
-#: templates/alsijil/group_role/create.html:7
-#: templates/alsijil/group_role/list.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:16
 msgid "Create group role"
 msgstr ""
 
-#: templates/alsijil/group_role/edit.html:6
-#: templates/alsijil/group_role/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:7
 msgid "Edit group role"
 msgstr ""
 
-#: templates/alsijil/group_role/edit_assignment.html:7
-#: templates/alsijil/group_role/edit_assignment.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:8
 msgid "Edit group role assignment"
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:31
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:31
 msgid "No one assigned."
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:42
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:42
 msgid ""
 "\n"
 "      You can get some additional actions for each group role assignment if you click on the name of the\n"
@@ -917,124 +973,121 @@ msgid ""
 "    "
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assignment_options.html:21
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:21
 msgid "Stop"
 msgstr ""
 
-#: templates/alsijil/notifications/check.html:1
+#: aleksis/apps/alsijil/templates/alsijil/notifications/check.html:1
 msgid "Please check if the following class register entries are complete and correct:"
 msgstr ""
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:27
-#: templates/alsijil/partials/persons_with_stats.html:44
-#: templates/alsijil/print/full_register.html:126
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:44
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:126
 msgid "(e)"
 msgstr ""
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:33
-#: templates/alsijil/partials/persons_with_stats.html:50
-#: templates/alsijil/print/full_register.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:130
 msgid "(u)"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:4
 msgid "Legend"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:7
-#: templates/alsijil/print/full_register.html:71
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:7
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:71
 msgid "General"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:18
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
+msgid "Unexcused absences"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
 msgid "Excused absences"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:6
 msgid "Data complete"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:12
-#: templates/alsijil/partials/lesson_status_icon.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:12
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:25
 msgid "Missing data"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:14
-#: templates/alsijil/partials/lesson_status_icon.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:27
 msgid "Pending"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:23
-#: templates/alsijil/print/full_register.html:426
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:23
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:426
 msgid "Lesson cancelled"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:29
 msgid "Substitution"
 msgstr ""
 
-#: templates/alsijil/partials/mark_as_buttons.html:4
-#: templates/alsijil/print/full_register.html:346
-#: templates/alsijil/print/full_register.html:444
-#: templates/alsijil/print/full_register.html:459
-msgid "e"
-msgstr ""
-
-#: templates/alsijil/partials/objects_table.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:4
 msgid "Lesson filter"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:9
 msgid "Update filters"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:22
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:22
 msgid "Lesson table"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:31
 msgid "Execute"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:7
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:7
 msgid "No students available."
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:15
-#: templates/alsijil/partials/persons_with_stats.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 #, fuzzy
 #| msgid "Group"
 msgid "Primary group"
 msgstr "Grex"
 
-#: templates/alsijil/partials/persons_with_stats.html:43
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:43
 msgid "Sum"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:107
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:107
 msgid "Show more details"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:108
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:108
 msgid "Details"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:6
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:6
 msgid "Class register:"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:26
-#: templates/alsijil/print/full_register.html:59
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:26
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:59
 msgid "Owners"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:30
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:30
 msgid "Printed on"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:38
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:38
 msgid ""
 "\n"
 "        This printout is intended for archival purposes. The main copy of\n"
@@ -1043,7 +1096,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:45
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:45
 msgid ""
 "\n"
 "        Copies of the class register, both digital and as printout, must\n"
@@ -1052,7 +1105,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:52
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:52
 msgid ""
 "\n"
 "        The owner of the group and the headteacher confirm the above, as\n"
@@ -1060,209 +1113,203 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:62
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:62
 msgid "Headteacher"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:69
 msgid "Abbreviations"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:78
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:78
 msgid "Late"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:89
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:89
 msgid "Custom excuse types"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:101
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:101
 msgid "Available extra marks"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:115
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:115
 msgid "Persons in group"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:120
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:120
 msgid "No."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:121
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:121
 msgid "Last name"
 msgstr "Secondus nomen"
 
-#: templates/alsijil/print/full_register.html:122
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:122
 msgid "First name"
 msgstr "Primus nomen"
 
-#: templates/alsijil/print/full_register.html:123
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:123
 msgid "Sex"
 msgstr "Genus"
 
-#: templates/alsijil/print/full_register.html:124
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:124
 msgid "Date of birth"
 msgstr "Dies natalis"
 
-#: templates/alsijil/print/full_register.html:125
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:125
 msgid "(a)"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:131
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:131
 msgid "(b)"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:164
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:164
 msgid "Teachers and lessons in group"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:171
-#: templates/alsijil/print/full_register.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:171
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:202
 msgid "Lesson start"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:172
-#: templates/alsijil/print/full_register.html:203
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:172
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:203
 msgid "Lesson end"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:173
-#: templates/alsijil/print/full_register.html:204
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:173
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:204
 msgid "Per week"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:194
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:194
 msgid "Teachers and lessons in child groups"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:227
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:227
 msgid "Personal overview"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:229
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:229
 msgid "Contact details"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:266
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:266
 msgid "Absences and tardiness"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:308
-msgid "Date"
-msgstr "dies"
-
-#: templates/alsijil/print/full_register.html:309
-#: templates/alsijil/print/full_register.html:379
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:309
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:379
 msgid "Pe."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:310
-#: templates/alsijil/print/full_register.html:380
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:310
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:380
 msgid "Subj."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:311
-#: templates/alsijil/print/full_register.html:384
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:311
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:384
 msgid "Te."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:313
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Tard."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:341
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:341
 msgid "Yes"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:373
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:346
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:444
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:459
+msgid "e"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:373
 msgid "Week"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:383
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:383
 msgid "Notes"
 msgstr ""
 
-#: views.py:108
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: views.py:141
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: views.py:225
+#: aleksis/apps/alsijil/views.py:241
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: views.py:259
+#: aleksis/apps/alsijil/views.py:275
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: views.py:782
-msgid "The absences have been marked as excused."
-msgstr ""
-
-#: views.py:797
-msgid "The absence has been marked as excused."
-msgstr ""
-
-#: views.py:988
+#: aleksis/apps/alsijil/views.py:1029
 msgid "The absence has been saved."
 msgstr ""
 
-#: views.py:1009
+#: aleksis/apps/alsijil/views.py:1050
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: views.py:1031
+#: aleksis/apps/alsijil/views.py:1072
 msgid "The extra mark has been created."
 msgstr ""
 
-#: views.py:1043
+#: aleksis/apps/alsijil/views.py:1084
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: views.py:1054
+#: aleksis/apps/alsijil/views.py:1095
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: views.py:1075
+#: aleksis/apps/alsijil/views.py:1116
 msgid "The excuse type has been created."
 msgstr ""
 
-#: views.py:1087
+#: aleksis/apps/alsijil/views.py:1128
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: views.py:1098
+#: aleksis/apps/alsijil/views.py:1139
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: views.py:1119
+#: aleksis/apps/alsijil/views.py:1160
 msgid "The group role has been created."
 msgstr ""
 
-#: views.py:1131
+#: aleksis/apps/alsijil/views.py:1172
 msgid "The group role has been saved."
 msgstr ""
 
-#: views.py:1142
+#: aleksis/apps/alsijil/views.py:1183
 msgid "The group role has been deleted."
 msgstr ""
 
-#: views.py:1175 views.py:1207
+#: aleksis/apps/alsijil/views.py:1216 aleksis/apps/alsijil/views.py:1248
 msgid "The group role has been assigned."
 msgstr ""
 
-#: views.py:1226
+#: aleksis/apps/alsijil/views.py:1267
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: views.py:1247
+#: aleksis/apps/alsijil/views.py:1288
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: views.py:1260
+#: aleksis/apps/alsijil/views.py:1301
 msgid "The group role assignment has been deleted."
 msgstr ""
 
diff --git a/aleksis/apps/alsijil/locale/nb_NO/LC_MESSAGES/django.po b/aleksis/apps/alsijil/locale/nb_NO/LC_MESSAGES/django.po
index 2bf61f8695e2f97b8d0f8581ffd9b2c1c63def34..fd860625832db17abc4d4b256a8234dc2bd10910 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: 2021-03-21 14:38+0100\n"
+"POT-Creation-Date: 2021-06-08 16:49+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,465 +17,559 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: actions.py:30
+#: aleksis/apps/alsijil/actions.py:17
+msgid "Mark as excused"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:24
+msgid "Mark as unexcused"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:31
+#, python-brace-format
+msgid "Mark as {excuse_type.name}"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:41 aleksis/apps/alsijil/tables.py:29
+#: aleksis/apps/alsijil/tables.py:49 aleksis/apps/alsijil/tables.py:74
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:29
+msgid "Delete"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:61
 msgid "{} asks you to check some class register entries."
 msgstr ""
 
-#: actions.py:48
+#: aleksis/apps/alsijil/actions.py:79
 #, python-brace-format
 msgid "We have successfully sent notifications to {count_teachers} persons for {count_items} lessons."
 msgstr ""
 
-#: actions.py:54
+#: aleksis/apps/alsijil/actions.py:85
 msgid "Ask teacher to check data"
 msgstr ""
 
-#: data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:12
 msgid "Delete object"
 msgstr ""
 
-#: data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:22
 msgid "Set current groups"
 msgstr ""
 
-#: data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:33
 msgid "Reset personal note to defaults"
 msgstr ""
 
-#: data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:45
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr ""
 
-#: data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:46
 msgid "The personal note is related to a cancelled lesson."
 msgstr ""
 
-#: data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:73
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr ""
 
-#: data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:74
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr ""
 
-#: data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:99
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr ""
 
-#: data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:100
 msgid "The lesson documentation is on holidays."
 msgstr ""
 
-#: data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:133
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr ""
 
-#: data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:134
 msgid "The personal note is on holidays."
 msgstr ""
 
-#: data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:162
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr ""
 
-#: data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:163
 msgid "The personal note is marked as excused, but not as absent."
 msgstr ""
 
-#: forms.py:41
+#: aleksis/apps/alsijil/filters.py:10
+msgid "After"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:11
+msgid "Before"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:12 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/tables.py:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:106
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:169
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:200
+msgid "Subject"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:16
+msgid "Tardiness is lower than"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:17
+msgid "Tardiness is bigger than"
+msgstr ""
+
+#: aleksis/apps/alsijil/forms.py:47
 msgid "Homework for the next lesson"
 msgstr ""
 
-#: forms.py:66 forms.py:190 forms.py:272
-#: templates/alsijil/print/full_register.html:199
+#: aleksis/apps/alsijil/forms.py:72 aleksis/apps/alsijil/forms.py:208
+#: aleksis/apps/alsijil/forms.py:290
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:199
 msgid "Group"
 msgstr ""
 
-#: forms.py:69 templates/alsijil/print/full_register.html:170
-#: templates/alsijil/print/full_register.html:201
+#: aleksis/apps/alsijil/forms.py:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:170
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:201
 msgid "Teacher"
 msgstr ""
 
-#: forms.py:84
+#: aleksis/apps/alsijil/forms.py:90
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: forms.py:138 forms.py:274 models.py:397
-#: templates/alsijil/group_role/assigned_list.html:64
+#: aleksis/apps/alsijil/forms.py:144 aleksis/apps/alsijil/forms.py:292
+#: aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: forms.py:139 forms.py:275 models.py:401
-#: templates/alsijil/group_role/assigned_list.html:65
+#: aleksis/apps/alsijil/forms.py:145 aleksis/apps/alsijil/forms.py:293
+#: aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: forms.py:140
+#: aleksis/apps/alsijil/forms.py:146
 msgid "Start period"
 msgstr ""
 
-#: forms.py:141
+#: aleksis/apps/alsijil/forms.py:147
 msgid "End period"
 msgstr ""
 
-#: forms.py:142 templates/alsijil/absences/register_confirm.html:52
-#: templates/alsijil/class_register/lesson.html:261
-#: templates/alsijil/class_register/person.html:234
-#: templates/alsijil/class_register/week_view.html:342
-#: templates/alsijil/print/full_register.html:75
-#: templates/alsijil/print/full_register.html:312
+#: aleksis/apps/alsijil/forms.py:148
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:52
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:263
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:339
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:312
 msgid "Absent"
 msgstr ""
 
-#: forms.py:143 templates/alsijil/absences/register_confirm.html:56
-#: templates/alsijil/class_register/lesson.html:263
-#: templates/alsijil/class_register/person.html:113
-#: templates/alsijil/class_register/person.html:242
-#: templates/alsijil/partials/mark_as_buttons.html:2
-#: templates/alsijil/partials/mark_as_buttons.html:3
-#: templates/alsijil/partials/persons_with_stats.html:74
-#: templates/alsijil/print/full_register.html:84
-#: templates/alsijil/print/full_register.html:275
+#: aleksis/apps/alsijil/forms.py:149 aleksis/apps/alsijil/tables.py:137
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:74
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:275
 msgid "Excused"
 msgstr ""
 
-#: forms.py:145 models.py:62 models.py:199
-#: templates/alsijil/class_register/lesson.html:264
-#: templates/alsijil/class_register/lesson.html:305
+#: aleksis/apps/alsijil/forms.py:151 aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:232
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:266
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:307
 msgid "Excuse type"
 msgstr ""
 
-#: forms.py:150 templates/alsijil/class_register/lesson.html:266
-#: templates/alsijil/class_register/lesson.html:326
-#: templates/alsijil/print/full_register.html:314
+#: aleksis/apps/alsijil/forms.py:156
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:268
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:328
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:314
 msgid "Remarks"
 msgstr ""
 
-#: forms.py:200 templates/alsijil/absences/register.html:9
-#: templates/alsijil/class_register/lesson.html:260
-#: templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/forms.py:218
+#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:262
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
 msgid "Person"
 msgstr ""
 
-#: forms.py:270
+#: aleksis/apps/alsijil/forms.py:288
 msgid "School term"
 msgstr ""
 
-#: forms.py:271
+#: aleksis/apps/alsijil/forms.py:289
 msgid "Has lesson documentation"
 msgstr ""
 
-#: forms.py:273 templates/alsijil/class_register/week_view.html:106
-#: templates/alsijil/class_register/week_view.html:202
-#: templates/alsijil/print/full_register.html:169
-#: templates/alsijil/print/full_register.html:200
-msgid "Subject"
+#: aleksis/apps/alsijil/managers.py:81 aleksis/apps/alsijil/tables.py:121
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:151
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:214
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:268
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:16
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:335
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:415
+#: aleksis/apps/alsijil/util/alsijil_helpers.py:314
+msgid "Event"
 msgstr ""
 
-#: menus.py:6 preferences.py:9 templates/alsijil/print/full_register.html:16
+#: 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 ""
 
-#: menus.py:16
+#: aleksis/apps/alsijil/menus.py:16
 msgid "Current lesson"
 msgstr ""
 
-#: menus.py:27
+#: aleksis/apps/alsijil/menus.py:27
 msgid "Current week"
 msgstr ""
 
-#: menus.py:38 templates/alsijil/class_register/groups.html:5
-#: templates/alsijil/class_register/groups.html:8
+#: 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 ""
 
-#: menus.py:49
+#: aleksis/apps/alsijil/menus.py:49
 msgid "My overview"
 msgstr ""
 
-#: menus.py:60 templates/alsijil/class_register/persons.html:5
-#: templates/alsijil/class_register/persons.html:9
+#: 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 ""
 
-#: menus.py:71 templates/alsijil/group_role/assign.html:11
-#: templates/alsijil/group_role/assign.html:18
+#: aleksis/apps/alsijil/menus.py:71
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
 msgid "Assign group role"
 msgstr ""
 
-#: menus.py:82 templates/alsijil/class_register/all_objects.html:5
-#: templates/alsijil/class_register/all_objects.html:8
+#: aleksis/apps/alsijil/menus.py:82
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
 msgid "All lessons"
 msgstr ""
 
-#: menus.py:93 models.py:63 templates/alsijil/excuse_type/list.html:8
-#: templates/alsijil/excuse_type/list.html:9
-#: templates/alsijil/partials/legend.html:26
+#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:63
+#: 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:26
 msgid "Excuse types"
 msgstr ""
 
-#: menus.py:104 models.py:204 models.py:361
-#: templates/alsijil/class_register/lesson.html:265
-#: templates/alsijil/extra_mark/list.html:8
-#: templates/alsijil/extra_mark/list.html:9
-#: templates/alsijil/partials/legend.html:41
-#: templates/alsijil/partials/persons_with_stats.html:19
-#: templates/alsijil/print/full_register.html:293
+#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:237
+#: aleksis/apps/alsijil/models.py:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:267
+#: 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:41
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:293
 msgid "Extra marks"
 msgstr ""
 
-#: menus.py:115
+#: aleksis/apps/alsijil/menus.py:115
 msgid "Manage group roles"
 msgstr ""
 
-#: model_extensions.py:181
+#: aleksis/apps/alsijil/model_extensions.py:180
 msgid "Can view week overview of group class register"
 msgstr ""
 
-#: model_extensions.py:184
+#: aleksis/apps/alsijil/model_extensions.py:183
 msgid "Can view lesson overview of group class register"
 msgstr ""
 
-#: model_extensions.py:186
+#: aleksis/apps/alsijil/model_extensions.py:185
 msgid "Can view all personal notes of a group"
 msgstr ""
 
-#: model_extensions.py:187
+#: aleksis/apps/alsijil/model_extensions.py:186
 msgid "Can edit all personal notes of a group"
 msgstr ""
 
-#: model_extensions.py:189
+#: aleksis/apps/alsijil/model_extensions.py:188
 msgid "Can view all lesson documentation of a group"
 msgstr ""
 
-#: model_extensions.py:192
+#: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can edit all lesson documentation of a group"
 msgstr ""
 
-#: model_extensions.py:194
+#: aleksis/apps/alsijil/model_extensions.py:193
 msgid "Can view full register of a group"
 msgstr ""
 
-#: model_extensions.py:196
+#: aleksis/apps/alsijil/model_extensions.py:195
 msgid "Can register an absence for all members of a group"
 msgstr ""
 
-#: model_extensions.py:198
+#: aleksis/apps/alsijil/model_extensions.py:197
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: models.py:50 models.py:348
+#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:388
 msgid "Short name"
 msgstr ""
 
-#: models.py:51 models.py:349 models.py:367
-#: templates/alsijil/class_register/groups.html:20
-#: templates/alsijil/partials/persons_with_stats.html:14
-#: templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:389
+#: aleksis/apps/alsijil/models.py:413
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
 msgid "Name"
 msgstr ""
 
-#: models.py:183 models.py:266
+#: aleksis/apps/alsijil/models.py:216 aleksis/apps/alsijil/models.py:303
 msgid "Year"
 msgstr ""
 
-#: models.py:238
+#: aleksis/apps/alsijil/models.py:271
 msgid "Personal note"
 msgstr ""
 
-#: models.py:239 templates/alsijil/class_register/lesson.html:114
-#: templates/alsijil/class_register/lesson.html:251
-#: templates/alsijil/class_register/person.html:31
-#: templates/alsijil/class_register/week_view.html:71
-#: templates/alsijil/class_register/week_view.html:317
+#: aleksis/apps/alsijil/models.py:272
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:317
 msgid "Personal notes"
 msgstr ""
 
-#: models.py:278 templates/alsijil/class_register/lesson.html:147
-#: templates/alsijil/class_register/week_view.html:108
-#: templates/alsijil/class_register/week_view.html:237
-#: templates/alsijil/print/full_register.html:381
+#: aleksis/apps/alsijil/models.py:315
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:149
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:108
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:237
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:381
 msgid "Lesson topic"
 msgstr ""
 
-#: models.py:279 templates/alsijil/class_register/lesson.html:155
-#: templates/alsijil/class_register/week_view.html:109
-#: templates/alsijil/class_register/week_view.html:243
-#: templates/alsijil/class_register/week_view.html:289
-#: templates/alsijil/print/full_register.html:382
+#: aleksis/apps/alsijil/models.py:316
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:157
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:109
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:243
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:382
 msgid "Homework"
 msgstr ""
 
-#: models.py:280 templates/alsijil/class_register/lesson.html:163
-#: templates/alsijil/class_register/week_view.html:110
-#: templates/alsijil/class_register/week_view.html:249
-#: templates/alsijil/class_register/week_view.html:295
+#: aleksis/apps/alsijil/models.py:317
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:165
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:249
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:295
 msgid "Group note"
 msgstr ""
 
-#: models.py:327 templates/alsijil/class_register/lesson.html:110
-#: templates/alsijil/class_register/lesson.html:138
+#: aleksis/apps/alsijil/models.py:363
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:140
 msgid "Lesson documentation"
 msgstr ""
 
-#: models.py:328 templates/alsijil/class_register/person.html:27
-#: templates/alsijil/class_register/week_view.html:68
+#: aleksis/apps/alsijil/models.py:364
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:68
 msgid "Lesson documentations"
 msgstr ""
 
-#: models.py:360
+#: aleksis/apps/alsijil/models.py:400
 msgid "Extra mark"
 msgstr ""
 
-#: models.py:368
+#: aleksis/apps/alsijil/models.py:414
 msgid "Icon"
 msgstr ""
 
-#: models.py:369
+#: aleksis/apps/alsijil/models.py:415
 msgid "Colour"
 msgstr ""
 
-#: models.py:375 models.py:386
-#: templates/alsijil/group_role/assigned_list.html:62
+#: aleksis/apps/alsijil/models.py:421 aleksis/apps/alsijil/models.py:435
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr ""
 
-#: models.py:376 templates/alsijil/class_register/lesson.html:125
-#: templates/alsijil/class_register/week_view.html:75
-#: templates/alsijil/group_role/list.html:8
-#: templates/alsijil/group_role/list.html:9
+#: aleksis/apps/alsijil/models.py:422
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:75
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 msgid "Group roles"
 msgstr ""
 
-#: models.py:392
+#: aleksis/apps/alsijil/models.py:441
 msgid "Assigned person"
 msgstr ""
 
-#: models.py:395 templates/alsijil/class_register/week_view.html:104
-#: templates/alsijil/class_register/week_view.html:220
+#: aleksis/apps/alsijil/models.py:444 aleksis/apps/alsijil/tables.py:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:220
 msgid "Groups"
 msgstr ""
 
-#: models.py:402
+#: aleksis/apps/alsijil/models.py:451
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: models.py:417
+#: aleksis/apps/alsijil/models.py:466
 msgid "Group role assignment"
 msgstr ""
 
-#: models.py:418
+#: aleksis/apps/alsijil/models.py:467
 msgid "Group role assignments"
 msgstr ""
 
-#: models.py:425
+#: aleksis/apps/alsijil/models.py:474
 msgid "Can view week overview"
 msgstr ""
 
-#: models.py:426
+#: aleksis/apps/alsijil/models.py:475
 msgid "Can register absence"
 msgstr ""
 
-#: models.py:427
+#: aleksis/apps/alsijil/models.py:476
 msgid "Can list all personal note filters"
 msgstr ""
 
-#: preferences.py:17
+#: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr ""
 
-#: preferences.py:25
+#: aleksis/apps/alsijil/preferences.py:25
 msgid "Allow users to view their own personal notes"
 msgstr ""
 
-#: preferences.py:34
+#: aleksis/apps/alsijil/preferences.py:34
 msgid "Allow primary group owners to register future absences for students in their groups"
 msgstr ""
 
-#: preferences.py:43
+#: aleksis/apps/alsijil/preferences.py:43
 msgid "Allow original teachers to edit their lessons although they are substituted"
 msgstr ""
 
-#: preferences.py:52
+#: aleksis/apps/alsijil/preferences.py:52
 msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
 msgstr ""
 
-#: preferences.py:55
+#: aleksis/apps/alsijil/preferences.py:55
 msgid "This will carry over data only if the data in the following periods are empty."
 msgstr ""
 
-#: preferences.py:63
+#: aleksis/apps/alsijil/preferences.py:63
 msgid "Carry over personal notes to all following lesson periods on the same day."
 msgstr ""
 
-#: preferences.py:72
+#: aleksis/apps/alsijil/preferences.py:72
 msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
 msgstr ""
 
-#: preferences.py:76
+#: aleksis/apps/alsijil/preferences.py:76
 msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
 msgstr ""
 
-#: preferences.py:85
+#: aleksis/apps/alsijil/preferences.py:85
 msgid "Allow teachers to add data for lessons in holidays"
 msgstr ""
 
-#: preferences.py:94
+#: aleksis/apps/alsijil/preferences.py:94
 msgid "Allow group owners to assign group roles to the parents of the group's members"
 msgstr ""
 
-#: preferences.py:103
+#: aleksis/apps/alsijil/preferences.py:103
 msgid "Show assigned group roles in week view"
 msgstr ""
 
-#: preferences.py:104
+#: aleksis/apps/alsijil/preferences.py:104
 msgid "Only week view of groups"
 msgstr ""
 
-#: preferences.py:112
+#: aleksis/apps/alsijil/preferences.py:112
 msgid "Show assigned group roles in lesson view"
 msgstr ""
 
-#: preferences.py:122
+#: aleksis/apps/alsijil/preferences.py:122
 msgid "Items per page in lessons table"
 msgstr ""
 
-#: preferences.py:126
+#: aleksis/apps/alsijil/preferences.py:126
 msgid "Each page must show at least one item."
 msgstr ""
 
-#: tables.py:19 tables.py:39 tables.py:64
-#: templates/alsijil/group_role/partials/assignment_options.html:13
+#: aleksis/apps/alsijil/preferences.py:134
+msgid "Filter lessons by existence of their lesson documentation on default"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:43
+#: aleksis/apps/alsijil/tables.py:68
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
 msgid "Edit"
 msgstr ""
 
-#: tables.py:25 tables.py:45 tables.py:70
-#: templates/alsijil/class_register/person.html:276
-#: templates/alsijil/group_role/partials/assignment_options.html:29
-msgid "Delete"
+#: aleksis/apps/alsijil/tables.py:92
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:308
+msgid "Date"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:102
+msgid "Period"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:103
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:231
+msgid "Teachers"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:110
+msgid "Excuse"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:147
+#, python-brace-format
+msgid "{value}' late"
 msgstr ""
 
-#: templates/alsijil/absences/register.html:5
-#: templates/alsijil/absences/register.html:6
-#: templates/alsijil/class_register/person.html:46
-#: templates/alsijil/class_register/week_view.html:332
-#: templates/alsijil/partials/persons_with_stats.html:115
+#: 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:327
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:115
 msgid "Register absence"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:5
-#: templates/alsijil/absences/register_confirm.html:6
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:5
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:6
 msgid "Confirm: Register absence"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:10
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:10
 msgid ""
 "\n"
 "      Do you really want to register the following absence?\n"
 "    "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:27
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:27
 msgid ""
 "\n"
 "                  As the length of this absence is longer than one day,\n"
@@ -483,106 +577,95 @@ msgid ""
 "                "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:37
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:37
 #, python-format
 msgid " %(count)s affected lessons "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:42
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:42
 msgid ""
 "\n"
 "                  There are no affected lessons. Registering this absence won't have any effect.\n"
 "                "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:59
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:59
 msgid "Reset status to 'not absent'"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:81
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:81
 msgid "Cancel"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:35
-#: templates/alsijil/class_register/groups.html:76
-#: templates/alsijil/class_register/week_view.html:40
-#: templates/alsijil/class_register/week_view.html:51
+#: 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:40
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
 msgid "Students list"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:39
-#: templates/alsijil/class_register/groups.html:82
-#: templates/alsijil/class_register/persons.html:27
-#: templates/alsijil/class_register/persons.html:43
-#: templates/alsijil/class_register/students_list.html:16
-#: templates/alsijil/class_register/students_list.html:35
-#: templates/alsijil/class_register/week_view.html:6
+#: 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/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
 msgid "Week view"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:45
-#: templates/alsijil/class_register/groups.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:45
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:90
 msgid "Roles"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:51
-#: templates/alsijil/class_register/groups.html:98
-#: templates/alsijil/class_register/persons.html:31
-#: templates/alsijil/class_register/persons.html:50
-#: templates/alsijil/class_register/students_list.html:20
-#: templates/alsijil/class_register/students_list.html:42
-#: templates/alsijil/class_register/week_view.html:44
-#: templates/alsijil/class_register/week_view.html:58
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:31
+#: 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:44
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:58
 msgid "Generate printout"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:59
-#: templates/alsijil/class_register/groups.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:59
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:104
 msgid "No groups available."
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:71
 msgid "students"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:5
 msgid "Lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:20
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:20
 msgid "Back to week view"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:29
 msgid "My previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:38
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:38
 msgid "My next lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:50
-#: templates/alsijil/class_register/lesson.html:185
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:50
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:187
 #, python-format
 msgid "%(period)s. period"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:56
-#: templates/alsijil/class_register/person.html:206
-#: templates/alsijil/class_register/week_view.html:151
-#: templates/alsijil/class_register/week_view.html:214
-#: templates/alsijil/class_register/week_view.html:268
-#: templates/alsijil/partials/lesson_status_icon.html:16
-#: templates/alsijil/print/full_register.html:335
-#: templates/alsijil/print/full_register.html:415 util/alsijil_helpers.py:316
-msgid "Event"
-msgstr ""
-
-#: templates/alsijil/class_register/lesson.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:85
 #, python-format
 msgid ""
 "\n"
@@ -590,7 +673,7 @@ msgid ""
 "          "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:95
 #, python-format
 msgid ""
 "\n"
@@ -598,53 +681,53 @@ msgid ""
 "          "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:120
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:121
 msgid "Previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:129
-#: templates/alsijil/class_register/lesson.html:378
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:131
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:380
 msgid "Change history"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:184
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:186
 msgid "Overview: Previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:191
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:193
 msgid "Lesson topic of previous lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:198
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:200
 msgid "Homework for this lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:205
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:207
 msgid "Group notes for previous lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:212
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:214
 msgid "Absent persons:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:219
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:221
 msgid "Late persons:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:262
-#: templates/alsijil/class_register/person.html:125
-#: templates/alsijil/partials/persons_with_stats.html:17
-#: templates/alsijil/partials/persons_with_stats.html:34
-#: templates/alsijil/partials/persons_with_stats.html:91
-#: templates/alsijil/print/full_register.html:287
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:264
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:146
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:17
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:34
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:91
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:287
 msgid "Tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:291
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:293
 msgid "Tardiness (in m)"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:397
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:399
 #, python-format
 msgid ""
 "\n"
@@ -652,7 +735,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:407
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:409
 #, python-format
 msgid ""
 "\n"
@@ -660,163 +743,134 @@ msgid ""
 "            "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:423
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:425
 msgid ""
 "\n"
 "                This lesson overlaps with holidays and can't be edited.\n"
 "              "
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:10
 msgid "Class register: person"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:13
-#: templates/alsijil/class_register/students_list.html:10
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:18
+#: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:10
 msgid "Back"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:16
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:22
 #, python-format
 msgid ""
 "\n"
-"    Class register overview for %(person)s\n"
-"  "
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:52
-#: templates/alsijil/partials/legend.html:14
-msgid "Unexcused absences"
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:61
-#: templates/alsijil/class_register/person.html:80
-#: templates/alsijil/class_register/person.html:217
-#: templates/alsijil/class_register/person.html:264
-msgid "Mark as"
+"      Class register overview for %(person)s\n"
+"    "
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:64
-#: templates/alsijil/class_register/person.html:83
-#: templates/alsijil/class_register/person.html:220
-#: templates/alsijil/class_register/person.html:226
-#: templates/alsijil/class_register/person.html:267
-#: templates/alsijil/class_register/person.html:273
-msgid "Delete note"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:50
+msgid "Statistics"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:93
-msgid "There are no unexcused lessons."
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:65
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:304
+msgid "Relevant personal notes"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:98
-msgid "Statistics on absences, tardiness and remarks"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:68
+msgid "Filter personal notes"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:107
-#: templates/alsijil/partials/legend.html:10
-#: templates/alsijil/partials/persons_with_stats.html:16
-#: templates/alsijil/partials/persons_with_stats.html:26
-#: templates/alsijil/partials/persons_with_stats.html:69
-#: templates/alsijil/print/full_register.html:269
-msgid "Absences"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:73
+msgid "Clear all filters"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:111
-#: templates/alsijil/print/full_register.html:274
-msgid "thereof"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:76
+msgid "Close"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:121
-#: templates/alsijil/partials/persons_with_stats.html:86
-#: templates/alsijil/print/full_register.html:81
-#: templates/alsijil/print/full_register.html:283
-msgid "Unexcused"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:79
+msgid "Filter"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:142
-#: templates/alsijil/print/full_register.html:304
-msgid "Relevant personal notes"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+msgid "Statistics on absences, tardiness and remarks"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:158
-#, python-format
-msgid "Week %(week)s"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:269
+msgid "Absences"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:166
-#: templates/alsijil/class_register/person.html:184
-msgid "Mark all as"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:274
+msgid "thereof"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:249
-#, python-format
-msgid "%(late)s' late"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:142
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:86
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:283
+msgid "Unexcused"
 msgstr ""
 
-#: templates/alsijil/class_register/students_list.html:5
-#: templates/alsijil/class_register/students_list.html:12
+#: 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 ""
 
-#: templates/alsijil/class_register/week_view.html:23
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:23
 msgid "Select"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:31
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 #, python-format
 msgid ""
 "CW %(week)s:\n"
 "      %(instance)s"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:102
-msgid "Period"
-msgstr ""
-
-#: templates/alsijil/class_register/week_view.html:107
-#: templates/alsijil/class_register/week_view.html:231
-msgid "Teachers"
-msgstr ""
-
-#: templates/alsijil/class_register/week_view.html:343
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:340
 msgid "unexcused"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:343
 msgid "Summed up tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:349
-#: templates/alsijil/partials/persons_with_stats.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:94
 msgid "Count of tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:383
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:378
 msgid "No lessons available"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:386
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:381
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
 "          "
 msgstr ""
 
-#: templates/alsijil/excuse_type/create.html:6
-#: templates/alsijil/excuse_type/create.html:7
-#: templates/alsijil/excuse_type/list.html:18
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:18
 msgid "Create excuse type"
 msgstr ""
 
-#: templates/alsijil/excuse_type/edit.html:6
-#: templates/alsijil/excuse_type/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:7
 msgid "Edit excuse type"
 msgstr ""
 
-#: templates/alsijil/excuse_type/warning.html:5
-#: templates/alsijil/group_role/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/group_role/warning.html:5
 msgid ""
 "\n"
 "      This function should only be used to define alternatives to the default excuse which also will be counted extra.\n"
@@ -824,75 +878,75 @@ msgid ""
 "    "
 msgstr ""
 
-#: templates/alsijil/extra_mark/create.html:6
-#: templates/alsijil/extra_mark/create.html:7
-#: templates/alsijil/extra_mark/list.html:14
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:14
 msgid "Create extra mark"
 msgstr ""
 
-#: templates/alsijil/extra_mark/edit.html:6
-#: templates/alsijil/extra_mark/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:7
 msgid "Edit extra mark"
 msgstr ""
 
-#: templates/alsijil/group_role/assign.html:9
-#: templates/alsijil/group_role/assign.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:16
 #, python-format
 msgid "Assign group role for %(group)s"
 msgstr ""
 
-#: templates/alsijil/group_role/assign.html:34
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:9
-#: templates/alsijil/group_role/assigned_list.html:12
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:12
 #, python-format
 msgid "Group roles for %(group)s"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:28
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:28
 msgid "Back to my groups"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:36
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:36
 msgid "Assign a role to a person"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:45
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:45
 msgid "Current roles"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:48
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:48
 msgid "All assignments"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:66
-#: templates/alsijil/group_role/assigned_list.html:83
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:66
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:83
 msgid "Actions"
 msgstr ""
 
-#: templates/alsijil/group_role/create.html:6
-#: templates/alsijil/group_role/create.html:7
-#: templates/alsijil/group_role/list.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:16
 msgid "Create group role"
 msgstr ""
 
-#: templates/alsijil/group_role/edit.html:6
-#: templates/alsijil/group_role/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:7
 msgid "Edit group role"
 msgstr ""
 
-#: templates/alsijil/group_role/edit_assignment.html:7
-#: templates/alsijil/group_role/edit_assignment.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:8
 msgid "Edit group role assignment"
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:31
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:31
 msgid "No one assigned."
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:42
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:42
 msgid ""
 "\n"
 "      You can get some additional actions for each group role assignment if you click on the name of the\n"
@@ -900,122 +954,119 @@ msgid ""
 "    "
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assignment_options.html:21
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:21
 msgid "Stop"
 msgstr ""
 
-#: templates/alsijil/notifications/check.html:1
+#: aleksis/apps/alsijil/templates/alsijil/notifications/check.html:1
 msgid "Please check if the following class register entries are complete and correct:"
 msgstr ""
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:27
-#: templates/alsijil/partials/persons_with_stats.html:44
-#: templates/alsijil/print/full_register.html:126
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:44
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:126
 msgid "(e)"
 msgstr ""
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:33
-#: templates/alsijil/partials/persons_with_stats.html:50
-#: templates/alsijil/print/full_register.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:130
 msgid "(u)"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:4
 msgid "Legend"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:7
-#: templates/alsijil/print/full_register.html:71
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:7
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:71
 msgid "General"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:18
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
+msgid "Unexcused absences"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
 msgid "Excused absences"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:6
 msgid "Data complete"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:12
-#: templates/alsijil/partials/lesson_status_icon.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:12
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:25
 msgid "Missing data"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:14
-#: templates/alsijil/partials/lesson_status_icon.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:27
 msgid "Pending"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:23
-#: templates/alsijil/print/full_register.html:426
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:23
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:426
 msgid "Lesson cancelled"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:29
 msgid "Substitution"
 msgstr ""
 
-#: templates/alsijil/partials/mark_as_buttons.html:4
-#: templates/alsijil/print/full_register.html:346
-#: templates/alsijil/print/full_register.html:444
-#: templates/alsijil/print/full_register.html:459
-msgid "e"
-msgstr ""
-
-#: templates/alsijil/partials/objects_table.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:4
 msgid "Lesson filter"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:9
 msgid "Update filters"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:22
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:22
 msgid "Lesson table"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:31
 msgid "Execute"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:7
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:7
 msgid "No students available."
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:15
-#: templates/alsijil/partials/persons_with_stats.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Primary group"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:43
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:43
 msgid "Sum"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:107
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:107
 msgid "Show more details"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:108
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:108
 msgid "Details"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:6
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:6
 msgid "Class register:"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:26
-#: templates/alsijil/print/full_register.html:59
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:26
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:59
 msgid "Owners"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:30
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:30
 msgid "Printed on"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:38
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:38
 msgid ""
 "\n"
 "        This printout is intended for archival purposes. The main copy of\n"
@@ -1024,7 +1075,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:45
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:45
 msgid ""
 "\n"
 "        Copies of the class register, both digital and as printout, must\n"
@@ -1033,7 +1084,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:52
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:52
 msgid ""
 "\n"
 "        The owner of the group and the headteacher confirm the above, as\n"
@@ -1041,208 +1092,202 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:62
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:62
 msgid "Headteacher"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:69
 msgid "Abbreviations"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:78
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:78
 msgid "Late"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:89
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:89
 msgid "Custom excuse types"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:101
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:101
 msgid "Available extra marks"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:115
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:115
 msgid "Persons in group"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:120
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:120
 msgid "No."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:121
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:121
 msgid "Last name"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:122
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:122
 msgid "First name"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:123
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:123
 msgid "Sex"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:124
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:124
 msgid "Date of birth"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:125
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:125
 msgid "(a)"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:131
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:131
 msgid "(b)"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:164
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:164
 msgid "Teachers and lessons in group"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:171
-#: templates/alsijil/print/full_register.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:171
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:202
 msgid "Lesson start"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:172
-#: templates/alsijil/print/full_register.html:203
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:172
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:203
 msgid "Lesson end"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:173
-#: templates/alsijil/print/full_register.html:204
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:173
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:204
 msgid "Per week"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:194
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:194
 msgid "Teachers and lessons in child groups"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:227
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:227
 msgid "Personal overview"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:229
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:229
 msgid "Contact details"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:266
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:266
 msgid "Absences and tardiness"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:308
-msgid "Date"
-msgstr ""
-
-#: templates/alsijil/print/full_register.html:309
-#: templates/alsijil/print/full_register.html:379
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:309
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:379
 msgid "Pe."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:310
-#: templates/alsijil/print/full_register.html:380
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:310
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:380
 msgid "Subj."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:311
-#: templates/alsijil/print/full_register.html:384
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:311
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:384
 msgid "Te."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:313
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Tard."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:341
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:341
 msgid "Yes"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:373
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:346
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:444
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:459
+msgid "e"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:373
 msgid "Week"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:383
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:383
 msgid "Notes"
 msgstr ""
 
-#: views.py:108
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: views.py:141
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: views.py:225
+#: aleksis/apps/alsijil/views.py:241
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: views.py:259
+#: aleksis/apps/alsijil/views.py:275
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: views.py:782
-msgid "The absences have been marked as excused."
-msgstr ""
-
-#: views.py:797
-msgid "The absence has been marked as excused."
-msgstr ""
-
-#: views.py:988
+#: aleksis/apps/alsijil/views.py:1029
 msgid "The absence has been saved."
 msgstr ""
 
-#: views.py:1009
+#: aleksis/apps/alsijil/views.py:1050
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: views.py:1031
+#: aleksis/apps/alsijil/views.py:1072
 msgid "The extra mark has been created."
 msgstr ""
 
-#: views.py:1043
+#: aleksis/apps/alsijil/views.py:1084
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: views.py:1054
+#: aleksis/apps/alsijil/views.py:1095
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: views.py:1075
+#: aleksis/apps/alsijil/views.py:1116
 msgid "The excuse type has been created."
 msgstr ""
 
-#: views.py:1087
+#: aleksis/apps/alsijil/views.py:1128
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: views.py:1098
+#: aleksis/apps/alsijil/views.py:1139
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: views.py:1119
+#: aleksis/apps/alsijil/views.py:1160
 msgid "The group role has been created."
 msgstr ""
 
-#: views.py:1131
+#: aleksis/apps/alsijil/views.py:1172
 msgid "The group role has been saved."
 msgstr ""
 
-#: views.py:1142
+#: aleksis/apps/alsijil/views.py:1183
 msgid "The group role has been deleted."
 msgstr ""
 
-#: views.py:1175 views.py:1207
+#: aleksis/apps/alsijil/views.py:1216 aleksis/apps/alsijil/views.py:1248
 msgid "The group role has been assigned."
 msgstr ""
 
-#: views.py:1226
+#: aleksis/apps/alsijil/views.py:1267
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: views.py:1247
+#: aleksis/apps/alsijil/views.py:1288
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: views.py:1260
+#: aleksis/apps/alsijil/views.py:1301
 msgid "The group role assignment has been deleted."
 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 2bf61f8695e2f97b8d0f8581ffd9b2c1c63def34..fd860625832db17abc4d4b256a8234dc2bd10910 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: 2021-03-21 14:38+0100\n"
+"POT-Creation-Date: 2021-06-08 16:49+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,465 +17,559 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: actions.py:30
+#: aleksis/apps/alsijil/actions.py:17
+msgid "Mark as excused"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:24
+msgid "Mark as unexcused"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:31
+#, python-brace-format
+msgid "Mark as {excuse_type.name}"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:41 aleksis/apps/alsijil/tables.py:29
+#: aleksis/apps/alsijil/tables.py:49 aleksis/apps/alsijil/tables.py:74
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:29
+msgid "Delete"
+msgstr ""
+
+#: aleksis/apps/alsijil/actions.py:61
 msgid "{} asks you to check some class register entries."
 msgstr ""
 
-#: actions.py:48
+#: aleksis/apps/alsijil/actions.py:79
 #, python-brace-format
 msgid "We have successfully sent notifications to {count_teachers} persons for {count_items} lessons."
 msgstr ""
 
-#: actions.py:54
+#: aleksis/apps/alsijil/actions.py:85
 msgid "Ask teacher to check data"
 msgstr ""
 
-#: data_checks.py:12
+#: aleksis/apps/alsijil/data_checks.py:12
 msgid "Delete object"
 msgstr ""
 
-#: data_checks.py:22
+#: aleksis/apps/alsijil/data_checks.py:22
 msgid "Set current groups"
 msgstr ""
 
-#: data_checks.py:33
+#: aleksis/apps/alsijil/data_checks.py:33
 msgid "Reset personal note to defaults"
 msgstr ""
 
-#: data_checks.py:45
+#: aleksis/apps/alsijil/data_checks.py:45
 msgid "Ensure that there are no personal notes in cancelled lessons"
 msgstr ""
 
-#: data_checks.py:46
+#: aleksis/apps/alsijil/data_checks.py:46
 msgid "The personal note is related to a cancelled lesson."
 msgstr ""
 
-#: data_checks.py:73
+#: aleksis/apps/alsijil/data_checks.py:73
 msgid "Ensure that 'groups_of_person' is set for every personal note"
 msgstr ""
 
-#: data_checks.py:74
+#: aleksis/apps/alsijil/data_checks.py:74
 msgid "The personal note has no group in 'groups_of_person'."
 msgstr ""
 
-#: data_checks.py:99
+#: aleksis/apps/alsijil/data_checks.py:99
 msgid "Ensure that there are no filled out lesson documentations on holidays"
 msgstr ""
 
-#: data_checks.py:100
+#: aleksis/apps/alsijil/data_checks.py:100
 msgid "The lesson documentation is on holidays."
 msgstr ""
 
-#: data_checks.py:133
+#: aleksis/apps/alsijil/data_checks.py:133
 msgid "Ensure that there are no filled out personal notes on holidays"
 msgstr ""
 
-#: data_checks.py:134
+#: aleksis/apps/alsijil/data_checks.py:134
 msgid "The personal note is on holidays."
 msgstr ""
 
-#: data_checks.py:162
+#: aleksis/apps/alsijil/data_checks.py:162
 msgid "Ensure that there are no excused personal notes without an absence"
 msgstr ""
 
-#: data_checks.py:163
+#: aleksis/apps/alsijil/data_checks.py:163
 msgid "The personal note is marked as excused, but not as absent."
 msgstr ""
 
-#: forms.py:41
+#: aleksis/apps/alsijil/filters.py:10
+msgid "After"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:11
+msgid "Before"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:12 aleksis/apps/alsijil/forms.py:291
+#: aleksis/apps/alsijil/tables.py:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:106
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:169
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:200
+msgid "Subject"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:16
+msgid "Tardiness is lower than"
+msgstr ""
+
+#: aleksis/apps/alsijil/filters.py:17
+msgid "Tardiness is bigger than"
+msgstr ""
+
+#: aleksis/apps/alsijil/forms.py:47
 msgid "Homework for the next lesson"
 msgstr ""
 
-#: forms.py:66 forms.py:190 forms.py:272
-#: templates/alsijil/print/full_register.html:199
+#: aleksis/apps/alsijil/forms.py:72 aleksis/apps/alsijil/forms.py:208
+#: aleksis/apps/alsijil/forms.py:290
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:199
 msgid "Group"
 msgstr ""
 
-#: forms.py:69 templates/alsijil/print/full_register.html:170
-#: templates/alsijil/print/full_register.html:201
+#: aleksis/apps/alsijil/forms.py:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:170
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:201
 msgid "Teacher"
 msgstr ""
 
-#: forms.py:84
+#: aleksis/apps/alsijil/forms.py:90
 msgid "You can't select a group and a teacher both."
 msgstr ""
 
-#: forms.py:138 forms.py:274 models.py:397
-#: templates/alsijil/group_role/assigned_list.html:64
+#: aleksis/apps/alsijil/forms.py:144 aleksis/apps/alsijil/forms.py:292
+#: aleksis/apps/alsijil/models.py:446
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:64
 msgid "Start date"
 msgstr ""
 
-#: forms.py:139 forms.py:275 models.py:401
-#: templates/alsijil/group_role/assigned_list.html:65
+#: aleksis/apps/alsijil/forms.py:145 aleksis/apps/alsijil/forms.py:293
+#: aleksis/apps/alsijil/models.py:450
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:65
 msgid "End date"
 msgstr ""
 
-#: forms.py:140
+#: aleksis/apps/alsijil/forms.py:146
 msgid "Start period"
 msgstr ""
 
-#: forms.py:141
+#: aleksis/apps/alsijil/forms.py:147
 msgid "End period"
 msgstr ""
 
-#: forms.py:142 templates/alsijil/absences/register_confirm.html:52
-#: templates/alsijil/class_register/lesson.html:261
-#: templates/alsijil/class_register/person.html:234
-#: templates/alsijil/class_register/week_view.html:342
-#: templates/alsijil/print/full_register.html:75
-#: templates/alsijil/print/full_register.html:312
+#: aleksis/apps/alsijil/forms.py:148
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:52
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:263
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:339
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:75
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:312
 msgid "Absent"
 msgstr ""
 
-#: forms.py:143 templates/alsijil/absences/register_confirm.html:56
-#: templates/alsijil/class_register/lesson.html:263
-#: templates/alsijil/class_register/person.html:113
-#: templates/alsijil/class_register/person.html:242
-#: templates/alsijil/partials/mark_as_buttons.html:2
-#: templates/alsijil/partials/mark_as_buttons.html:3
-#: templates/alsijil/partials/persons_with_stats.html:74
-#: templates/alsijil/print/full_register.html:84
-#: templates/alsijil/print/full_register.html:275
+#: aleksis/apps/alsijil/forms.py:149 aleksis/apps/alsijil/tables.py:137
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:265
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:134
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:74
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:84
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:275
 msgid "Excused"
 msgstr ""
 
-#: forms.py:145 models.py:62 models.py:199
-#: templates/alsijil/class_register/lesson.html:264
-#: templates/alsijil/class_register/lesson.html:305
+#: aleksis/apps/alsijil/forms.py:151 aleksis/apps/alsijil/models.py:62
+#: aleksis/apps/alsijil/models.py:232
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:266
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:307
 msgid "Excuse type"
 msgstr ""
 
-#: forms.py:150 templates/alsijil/class_register/lesson.html:266
-#: templates/alsijil/class_register/lesson.html:326
-#: templates/alsijil/print/full_register.html:314
+#: aleksis/apps/alsijil/forms.py:156
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:268
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:328
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:314
 msgid "Remarks"
 msgstr ""
 
-#: forms.py:200 templates/alsijil/absences/register.html:9
-#: templates/alsijil/class_register/lesson.html:260
-#: templates/alsijil/group_role/assigned_list.html:63
+#: aleksis/apps/alsijil/forms.py:218
+#: aleksis/apps/alsijil/templates/alsijil/absences/register.html:9
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:262
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:63
 msgid "Person"
 msgstr ""
 
-#: forms.py:270
+#: aleksis/apps/alsijil/forms.py:288
 msgid "School term"
 msgstr ""
 
-#: forms.py:271
+#: aleksis/apps/alsijil/forms.py:289
 msgid "Has lesson documentation"
 msgstr ""
 
-#: forms.py:273 templates/alsijil/class_register/week_view.html:106
-#: templates/alsijil/class_register/week_view.html:202
-#: templates/alsijil/print/full_register.html:169
-#: templates/alsijil/print/full_register.html:200
-msgid "Subject"
+#: aleksis/apps/alsijil/managers.py:81 aleksis/apps/alsijil/tables.py:121
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:56
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:151
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:214
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:268
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:16
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:335
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:415
+#: aleksis/apps/alsijil/util/alsijil_helpers.py:314
+msgid "Event"
 msgstr ""
 
-#: menus.py:6 preferences.py:9 templates/alsijil/print/full_register.html:16
+#: 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 ""
 
-#: menus.py:16
+#: aleksis/apps/alsijil/menus.py:16
 msgid "Current lesson"
 msgstr ""
 
-#: menus.py:27
+#: aleksis/apps/alsijil/menus.py:27
 msgid "Current week"
 msgstr ""
 
-#: menus.py:38 templates/alsijil/class_register/groups.html:5
-#: templates/alsijil/class_register/groups.html:8
+#: 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 ""
 
-#: menus.py:49
+#: aleksis/apps/alsijil/menus.py:49
 msgid "My overview"
 msgstr ""
 
-#: menus.py:60 templates/alsijil/class_register/persons.html:5
-#: templates/alsijil/class_register/persons.html:9
+#: 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 ""
 
-#: menus.py:71 templates/alsijil/group_role/assign.html:11
-#: templates/alsijil/group_role/assign.html:18
+#: aleksis/apps/alsijil/menus.py:71
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:11
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:18
 msgid "Assign group role"
 msgstr ""
 
-#: menus.py:82 templates/alsijil/class_register/all_objects.html:5
-#: templates/alsijil/class_register/all_objects.html:8
+#: aleksis/apps/alsijil/menus.py:82
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/all_objects.html:8
 msgid "All lessons"
 msgstr ""
 
-#: menus.py:93 models.py:63 templates/alsijil/excuse_type/list.html:8
-#: templates/alsijil/excuse_type/list.html:9
-#: templates/alsijil/partials/legend.html:26
+#: aleksis/apps/alsijil/menus.py:93 aleksis/apps/alsijil/models.py:63
+#: 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:26
 msgid "Excuse types"
 msgstr ""
 
-#: menus.py:104 models.py:204 models.py:361
-#: templates/alsijil/class_register/lesson.html:265
-#: templates/alsijil/extra_mark/list.html:8
-#: templates/alsijil/extra_mark/list.html:9
-#: templates/alsijil/partials/legend.html:41
-#: templates/alsijil/partials/persons_with_stats.html:19
-#: templates/alsijil/print/full_register.html:293
+#: aleksis/apps/alsijil/menus.py:104 aleksis/apps/alsijil/models.py:237
+#: aleksis/apps/alsijil/models.py:401
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:267
+#: 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:41
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:19
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:293
 msgid "Extra marks"
 msgstr ""
 
-#: menus.py:115
+#: aleksis/apps/alsijil/menus.py:115
 msgid "Manage group roles"
 msgstr ""
 
-#: model_extensions.py:181
+#: aleksis/apps/alsijil/model_extensions.py:180
 msgid "Can view week overview of group class register"
 msgstr ""
 
-#: model_extensions.py:184
+#: aleksis/apps/alsijil/model_extensions.py:183
 msgid "Can view lesson overview of group class register"
 msgstr ""
 
-#: model_extensions.py:186
+#: aleksis/apps/alsijil/model_extensions.py:185
 msgid "Can view all personal notes of a group"
 msgstr ""
 
-#: model_extensions.py:187
+#: aleksis/apps/alsijil/model_extensions.py:186
 msgid "Can edit all personal notes of a group"
 msgstr ""
 
-#: model_extensions.py:189
+#: aleksis/apps/alsijil/model_extensions.py:188
 msgid "Can view all lesson documentation of a group"
 msgstr ""
 
-#: model_extensions.py:192
+#: aleksis/apps/alsijil/model_extensions.py:191
 msgid "Can edit all lesson documentation of a group"
 msgstr ""
 
-#: model_extensions.py:194
+#: aleksis/apps/alsijil/model_extensions.py:193
 msgid "Can view full register of a group"
 msgstr ""
 
-#: model_extensions.py:196
+#: aleksis/apps/alsijil/model_extensions.py:195
 msgid "Can register an absence for all members of a group"
 msgstr ""
 
-#: model_extensions.py:198
+#: aleksis/apps/alsijil/model_extensions.py:197
 msgid "Can register an absence for a person"
 msgstr ""
 
-#: models.py:50 models.py:348
+#: aleksis/apps/alsijil/models.py:50 aleksis/apps/alsijil/models.py:388
 msgid "Short name"
 msgstr ""
 
-#: models.py:51 models.py:349 models.py:367
-#: templates/alsijil/class_register/groups.html:20
-#: templates/alsijil/partials/persons_with_stats.html:14
-#: templates/alsijil/partials/persons_with_stats.html:24
+#: aleksis/apps/alsijil/models.py:51 aleksis/apps/alsijil/models.py:389
+#: aleksis/apps/alsijil/models.py:413
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:20
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:24
 msgid "Name"
 msgstr ""
 
-#: models.py:183 models.py:266
+#: aleksis/apps/alsijil/models.py:216 aleksis/apps/alsijil/models.py:303
 msgid "Year"
 msgstr ""
 
-#: models.py:238
+#: aleksis/apps/alsijil/models.py:271
 msgid "Personal note"
 msgstr ""
 
-#: models.py:239 templates/alsijil/class_register/lesson.html:114
-#: templates/alsijil/class_register/lesson.html:251
-#: templates/alsijil/class_register/person.html:31
-#: templates/alsijil/class_register/week_view.html:71
-#: templates/alsijil/class_register/week_view.html:317
+#: aleksis/apps/alsijil/models.py:272
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:114
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:253
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:47
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:317
 msgid "Personal notes"
 msgstr ""
 
-#: models.py:278 templates/alsijil/class_register/lesson.html:147
-#: templates/alsijil/class_register/week_view.html:108
-#: templates/alsijil/class_register/week_view.html:237
-#: templates/alsijil/print/full_register.html:381
+#: aleksis/apps/alsijil/models.py:315
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:149
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:108
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:237
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:381
 msgid "Lesson topic"
 msgstr ""
 
-#: models.py:279 templates/alsijil/class_register/lesson.html:155
-#: templates/alsijil/class_register/week_view.html:109
-#: templates/alsijil/class_register/week_view.html:243
-#: templates/alsijil/class_register/week_view.html:289
-#: templates/alsijil/print/full_register.html:382
+#: aleksis/apps/alsijil/models.py:316
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:157
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:109
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:243
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:289
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:382
 msgid "Homework"
 msgstr ""
 
-#: models.py:280 templates/alsijil/class_register/lesson.html:163
-#: templates/alsijil/class_register/week_view.html:110
-#: templates/alsijil/class_register/week_view.html:249
-#: templates/alsijil/class_register/week_view.html:295
+#: aleksis/apps/alsijil/models.py:317
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:165
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:249
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:295
 msgid "Group note"
 msgstr ""
 
-#: models.py:327 templates/alsijil/class_register/lesson.html:110
-#: templates/alsijil/class_register/lesson.html:138
+#: aleksis/apps/alsijil/models.py:363
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:110
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:140
 msgid "Lesson documentation"
 msgstr ""
 
-#: models.py:328 templates/alsijil/class_register/person.html:27
-#: templates/alsijil/class_register/week_view.html:68
+#: aleksis/apps/alsijil/models.py:364
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:43
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:68
 msgid "Lesson documentations"
 msgstr ""
 
-#: models.py:360
+#: aleksis/apps/alsijil/models.py:400
 msgid "Extra mark"
 msgstr ""
 
-#: models.py:368
+#: aleksis/apps/alsijil/models.py:414
 msgid "Icon"
 msgstr ""
 
-#: models.py:369
+#: aleksis/apps/alsijil/models.py:415
 msgid "Colour"
 msgstr ""
 
-#: models.py:375 models.py:386
-#: templates/alsijil/group_role/assigned_list.html:62
+#: aleksis/apps/alsijil/models.py:421 aleksis/apps/alsijil/models.py:435
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:62
 msgid "Group role"
 msgstr ""
 
-#: models.py:376 templates/alsijil/class_register/lesson.html:125
-#: templates/alsijil/class_register/week_view.html:75
-#: templates/alsijil/group_role/list.html:8
-#: templates/alsijil/group_role/list.html:9
+#: aleksis/apps/alsijil/models.py:422
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:127
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:75
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:9
 msgid "Group roles"
 msgstr ""
 
-#: models.py:392
+#: aleksis/apps/alsijil/models.py:441
 msgid "Assigned person"
 msgstr ""
 
-#: models.py:395 templates/alsijil/class_register/week_view.html:104
-#: templates/alsijil/class_register/week_view.html:220
+#: aleksis/apps/alsijil/models.py:444 aleksis/apps/alsijil/tables.py:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:220
 msgid "Groups"
 msgstr ""
 
-#: models.py:402
+#: aleksis/apps/alsijil/models.py:451
 msgid "Can be left empty if end date is not clear yet"
 msgstr ""
 
-#: models.py:417
+#: aleksis/apps/alsijil/models.py:466
 msgid "Group role assignment"
 msgstr ""
 
-#: models.py:418
+#: aleksis/apps/alsijil/models.py:467
 msgid "Group role assignments"
 msgstr ""
 
-#: models.py:425
+#: aleksis/apps/alsijil/models.py:474
 msgid "Can view week overview"
 msgstr ""
 
-#: models.py:426
+#: aleksis/apps/alsijil/models.py:475
 msgid "Can register absence"
 msgstr ""
 
-#: models.py:427
+#: aleksis/apps/alsijil/models.py:476
 msgid "Can list all personal note filters"
 msgstr ""
 
-#: preferences.py:17
+#: aleksis/apps/alsijil/preferences.py:17
 msgid "Block adding personal notes for cancelled lessons"
 msgstr ""
 
-#: preferences.py:25
+#: aleksis/apps/alsijil/preferences.py:25
 msgid "Allow users to view their own personal notes"
 msgstr ""
 
-#: preferences.py:34
+#: aleksis/apps/alsijil/preferences.py:34
 msgid "Allow primary group owners to register future absences for students in their groups"
 msgstr ""
 
-#: preferences.py:43
+#: aleksis/apps/alsijil/preferences.py:43
 msgid "Allow original teachers to edit their lessons although they are substituted"
 msgstr ""
 
-#: preferences.py:52
+#: aleksis/apps/alsijil/preferences.py:52
 msgid "Carry over data from first lesson period to the following lesson periods in lessons over multiple periods"
 msgstr ""
 
-#: preferences.py:55
+#: aleksis/apps/alsijil/preferences.py:55
 msgid "This will carry over data only if the data in the following periods are empty."
 msgstr ""
 
-#: preferences.py:63
+#: aleksis/apps/alsijil/preferences.py:63
 msgid "Carry over personal notes to all following lesson periods on the same day."
 msgstr ""
 
-#: preferences.py:72
+#: aleksis/apps/alsijil/preferences.py:72
 msgid "Allow teachers to open lesson periods on the same day and not just at the beginning of the period"
 msgstr ""
 
-#: preferences.py:76
+#: aleksis/apps/alsijil/preferences.py:76
 msgid "Lessons in the past are not affected by this setting, you can open them whenever you want."
 msgstr ""
 
-#: preferences.py:85
+#: aleksis/apps/alsijil/preferences.py:85
 msgid "Allow teachers to add data for lessons in holidays"
 msgstr ""
 
-#: preferences.py:94
+#: aleksis/apps/alsijil/preferences.py:94
 msgid "Allow group owners to assign group roles to the parents of the group's members"
 msgstr ""
 
-#: preferences.py:103
+#: aleksis/apps/alsijil/preferences.py:103
 msgid "Show assigned group roles in week view"
 msgstr ""
 
-#: preferences.py:104
+#: aleksis/apps/alsijil/preferences.py:104
 msgid "Only week view of groups"
 msgstr ""
 
-#: preferences.py:112
+#: aleksis/apps/alsijil/preferences.py:112
 msgid "Show assigned group roles in lesson view"
 msgstr ""
 
-#: preferences.py:122
+#: aleksis/apps/alsijil/preferences.py:122
 msgid "Items per page in lessons table"
 msgstr ""
 
-#: preferences.py:126
+#: aleksis/apps/alsijil/preferences.py:126
 msgid "Each page must show at least one item."
 msgstr ""
 
-#: tables.py:19 tables.py:39 tables.py:64
-#: templates/alsijil/group_role/partials/assignment_options.html:13
+#: aleksis/apps/alsijil/preferences.py:134
+msgid "Filter lessons by existence of their lesson documentation on default"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:23 aleksis/apps/alsijil/tables.py:43
+#: aleksis/apps/alsijil/tables.py:68
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:13
 msgid "Edit"
 msgstr ""
 
-#: tables.py:25 tables.py:45 tables.py:70
-#: templates/alsijil/class_register/person.html:276
-#: templates/alsijil/group_role/partials/assignment_options.html:29
-msgid "Delete"
+#: aleksis/apps/alsijil/tables.py:92
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:308
+msgid "Date"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:102
+msgid "Period"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:103
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:107
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:231
+msgid "Teachers"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:110
+msgid "Excuse"
+msgstr ""
+
+#: aleksis/apps/alsijil/tables.py:147
+#, python-brace-format
+msgid "{value}' late"
 msgstr ""
 
-#: templates/alsijil/absences/register.html:5
-#: templates/alsijil/absences/register.html:6
-#: templates/alsijil/class_register/person.html:46
-#: templates/alsijil/class_register/week_view.html:332
-#: templates/alsijil/partials/persons_with_stats.html:115
+#: 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:327
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:115
 msgid "Register absence"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:5
-#: templates/alsijil/absences/register_confirm.html:6
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:5
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:6
 msgid "Confirm: Register absence"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:10
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:10
 msgid ""
 "\n"
 "      Do you really want to register the following absence?\n"
 "    "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:27
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:27
 msgid ""
 "\n"
 "                  As the length of this absence is longer than one day,\n"
@@ -483,106 +577,95 @@ msgid ""
 "                "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:37
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:37
 #, python-format
 msgid " %(count)s affected lessons "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:42
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:42
 msgid ""
 "\n"
 "                  There are no affected lessons. Registering this absence won't have any effect.\n"
 "                "
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:59
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:59
 msgid "Reset status to 'not absent'"
 msgstr ""
 
-#: templates/alsijil/absences/register_confirm.html:81
+#: aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html:81
 msgid "Cancel"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:21
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:21
 msgid "Students"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:35
-#: templates/alsijil/class_register/groups.html:76
-#: templates/alsijil/class_register/week_view.html:40
-#: templates/alsijil/class_register/week_view.html:51
+#: 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:40
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:51
 msgid "Students list"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:39
-#: templates/alsijil/class_register/groups.html:82
-#: templates/alsijil/class_register/persons.html:27
-#: templates/alsijil/class_register/persons.html:43
-#: templates/alsijil/class_register/students_list.html:16
-#: templates/alsijil/class_register/students_list.html:35
-#: templates/alsijil/class_register/week_view.html:6
+#: 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/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
 msgid "Week view"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:45
-#: templates/alsijil/class_register/groups.html:90
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:45
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:90
 msgid "Roles"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:51
-#: templates/alsijil/class_register/groups.html:98
-#: templates/alsijil/class_register/persons.html:31
-#: templates/alsijil/class_register/persons.html:50
-#: templates/alsijil/class_register/students_list.html:20
-#: templates/alsijil/class_register/students_list.html:42
-#: templates/alsijil/class_register/week_view.html:44
-#: templates/alsijil/class_register/week_view.html:58
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:51
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:98
+#: aleksis/apps/alsijil/templates/alsijil/class_register/persons.html:31
+#: 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:44
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:58
 msgid "Generate printout"
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:59
-#: templates/alsijil/class_register/groups.html:104
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:59
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:104
 msgid "No groups available."
 msgstr ""
 
-#: templates/alsijil/class_register/groups.html:71
+#: aleksis/apps/alsijil/templates/alsijil/class_register/groups.html:71
 msgid "students"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:5
 msgid "Lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:20
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:20
 msgid "Back to week view"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:29
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:29
 msgid "My previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:38
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:38
 msgid "My next lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:50
-#: templates/alsijil/class_register/lesson.html:185
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:50
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:187
 #, python-format
 msgid "%(period)s. period"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:56
-#: templates/alsijil/class_register/person.html:206
-#: templates/alsijil/class_register/week_view.html:151
-#: templates/alsijil/class_register/week_view.html:214
-#: templates/alsijil/class_register/week_view.html:268
-#: templates/alsijil/partials/lesson_status_icon.html:16
-#: templates/alsijil/print/full_register.html:335
-#: templates/alsijil/print/full_register.html:415 util/alsijil_helpers.py:316
-msgid "Event"
-msgstr ""
-
-#: templates/alsijil/class_register/lesson.html:85
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:85
 #, python-format
 msgid ""
 "\n"
@@ -590,7 +673,7 @@ msgid ""
 "          "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:95
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:95
 #, python-format
 msgid ""
 "\n"
@@ -598,53 +681,53 @@ msgid ""
 "          "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:120
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:121
 msgid "Previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:129
-#: templates/alsijil/class_register/lesson.html:378
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:131
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:380
 msgid "Change history"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:184
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:186
 msgid "Overview: Previous lesson"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:191
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:193
 msgid "Lesson topic of previous lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:198
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:200
 msgid "Homework for this lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:205
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:207
 msgid "Group notes for previous lesson:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:212
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:214
 msgid "Absent persons:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:219
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:221
 msgid "Late persons:"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:262
-#: templates/alsijil/class_register/person.html:125
-#: templates/alsijil/partials/persons_with_stats.html:17
-#: templates/alsijil/partials/persons_with_stats.html:34
-#: templates/alsijil/partials/persons_with_stats.html:91
-#: templates/alsijil/print/full_register.html:287
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:264
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:146
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:17
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:34
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:91
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:287
 msgid "Tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:291
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:293
 msgid "Tardiness (in m)"
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:397
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:399
 #, python-format
 msgid ""
 "\n"
@@ -652,7 +735,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:407
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:409
 #, python-format
 msgid ""
 "\n"
@@ -660,163 +743,134 @@ msgid ""
 "            "
 msgstr ""
 
-#: templates/alsijil/class_register/lesson.html:423
+#: aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html:425
 msgid ""
 "\n"
 "                This lesson overlaps with holidays and can't be edited.\n"
 "              "
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:5
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:10
 msgid "Class register: person"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:13
-#: templates/alsijil/class_register/students_list.html:10
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:18
+#: aleksis/apps/alsijil/templates/alsijil/class_register/students_list.html:10
 msgid "Back"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:16
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:22
 #, python-format
 msgid ""
 "\n"
-"    Class register overview for %(person)s\n"
-"  "
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:52
-#: templates/alsijil/partials/legend.html:14
-msgid "Unexcused absences"
-msgstr ""
-
-#: templates/alsijil/class_register/person.html:61
-#: templates/alsijil/class_register/person.html:80
-#: templates/alsijil/class_register/person.html:217
-#: templates/alsijil/class_register/person.html:264
-msgid "Mark as"
+"      Class register overview for %(person)s\n"
+"    "
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:64
-#: templates/alsijil/class_register/person.html:83
-#: templates/alsijil/class_register/person.html:220
-#: templates/alsijil/class_register/person.html:226
-#: templates/alsijil/class_register/person.html:267
-#: templates/alsijil/class_register/person.html:273
-msgid "Delete note"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:50
+msgid "Statistics"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:93
-msgid "There are no unexcused lessons."
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:65
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:304
+msgid "Relevant personal notes"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:98
-msgid "Statistics on absences, tardiness and remarks"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:68
+msgid "Filter personal notes"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:107
-#: templates/alsijil/partials/legend.html:10
-#: templates/alsijil/partials/persons_with_stats.html:16
-#: templates/alsijil/partials/persons_with_stats.html:26
-#: templates/alsijil/partials/persons_with_stats.html:69
-#: templates/alsijil/print/full_register.html:269
-msgid "Absences"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:73
+msgid "Clear all filters"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:111
-#: templates/alsijil/print/full_register.html:274
-msgid "thereof"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:76
+msgid "Close"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:121
-#: templates/alsijil/partials/persons_with_stats.html:86
-#: templates/alsijil/print/full_register.html:81
-#: templates/alsijil/print/full_register.html:283
-msgid "Unexcused"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:79
+msgid "Filter"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:142
-#: templates/alsijil/print/full_register.html:304
-msgid "Relevant personal notes"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:119
+msgid "Statistics on absences, tardiness and remarks"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:158
-#, python-format
-msgid "Week %(week)s"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:128
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:10
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:16
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:26
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:269
+msgid "Absences"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:166
-#: templates/alsijil/class_register/person.html:184
-msgid "Mark all as"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:132
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:274
+msgid "thereof"
 msgstr ""
 
-#: templates/alsijil/class_register/person.html:249
-#, python-format
-msgid "%(late)s' late"
+#: aleksis/apps/alsijil/templates/alsijil/class_register/person.html:142
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:86
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:81
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:283
+msgid "Unexcused"
 msgstr ""
 
-#: templates/alsijil/class_register/students_list.html:5
-#: templates/alsijil/class_register/students_list.html:12
+#: 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 ""
 
-#: templates/alsijil/class_register/week_view.html:23
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:23
 msgid "Select"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:31
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:31
 #, python-format
 msgid ""
 "CW %(week)s:\n"
 "      %(instance)s"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:102
-msgid "Period"
-msgstr ""
-
-#: templates/alsijil/class_register/week_view.html:107
-#: templates/alsijil/class_register/week_view.html:231
-msgid "Teachers"
-msgstr ""
-
-#: templates/alsijil/class_register/week_view.html:343
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:340
 msgid "unexcused"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:343
 msgid "Summed up tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:349
-#: templates/alsijil/partials/persons_with_stats.html:94
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:346
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:94
 msgid "Count of tardiness"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:383
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:378
 msgid "No lessons available"
 msgstr ""
 
-#: templates/alsijil/class_register/week_view.html:386
+#: aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html:381
 msgid ""
 "\n"
 "            There are no lessons for the selected group or teacher in this week.\n"
 "          "
 msgstr ""
 
-#: templates/alsijil/excuse_type/create.html:6
-#: templates/alsijil/excuse_type/create.html:7
-#: templates/alsijil/excuse_type/list.html:18
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/list.html:18
 msgid "Create excuse type"
 msgstr ""
 
-#: templates/alsijil/excuse_type/edit.html:6
-#: templates/alsijil/excuse_type/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/edit.html:7
 msgid "Edit excuse type"
 msgstr ""
 
-#: templates/alsijil/excuse_type/warning.html:5
-#: templates/alsijil/group_role/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/excuse_type/warning.html:5
+#: aleksis/apps/alsijil/templates/alsijil/group_role/warning.html:5
 msgid ""
 "\n"
 "      This function should only be used to define alternatives to the default excuse which also will be counted extra.\n"
@@ -824,75 +878,75 @@ msgid ""
 "    "
 msgstr ""
 
-#: templates/alsijil/extra_mark/create.html:6
-#: templates/alsijil/extra_mark/create.html:7
-#: templates/alsijil/extra_mark/list.html:14
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/list.html:14
 msgid "Create extra mark"
 msgstr ""
 
-#: templates/alsijil/extra_mark/edit.html:6
-#: templates/alsijil/extra_mark/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/extra_mark/edit.html:7
 msgid "Edit extra mark"
 msgstr ""
 
-#: templates/alsijil/group_role/assign.html:9
-#: templates/alsijil/group_role/assign.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:16
 #, python-format
 msgid "Assign group role for %(group)s"
 msgstr ""
 
-#: templates/alsijil/group_role/assign.html:34
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assign.html:34
 msgid "Assign"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:9
-#: templates/alsijil/group_role/assigned_list.html:12
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:9
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:12
 #, python-format
 msgid "Group roles for %(group)s"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:28
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:28
 msgid "Back to my groups"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:36
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:36
 msgid "Assign a role to a person"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:45
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:45
 msgid "Current roles"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:48
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:48
 msgid "All assignments"
 msgstr ""
 
-#: templates/alsijil/group_role/assigned_list.html:66
-#: templates/alsijil/group_role/assigned_list.html:83
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:66
+#: aleksis/apps/alsijil/templates/alsijil/group_role/assigned_list.html:83
 msgid "Actions"
 msgstr ""
 
-#: templates/alsijil/group_role/create.html:6
-#: templates/alsijil/group_role/create.html:7
-#: templates/alsijil/group_role/list.html:16
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/create.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/list.html:16
 msgid "Create group role"
 msgstr ""
 
-#: templates/alsijil/group_role/edit.html:6
-#: templates/alsijil/group_role/edit.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:6
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit.html:7
 msgid "Edit group role"
 msgstr ""
 
-#: templates/alsijil/group_role/edit_assignment.html:7
-#: templates/alsijil/group_role/edit_assignment.html:8
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:7
+#: aleksis/apps/alsijil/templates/alsijil/group_role/edit_assignment.html:8
 msgid "Edit group role assignment"
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:31
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:31
 msgid "No one assigned."
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assigned_roles.html:42
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html:42
 msgid ""
 "\n"
 "      You can get some additional actions for each group role assignment if you click on the name of the\n"
@@ -900,122 +954,119 @@ msgid ""
 "    "
 msgstr ""
 
-#: templates/alsijil/group_role/partials/assignment_options.html:21
+#: aleksis/apps/alsijil/templates/alsijil/group_role/partials/assignment_options.html:21
 msgid "Stop"
 msgstr ""
 
-#: templates/alsijil/notifications/check.html:1
+#: aleksis/apps/alsijil/templates/alsijil/notifications/check.html:1
 msgid "Please check if the following class register entries are complete and correct:"
 msgstr ""
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:27
-#: templates/alsijil/partials/persons_with_stats.html:44
-#: templates/alsijil/print/full_register.html:126
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:44
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:126
 msgid "(e)"
 msgstr ""
 
-#: templates/alsijil/partials/absences.html:6
-#: templates/alsijil/partials/persons_with_stats.html:33
-#: templates/alsijil/partials/persons_with_stats.html:50
-#: templates/alsijil/print/full_register.html:130
+#: aleksis/apps/alsijil/templates/alsijil/partials/absences.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:33
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:50
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:130
 msgid "(u)"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:4
 msgid "Legend"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:7
-#: templates/alsijil/print/full_register.html:71
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:7
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:71
 msgid "General"
 msgstr ""
 
-#: templates/alsijil/partials/legend.html:18
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:14
+msgid "Unexcused absences"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/partials/legend.html:18
 msgid "Excused absences"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:6
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:6
 msgid "Data complete"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:12
-#: templates/alsijil/partials/lesson_status_icon.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:12
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:25
 msgid "Missing data"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:14
-#: templates/alsijil/partials/lesson_status_icon.html:27
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:14
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:27
 msgid "Pending"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:23
-#: templates/alsijil/print/full_register.html:426
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:23
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:426
 msgid "Lesson cancelled"
 msgstr ""
 
-#: templates/alsijil/partials/lesson_status_icon.html:29
+#: aleksis/apps/alsijil/templates/alsijil/partials/lesson_status_icon.html:29
 msgid "Substitution"
 msgstr ""
 
-#: templates/alsijil/partials/mark_as_buttons.html:4
-#: templates/alsijil/print/full_register.html:346
-#: templates/alsijil/print/full_register.html:444
-#: templates/alsijil/print/full_register.html:459
-msgid "e"
-msgstr ""
-
-#: templates/alsijil/partials/objects_table.html:4
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:4
 msgid "Lesson filter"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:9
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:9
 msgid "Update filters"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:22
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:22
 msgid "Lesson table"
 msgstr ""
 
-#: templates/alsijil/partials/objects_table.html:31
+#: aleksis/apps/alsijil/templates/alsijil/partials/objects_table.html:31
 msgid "Execute"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:7
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:7
 msgid "No students available."
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:15
-#: templates/alsijil/partials/persons_with_stats.html:25
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:15
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:25
 msgid "Primary group"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:43
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:43
 msgid "Sum"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:107
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:107
 msgid "Show more details"
 msgstr ""
 
-#: templates/alsijil/partials/persons_with_stats.html:108
+#: aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html:108
 msgid "Details"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:6
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:6
 msgid "Class register:"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:26
-#: templates/alsijil/print/full_register.html:59
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:26
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:59
 msgid "Owners"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:30
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:30
 msgid "Printed on"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:38
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:38
 msgid ""
 "\n"
 "        This printout is intended for archival purposes. The main copy of\n"
@@ -1024,7 +1075,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:45
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:45
 msgid ""
 "\n"
 "        Copies of the class register, both digital and as printout, must\n"
@@ -1033,7 +1084,7 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:52
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:52
 msgid ""
 "\n"
 "        The owner of the group and the headteacher confirm the above, as\n"
@@ -1041,208 +1092,202 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:62
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:62
 msgid "Headteacher"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:69
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:69
 msgid "Abbreviations"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:78
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:78
 msgid "Late"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:89
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:89
 msgid "Custom excuse types"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:101
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:101
 msgid "Available extra marks"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:115
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:115
 msgid "Persons in group"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:120
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:120
 msgid "No."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:121
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:121
 msgid "Last name"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:122
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:122
 msgid "First name"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:123
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:123
 msgid "Sex"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:124
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:124
 msgid "Date of birth"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:125
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:125
 msgid "(a)"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:131
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:131
 msgid "(b)"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:164
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:164
 msgid "Teachers and lessons in group"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:171
-#: templates/alsijil/print/full_register.html:202
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:171
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:202
 msgid "Lesson start"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:172
-#: templates/alsijil/print/full_register.html:203
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:172
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:203
 msgid "Lesson end"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:173
-#: templates/alsijil/print/full_register.html:204
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:173
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:204
 msgid "Per week"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:194
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:194
 msgid "Teachers and lessons in child groups"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:227
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:227
 msgid "Personal overview"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:229
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:229
 msgid "Contact details"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:266
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:266
 msgid "Absences and tardiness"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:308
-msgid "Date"
-msgstr ""
-
-#: templates/alsijil/print/full_register.html:309
-#: templates/alsijil/print/full_register.html:379
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:309
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:379
 msgid "Pe."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:310
-#: templates/alsijil/print/full_register.html:380
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:310
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:380
 msgid "Subj."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:311
-#: templates/alsijil/print/full_register.html:384
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:311
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:384
 msgid "Te."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:313
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:313
 msgid "Tard."
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:341
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:341
 msgid "Yes"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:373
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:346
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:444
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:459
+msgid "e"
+msgstr ""
+
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:373
 msgid "Week"
 msgstr ""
 
-#: templates/alsijil/print/full_register.html:383
+#: aleksis/apps/alsijil/templates/alsijil/print/full_register.html:383
 msgid "Notes"
 msgstr ""
 
-#: views.py:108
+#: aleksis/apps/alsijil/views.py:114
 msgid "You either selected an invalid lesson or there is currently no lesson in progress."
 msgstr ""
 
-#: views.py:141
+#: aleksis/apps/alsijil/views.py:147
 msgid "You are not allowed to create a lesson documentation for a lesson in the future."
 msgstr ""
 
-#: views.py:225
+#: aleksis/apps/alsijil/views.py:241
 msgid "The lesson documentation has been saved."
 msgstr ""
 
-#: views.py:259
+#: aleksis/apps/alsijil/views.py:275
 msgid "The personal notes have been saved."
 msgstr ""
 
-#: views.py:782
-msgid "The absences have been marked as excused."
-msgstr ""
-
-#: views.py:797
-msgid "The absence has been marked as excused."
-msgstr ""
-
-#: views.py:988
+#: aleksis/apps/alsijil/views.py:1029
 msgid "The absence has been saved."
 msgstr ""
 
-#: views.py:1009
+#: aleksis/apps/alsijil/views.py:1050
 msgid "The personal note has been deleted."
 msgstr ""
 
-#: views.py:1031
+#: aleksis/apps/alsijil/views.py:1072
 msgid "The extra mark has been created."
 msgstr ""
 
-#: views.py:1043
+#: aleksis/apps/alsijil/views.py:1084
 msgid "The extra mark has been saved."
 msgstr ""
 
-#: views.py:1054
+#: aleksis/apps/alsijil/views.py:1095
 msgid "The extra mark has been deleted."
 msgstr ""
 
-#: views.py:1075
+#: aleksis/apps/alsijil/views.py:1116
 msgid "The excuse type has been created."
 msgstr ""
 
-#: views.py:1087
+#: aleksis/apps/alsijil/views.py:1128
 msgid "The excuse type has been saved."
 msgstr ""
 
-#: views.py:1098
+#: aleksis/apps/alsijil/views.py:1139
 msgid "The excuse type has been deleted."
 msgstr ""
 
-#: views.py:1119
+#: aleksis/apps/alsijil/views.py:1160
 msgid "The group role has been created."
 msgstr ""
 
-#: views.py:1131
+#: aleksis/apps/alsijil/views.py:1172
 msgid "The group role has been saved."
 msgstr ""
 
-#: views.py:1142
+#: aleksis/apps/alsijil/views.py:1183
 msgid "The group role has been deleted."
 msgstr ""
 
-#: views.py:1175 views.py:1207
+#: aleksis/apps/alsijil/views.py:1216 aleksis/apps/alsijil/views.py:1248
 msgid "The group role has been assigned."
 msgstr ""
 
-#: views.py:1226
+#: aleksis/apps/alsijil/views.py:1267
 msgid "The group role assignment has been saved."
 msgstr ""
 
-#: views.py:1247
+#: aleksis/apps/alsijil/views.py:1288
 msgid "The group role assignment has been stopped."
 msgstr ""
 
-#: views.py:1260
+#: aleksis/apps/alsijil/views.py:1301
 msgid "The group role assignment has been deleted."
 msgstr ""
diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
index e04e7c1da250e23fdcd7d2ef6978ef7d2cfa7602..c563321150ad30a2a3ec54134c3f842c572f4f2e 100644
--- a/aleksis/apps/alsijil/preferences.py
+++ b/aleksis/apps/alsijil/preferences.py
@@ -1,5 +1,5 @@
 from django.core.exceptions import ValidationError
-from django.utils.translation import gettext as _
+from django.utils.translation import gettext_lazy as _
 
 from dynamic_preferences.preferences import Section
 from dynamic_preferences.types import BooleanPreference, IntegerPreference
diff --git a/aleksis/apps/alsijil/static/css/alsijil/person.css b/aleksis/apps/alsijil/static/css/alsijil/person.css
index fdba89c2808ccb46cc1535b3f27545c366af6c68..b5a59aae95235f696a06d0641215b1392dd5b2a3 100644
--- a/aleksis/apps/alsijil/static/css/alsijil/person.css
+++ b/aleksis/apps/alsijil/static/css/alsijil/person.css
@@ -93,3 +93,9 @@ td.material-icons {
 .overflow-x-scroll {
     overflow-x: scroll;
 }
+
+figure.modal-content figcaption {
+    font-weight: 300;
+    font-size: 2.28rem;
+    line-height: 110%;
+}
diff --git a/aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html b/aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html
index 449276cdc9781d2a5760e823e882e7582292eac9..dc069357060d16e16983d7e913c9881e9e394537 100644
--- a/aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html
+++ b/aleksis/apps/alsijil/templates/alsijil/absences/register_confirm.html
@@ -21,15 +21,13 @@
           <i class="material-icons left">date_range</i>
           {{ form_data.date_start }}, {{ form_data.from_period }}. – {{ form_data.date_end }}, {{ form_data.to_period }}.
           {% if form_data.date_start != form_data.date_end %}
-            <div class="alert warning">
-              <div>
-                <i class="material-icons left">warning</i>
-                {% blocktrans %}
-                  As the length of this absence is longer than one day,
-                  please double check the correctness of your entry.
-                {% endblocktrans %}
-              </div>
-            </div>
+            <figure class="alert warning">
+              <i class="material-icons left">warning</i>
+              {% blocktrans %}
+                As the length of this absence is longer than one day,
+                please double check the correctness of your entry.
+              {% endblocktrans %}
+            </figure>
           {% endif %}
         </div>
         <div class="collection-item">
diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html
index 7092d63fca12c762273a1590427349efb7ffd216..184846783b16f8803fb2297e7c519c561230d46f 100644
--- a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html
+++ b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html
@@ -10,39 +10,40 @@
 {% endblock %}
 
 {% block content %}
-  {% if next_lesson_person or prev_lesson_person or lesson_documentation %}
-    <div class="row no-margin">
-      <div class="col s12 no-padding">
-        {# Back to week view #}
-        {% if back_to_week_url %}
-          <a href="{{ back_to_week_url }}"
-             class="btn primary-color waves-light waves-effect alsijil-top-button">
-            <i class="material-icons left">chevron_left</i> {% trans "Back to week view" %}
-          </a>
-        {% endif %}
-
-        {# Next lesson #}
-        {% if prev_lesson_person %}
-          <a class="btn primary waves-effect waves-light alsijil-top-button"
-             href="{% url "lesson_period" prev_lesson_person.week.year prev_lesson_person.week.week prev_lesson_person.id %}">
+  <h1>
+    {% if next_lesson_person or prev_lesson_person or lesson_documentation %}
+      <div class="row no-margin">
+        <div class="col s12 no-padding">
+          {# Back to week view #}
+          {% if back_to_week_url %}
+            <a href="{{ back_to_week_url }}"
+               class="btn primary-color waves-light waves-effect alsijil-top-button">
+              <i class="material-icons left">chevron_left</i> {% trans "Back to week view" %}
+            </a>
+          {% endif %}
+
+          {# Next lesson #}
+          {% if prev_lesson_person %}
+            <a class="btn primary waves-effect waves-light alsijil-top-button"
+               href="{% url " lesson_period" prev_lesson_person.week.year prev_lesson_person.week.week prev_lesson_person.id %}">
             <i class="material-icons left">arrow_back</i>
             {% trans "My previous lesson" %}
-          </a>
-        {% endif %}
+            </a>
+          {% endif %}
 
-        {# Previous lesson #}
-        {% if next_lesson_person %}
-          <a class="btn primary right waves-effect waves-light alsijil-top-button"
-             href="{% url "lesson_period" next_lesson_person.week.year next_lesson_person.week.week next_lesson_person.id %}">
+          {# Previous lesson #}
+          {% if next_lesson_person %}
+            <a class="btn primary right waves-effect waves-light alsijil-top-button"
+               href="{% url " lesson_period" next_lesson_person.week.year next_lesson_person.week.week next_lesson_person.id %}">
             <i class="material-icons right">arrow_forward</i>
             {% trans "My next lesson" %}
-          </a>
-        {% endif %}
+            </a>
+          {% endif %}
+        </div>
       </div>
-    </div>
-  {% endif %}
+    {% endif %}
+
 
-  <h4>
     {% if register_object.label_ == "event" %}
       {{ register_object.date_start }} {{ register_object.period_from.period }}.–{{ register_object.date_end }}
       {{ register_object.period_to.period }}.,
@@ -63,7 +64,7 @@
     <span class="right">
       {% include "alsijil/partials/lesson_status_icon.html" with register_object=register_object css_class="medium" %}
     </span>
-  </h4>
+  </h1>
   <br/>
 
   {% has_perm "alsijil.view_lessondocumentation_rule" user register_object as can_view_lesson_documentation %}
diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/person.html b/aleksis/apps/alsijil/templates/alsijil/class_register/person.html
index e73e48dcafc3cd1bba617e2cc9cd30e6799c439a..c97dd69bab4a2fd7788f612ac2b07932723c3184 100644
--- a/aleksis/apps/alsijil/templates/alsijil/class_register/person.html
+++ b/aleksis/apps/alsijil/templates/alsijil/class_register/person.html
@@ -62,12 +62,12 @@
   <!-- Personal Note Tab -->
   <div class="col s12" id="personal-notes">
     <div class="col s12" id="overview">
-      <h5>{% trans "Relevant personal notes" %}</h5>
+      <h2>{% trans "Relevant personal notes" %}</h2>
       <form class="modal" id="filter-modal">
-        <div class="modal-content">
-          <h4>{% trans "Filter personal notes" %}</h4>
+        <figure class="modal-content">
+          <figcaption>{% trans "Filter personal notes" %}</figcaption>
           {% form form=personal_note_filter_form %}{% endform %}
-        </div>
+        </figure>
         <div class="modal-footer">
           <button type="button" class="btn-flat secondary-color-text waves-effect waves-ripple" id="remove-filters">
             <i class="material-icons left">clear</i>{% trans "Clear all filters" %}
@@ -116,7 +116,7 @@
   <!-- Statistics Tab -->
   {% if stats %}
     <div class="col s12" id="statistics">
-      <h5>{% trans "Statistics on absences, tardiness and remarks" %}</h5>
+      <h2>{% trans "Statistics on absences, tardiness and remarks" %}</h2>
       <ul class="collapsible">
         {% for school_term, stat in stats %}
           <li {% if forloop.first %}class="active"{% endif %}>
diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/persons.html b/aleksis/apps/alsijil/templates/alsijil/class_register/persons.html
index 84461c1830f81c411607f914c5102339dc62c709..f2c8394912a6f9bd7ddd15d734870168e08b0ee1 100644
--- a/aleksis/apps/alsijil/templates/alsijil/class_register/persons.html
+++ b/aleksis/apps/alsijil/templates/alsijil/class_register/persons.html
@@ -32,9 +32,9 @@
               </a>
             </span>
 
-            <h6>{{ group.name }}
+            <h2>{{ group.name }}
               <span class="chip">{{ group.school_term }}</span>
-            </h6>
+            </h2>
 
             <p class="show-on-active hide-on-med-and-up">
               <a class="btn primary-color waves-effect waves-light hundred-percent"
diff --git a/aleksis/apps/alsijil/templates/alsijil/excuse_type/warning.html b/aleksis/apps/alsijil/templates/alsijil/excuse_type/warning.html
index d90d2e8205b1c91c18e74e02654fde3daebc4971..9ff8af6e9c6f3c2e81970e40067a82c772e5c54c 100644
--- a/aleksis/apps/alsijil/templates/alsijil/excuse_type/warning.html
+++ b/aleksis/apps/alsijil/templates/alsijil/excuse_type/warning.html
@@ -1,10 +1,8 @@
 {% load i18n %}
-<div class="alert warning">
-  <p>
-    <i class="material-icons left">warning</i>
-    {% blocktrans %}
-      This function should only be used to define alternatives to the default excuse which also will be counted extra.
-      Don't use this to create a default excuse or if you don't divide between different types of excuse.
-    {% endblocktrans %}
-  </p>
-</div>
+<figure class="alert warning">
+  <i class="material-icons left">warning</i>
+  {% blocktrans %}
+    This function should only be used to define alternatives to the default excuse which also will be counted extra.
+    Don't use this to create a default excuse or if you don't divide between different types of excuse.
+  {% endblocktrans %}
+</figure>
diff --git a/aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html b/aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html
index 349cd940cacbb9a8cc0ed19c277a1e08220877ce..fddec1113e80669262402327a7ba3ff23fa45373 100644
--- a/aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html
+++ b/aleksis/apps/alsijil/templates/alsijil/group_role/partials/assigned_roles.html
@@ -36,12 +36,10 @@
   {% endfor %}
 </div>
 
-<div class="alert primary">
-  <div>
-    <i class="material-icons left">info</i>
-    {% blocktrans %}
-      You can get some additional actions for each group role assignment if you click on the name of the
-      corresponding person.
-    {% endblocktrans %}
-  </div>
-</div>
\ No newline at end of file
+<figure class="alert primary">
+  <i class="material-icons left">info</i>
+  {% blocktrans %}
+    You can get some additional actions for each group role assignment if you click on the name of the
+    corresponding person.
+  {% endblocktrans %}
+</figure>
\ No newline at end of file
diff --git a/aleksis/apps/alsijil/templates/alsijil/group_role/warning.html b/aleksis/apps/alsijil/templates/alsijil/group_role/warning.html
index d90d2e8205b1c91c18e74e02654fde3daebc4971..9ff8af6e9c6f3c2e81970e40067a82c772e5c54c 100644
--- a/aleksis/apps/alsijil/templates/alsijil/group_role/warning.html
+++ b/aleksis/apps/alsijil/templates/alsijil/group_role/warning.html
@@ -1,10 +1,8 @@
 {% load i18n %}
-<div class="alert warning">
-  <p>
-    <i class="material-icons left">warning</i>
-    {% blocktrans %}
-      This function should only be used to define alternatives to the default excuse which also will be counted extra.
-      Don't use this to create a default excuse or if you don't divide between different types of excuse.
-    {% endblocktrans %}
-  </p>
-</div>
+<figure class="alert warning">
+  <i class="material-icons left">warning</i>
+  {% blocktrans %}
+    This function should only be used to define alternatives to the default excuse which also will be counted extra.
+    Don't use this to create a default excuse or if you don't divide between different types of excuse.
+  {% endblocktrans %}
+</figure>
diff --git a/aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html b/aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html
index ea78cc7eb904c07cc151e7e23584120941d04704..404705dfbc3fe7cb4d6cfde5561ed2f3fb82de13 100644
--- a/aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html
+++ b/aleksis/apps/alsijil/templates/alsijil/partials/persons_with_stats.html
@@ -1,12 +1,10 @@
 {% load data_helpers time_helpers i18n rules %}
 
 {% if not persons %}
-  <div class="alert primary">
-    <div>
-      <i class="material-icons left">warning</i>
-      {% blocktrans %}No students available.{% endblocktrans %}
-    </div>
-  </div>
+  <figure class="alert primary">
+    <i class="material-icons left">warning</i>
+    {% blocktrans %}No students available.{% endblocktrans %}
+  </figure>
 {% else %}
   <table class="highlight responsive-table">
   <thead>
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index e2d68f961c7d979a5aae72eba40fbfcd50aa4b7a..3999324f22796719df6586dc7a99a38851fda495 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -957,8 +957,8 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
     filter_dict["person"] = person
     context["filter_form"] = filter_form
 
-    register_objects = generate_list_of_all_register_objects(filter_dict)
-    if register_objects:
+    if request.user.person.is_teacher:
+        register_objects = generate_list_of_all_register_objects(filter_dict)
         table = RegisterObjectTable(register_objects)
         items_per_page = request.user.person.preferences[
             "alsijil__register_objects_table_items_per_page"
diff --git a/poetry.lock b/poetry.lock
index 1a2e0bf8c7c9217c02aae110fe8a3003e155b588..05ff02e0bad36ce27edf1730a33c99246cb59310 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -8,14 +8,14 @@ python-versions = "*"
 
 [[package]]
 name = "aleksis-app-chronos"
-version = "2.0b0"
+version = "2.0rc1+20210623211739.053fedbd"
 description = "AlekSIS (School Information System) — App Χρόνος (digital timetables)"
 category = "main"
 optional = false
 python-versions = ">=3.9,<4.0"
 
 [package.dependencies]
-aleksis-core = ">=2.0b0,<3.0"
+aleksis-core = ">=2.0rc,<3.0"
 calendarweek = ">=0.5.0,<0.6.0"
 
 [package.source]
@@ -66,7 +66,7 @@ reference = "gitlab"
 
 [[package]]
 name = "aleksis-core"
-version = "2.0b0"
+version = "2.1.dev0+20210622180326.408c9ac5"
 description = "AlekSIS (School Information System) — Core"
 category = "main"
 optional = false
@@ -110,16 +110,15 @@ django-material = ">=1.6.0,<2.0.0"
 django-menu-generator-ng = ">=1.2.3,<2.0.0"
 django-model-utils = ">=4.0.0,<5.0.0"
 django-oauth-toolkit = ">=1.5.0,<2.0.0"
-django-phonenumber-field = {version = "<5.2", extras = ["phonenumbers"]}
+django-phonenumber-field = {version = "<5.3", extras = ["phonenumbers"]}
 django-polymorphic = ">=3.0.0,<4.0.0"
 django-prometheus = ">=2.1.0,<3.0.0"
-django-pwa = ">=1.0.8,<2.0.0"
-django-redis = ">=4.12.1,<5.0.0"
+django-redis = ">=5.0.0,<6.0.0"
 django-reversion = ">=3.0.7,<4.0.0"
 django-sass-processor = ">=1.0,<2.0"
 django_select2 = ">=7.1,<8.0"
 django-tables2 = ">=2.1,<3.0"
-django-templated-email = ">=2.3.0,<3.0.0"
+django-templated-email = ">=3.0.0,<4.0.0"
 django-titofisto = ">=0.1.0,<0.2.0"
 django-two-factor-auth = {version = ">=1.12.1,<2.0.0", extras = ["call", "phonenumbers", "sms", "yubikey"]}
 django-uwsgi-ng = ">=1.1.0,<2.0.0"
@@ -134,6 +133,7 @@ libsass = ">=0.21.0,<0.22.0"
 license-expression = ">=1.2,<2.0"
 psutil = ">=5.7.0,<6.0.0"
 psycopg2 = ">=2.8,<3.0"
+python-gnupg = ">=0.4.7,<0.5.0"
 rules = ">=2.2,<3.0"
 spdx-license-list = ">=0.5.0,<0.6.0"
 Whoosh = ">=2.7.4,<3.0.0"
@@ -337,20 +337,20 @@ django = ["Django (>=2.2,<4.0)"]
 
 [[package]]
 name = "celery"
-version = "5.0.5"
+version = "5.1.1"
 description = "Distributed Task Queue."
 category = "main"
 optional = false
 python-versions = ">=3.6,"
 
 [package.dependencies]
-billiard = ">=3.6.3.0,<4.0"
+billiard = ">=3.6.4.0,<4.0"
 click = ">=7.0,<8.0"
 click-didyoumean = ">=0.0.3"
 click-plugins = ">=1.1.1"
 click-repl = ">=0.1.6"
 Django = {version = ">=1.11", optional = true, markers = "extra == \"django\""}
-kombu = ">=5.0.0,<6.0"
+kombu = ">=5.1.0,<6.0"
 pytz = ">0.0-dev"
 redis = {version = ">=3.2.0", optional = true, markers = "extra == \"redis\""}
 vine = ">=5.0.0,<6.0"
@@ -358,10 +358,10 @@ vine = ">=5.0.0,<6.0"
 [package.extras]
 arangodb = ["pyArango (>=1.3.2)"]
 auth = ["cryptography"]
-azureblockblob = ["azure-storage (==0.36.0)", "azure-common (==1.1.5)", "azure-storage-common (==1.1.0)"]
+azureblockblob = ["azure-storage-blob (==12.6.0)"]
 brotli = ["brotli (>=1.0.0)", "brotlipy (>=0.7.0)"]
 cassandra = ["cassandra-driver (<3.21.0)"]
-consul = ["python-consul"]
+consul = ["python-consul2"]
 cosmosdbsql = ["pydocumentdb (==2.3.2)"]
 couchbase = ["couchbase (>=3.0.0)"]
 couchdb = ["pycouchdb"]
@@ -371,7 +371,6 @@ elasticsearch = ["elasticsearch"]
 eventlet = ["eventlet (>=0.26.1)"]
 gevent = ["gevent (>=1.0.0)"]
 librabbitmq = ["librabbitmq (>=1.5.0)"]
-lzma = ["backports.lzma"]
 memcache = ["pylibmc"]
 mongodb = ["pymongo[srv] (>=3.3.0)"]
 msgpack = ["msgpack"]
@@ -417,7 +416,7 @@ websockets = ["channels"]
 
 [[package]]
 name = "certifi"
-version = "2020.12.5"
+version = "2021.5.30"
 description = "Python package for providing Mozilla's CA Bundle."
 category = "main"
 optional = false
@@ -477,7 +476,7 @@ dev = ["pytest (>=3.6)", "pytest-cov", "wheel", "coveralls"]
 
 [[package]]
 name = "click-repl"
-version = "0.1.6"
+version = "0.2.0"
 description = "REPL plugin for Click"
 category = "main"
 optional = false
@@ -526,9 +525,6 @@ category = "dev"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
 
-[package.dependencies]
-toml = {version = "*", optional = true, markers = "extra == \"toml\""}
-
 [package.extras]
 toml = ["toml"]
 
@@ -585,6 +581,20 @@ category = "main"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
+[[package]]
+name = "deprecated"
+version = "1.2.12"
+description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[package.dependencies]
+wrapt = ">=1.10,<2"
+
+[package.extras]
+dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "importlib-resources (<4)", "configparser (<5)", "sphinxcontrib-websupport (<2)", "zipp (<2)", "PyTest (<5)", "PyTest-Cov (<2.6)", "pytest", "pytest-cov"]
+
 [[package]]
 name = "dj-database-url"
 version = "0.5.0"
@@ -595,7 +605,7 @@ python-versions = "*"
 
 [[package]]
 name = "django"
-version = "3.2.3"
+version = "3.2.4"
 description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design."
 category = "main"
 optional = false
@@ -672,7 +682,7 @@ Django = ">=1.8"
 
 [[package]]
 name = "django-cachalot"
-version = "2.4.1"
+version = "2.4.2"
 description = "Caches your Django ORM queries and automatically invalidates them."
 category = "main"
 optional = false
@@ -721,18 +731,18 @@ django-appconf = "*"
 
 [[package]]
 name = "django-celery-results"
-version = "2.0.1"
+version = "2.1.0"
 description = "Celery result backends for Django."
 category = "main"
 optional = false
 python-versions = "*"
 
 [package.dependencies]
-celery = ">=4.4,<6.0"
+celery = ">=5.0,<6.0"
 
 [[package]]
 name = "django-ckeditor"
-version = "6.0.0"
+version = "6.1.0"
 description = "Django admin CKEditor integration."
 category = "main"
 optional = false
@@ -842,7 +852,7 @@ Django = ">=2.2"
 
 [[package]]
 name = "django-guardian"
-version = "2.3.0"
+version = "2.4.0"
 description = "Implementation of per object permissions for Django."
 category = "main"
 optional = false
@@ -990,7 +1000,7 @@ six = "*"
 
 [[package]]
 name = "django-otp"
-version = "1.0.5"
+version = "1.0.6"
 description = "A pluggable framework for adding two-factor authentication to Django using one-time passwords."
 category = "main"
 optional = false
@@ -1016,7 +1026,7 @@ YubiOTP = ">=0.2.2"
 
 [[package]]
 name = "django-phonenumber-field"
-version = "5.1.0"
+version = "5.2.0"
 description = "An international phone number field for django models."
 category = "main"
 optional = false
@@ -1052,24 +1062,13 @@ python-versions = "*"
 [package.dependencies]
 prometheus-client = ">=0.7"
 
-[[package]]
-name = "django-pwa"
-version = "1.0.10"
-description = "A Django app to include a manifest.json and Service Worker instance to enable progressive web app behavior"
-category = "main"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-django = ">=1.8"
-
 [[package]]
 name = "django-redis"
-version = "4.12.1"
+version = "5.0.0"
 description = "Full featured redis cache backend for Django."
 category = "main"
 optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.6"
 
 [package.dependencies]
 Django = ">=2.2"
@@ -1164,7 +1163,7 @@ tablib = ["tablib"]
 
 [[package]]
 name = "django-templated-email"
-version = "2.4.0"
+version = "3.0.0"
 description = "A Django oriented templated / transaction email abstraction"
 category = "main"
 optional = false
@@ -1314,7 +1313,7 @@ yaml = ["ruamel.yaml"]
 
 [[package]]
 name = "faker"
-version = "8.2.1"
+version = "8.8.2"
 description = "Faker is a Python package that generates fake data for you."
 category = "main"
 optional = false
@@ -1485,11 +1484,11 @@ smmap = ">=3.0.1,<5"
 
 [[package]]
 name = "gitpython"
-version = "3.1.17"
+version = "3.1.18"
 description = "Python Git Library"
 category = "dev"
 optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.6"
 
 [package.dependencies]
 gitdb = ">=4.0.1,<5"
@@ -1541,7 +1540,7 @@ python-versions = "*"
 
 [[package]]
 name = "ipython"
-version = "7.23.1"
+version = "7.24.1"
 description = "IPython: Productive Interactive Computing"
 category = "main"
 optional = false
@@ -1561,7 +1560,7 @@ pygments = "*"
 traitlets = ">=4.2"
 
 [package.extras]
-all = ["Sphinx (>=1.3)", "ipykernel", "ipyparallel", "ipywidgets", "nbconvert", "nbformat", "nose (>=0.10.1)", "notebook", "numpy (>=1.16)", "pygments", "qtconsole", "requests", "testpath"]
+all = ["Sphinx (>=1.3)", "ipykernel", "ipyparallel", "ipywidgets", "nbconvert", "nbformat", "nose (>=0.10.1)", "notebook", "numpy (>=1.17)", "pygments", "qtconsole", "requests", "testpath"]
 doc = ["Sphinx (>=1.3)"]
 kernel = ["ipykernel"]
 nbconvert = ["nbconvert"]
@@ -1569,7 +1568,7 @@ nbformat = ["nbformat"]
 notebook = ["notebook", "ipywidgets"]
 parallel = ["ipyparallel"]
 qtconsole = ["qtconsole"]
-test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.16)"]
+test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.17)"]
 
 [[package]]
 name = "ipython-genutils"
@@ -1581,16 +1580,17 @@ python-versions = "*"
 
 [[package]]
 name = "isort"
-version = "5.8.0"
+version = "5.9.1"
 description = "A Python utility / library to sort Python imports."
 category = "dev"
 optional = false
-python-versions = ">=3.6,<4.0"
+python-versions = ">=3.6.1,<4.0"
 
 [package.extras]
 pipfile_deprecated_finder = ["pipreqs", "requirementslib"]
 requirements_deprecated_finder = ["pipreqs", "pip-api"]
 colors = ["colorama (>=0.4.3,<0.5.0)"]
+plugins = ["setuptools"]
 
 [[package]]
 name = "jedi"
@@ -1623,7 +1623,7 @@ i18n = ["Babel (>=2.7)"]
 
 [[package]]
 name = "jwcrypto"
-version = "0.8"
+version = "0.9.1"
 description = "Implementation of JOSE Web standards"
 category = "main"
 optional = false
@@ -1631,20 +1631,23 @@ python-versions = "*"
 
 [package.dependencies]
 cryptography = ">=2.3"
+deprecated = "*"
+six = "*"
 
 [[package]]
 name = "kombu"
-version = "5.0.2"
+version = "5.1.0"
 description = "Messaging library for Python."
 category = "main"
 optional = false
 python-versions = ">=3.6"
 
 [package.dependencies]
-amqp = ">=5.0.0,<6.0.0"
+amqp = ">=5.0.6,<6.0.0"
+vine = "*"
 
 [package.extras]
-azureservicebus = ["azure-servicebus (>=0.21.1)"]
+azureservicebus = ["azure-servicebus (>=7.0.0)"]
 azurestoragequeues = ["azure-storage-queue"]
 consul = ["python-consul (>=0.6.0)"]
 librabbitmq = ["librabbitmq (>=1.5.2)"]
@@ -1655,7 +1658,7 @@ qpid = ["qpid-python (>=0.26)", "qpid-tools (>=0.26)"]
 redis = ["redis (>=3.3.11)"]
 slmq = ["softlayer-messaging (>=1.0.3)"]
 sqlalchemy = ["sqlalchemy"]
-sqs = ["boto3 (>=1.4.4)", "pycurl (==7.43.0.2)"]
+sqs = ["boto3 (>=1.4.4)", "pycurl (==7.43.0.2)", "urllib3 (<1.26)"]
 yaml = ["PyYAML (>=3.10)"]
 zookeeper = ["kazoo (>=1.3.1)"]
 
@@ -1710,7 +1713,7 @@ python-versions = "*"
 
 [[package]]
 name = "mypy"
-version = "0.812"
+version = "0.910"
 description = "Optional static typing for Python"
 category = "dev"
 optional = false
@@ -1718,11 +1721,12 @@ python-versions = ">=3.5"
 
 [package.dependencies]
 mypy-extensions = ">=0.4.3,<0.5.0"
-typed-ast = ">=1.4.0,<1.5.0"
+toml = "*"
 typing-extensions = ">=3.7.4"
 
 [package.extras]
 dmypy = ["psutil (>=4.0)"]
+python2 = ["typed-ast (>=1.4.0,<1.5.0)"]
 
 [[package]]
 name = "mypy-extensions"
@@ -1734,16 +1738,16 @@ python-versions = "*"
 
 [[package]]
 name = "oauthlib"
-version = "3.1.0"
+version = "3.1.1"
 description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic"
 category = "main"
 optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+python-versions = ">=3.6"
 
 [package.extras]
-rsa = ["cryptography"]
-signals = ["blinker"]
-signedtoken = ["cryptography", "pyjwt (>=1.0.0)"]
+rsa = ["cryptography (>=3.0.0,<4)"]
+signals = ["blinker (>=1.4.0)"]
+signedtoken = ["cryptography (>=3.0.0,<4)", "pyjwt (>=2.0.0,<3)"]
 
 [[package]]
 name = "packaging"
@@ -1824,7 +1828,7 @@ scramp = "1.4.0"
 
 [[package]]
 name = "phonenumbers"
-version = "8.12.23"
+version = "8.12.25"
 description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers."
 category = "main"
 optional = false
@@ -1859,7 +1863,7 @@ dev = ["pre-commit", "tox"]
 
 [[package]]
 name = "prometheus-client"
-version = "0.10.1"
+version = "0.11.0"
 description = "Python client for the Prometheus monitoring system."
 category = "main"
 optional = false
@@ -1870,7 +1874,7 @@ twisted = ["twisted"]
 
 [[package]]
 name = "prompt-toolkit"
-version = "3.0.18"
+version = "3.0.19"
 description = "Library for building powerful interactive command lines in Python"
 category = "main"
 optional = false
@@ -1892,11 +1896,11 @@ test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"]
 
 [[package]]
 name = "psycopg2"
-version = "2.8.6"
+version = "2.9.1"
 description = "psycopg2 - Python-PostgreSQL Database Adapter"
 category = "main"
 optional = false
-python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
+python-versions = ">=3.6"
 
 [[package]]
 name = "ptyprocess"
@@ -1970,20 +1974,19 @@ python-versions = ">=3.5"
 
 [[package]]
 name = "pyjwt"
-version = "2.1.0"
+version = "1.7.1"
 description = "JSON Web Token implementation in Python"
 category = "main"
 optional = false
-python-versions = ">=3.6"
+python-versions = "*"
 
 [package.dependencies]
-cryptography = {version = ">=3.3.1,<4.0.0", optional = true, markers = "extra == \"crypto\""}
+cryptography = {version = ">=1.4", optional = true, markers = "extra == \"crypto\""}
 
 [package.extras]
-crypto = ["cryptography (>=3.3.1,<4.0.0)"]
-dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1,<4.0.0)", "pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)", "mypy", "pre-commit"]
-docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"]
-tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"]
+crypto = ["cryptography (>=1.4)"]
+flake8 = ["flake8", "flake8-import-order", "pep8-naming"]
+test = ["pytest (>=4.0.1,<5.0.0)", "pytest-cov (>=2.6.0,<3.0.0)", "pytest-runner (>=4.2,<5.0.0)"]
 
 [[package]]
 name = "pyparsing"
@@ -2016,22 +2019,23 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm
 
 [[package]]
 name = "pytest-cov"
-version = "2.12.0"
+version = "2.12.1"
 description = "Pytest plugin for measuring coverage."
 category = "dev"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
 [package.dependencies]
-coverage = {version = ">=5.2.1", extras = ["toml"]}
+coverage = ">=5.2.1"
 pytest = ">=4.6"
+toml = "*"
 
 [package.extras]
-testing = ["fields", "hunter", "process-tests (==2.0.2)", "six", "pytest-xdist", "virtualenv"]
+testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"]
 
 [[package]]
 name = "pytest-django"
-version = "4.3.0"
+version = "4.4.0"
 description = "A Django plugin for pytest."
 category = "dev"
 optional = false
@@ -2095,6 +2099,14 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
 [package.dependencies]
 six = ">=1.5"
 
+[[package]]
+name = "python-gnupg"
+version = "0.4.7"
+description = "A wrapper for the Gnu Privacy Guard (GPG or GnuPG)"
+category = "main"
+optional = false
+python-versions = "*"
+
 [[package]]
 name = "python3-openid"
 version = "3.2.0"
@@ -2209,7 +2221,7 @@ docutils = ">=0.11,<1.0"
 
 [[package]]
 name = "ruamel.yaml"
-version = "0.17.4"
+version = "0.17.9"
 description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order"
 category = "main"
 optional = false
@@ -2531,7 +2543,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
 
 [[package]]
 name = "tqdm"
-version = "4.60.0"
+version = "4.61.1"
 description = "Fast, Extensible Progress Meter"
 category = "main"
 optional = false
@@ -2558,14 +2570,14 @@ test = ["pytest"]
 
 [[package]]
 name = "twilio"
-version = "6.50.1"
+version = "6.60.0"
 description = "Twilio API client and TwiML generator"
 category = "main"
 optional = false
 python-versions = "*"
 
 [package.dependencies]
-PyJWT = ">=1.4.2"
+PyJWT = "1.7.1"
 pytz = "*"
 requests = {version = ">=2.0.0", markers = "python_version >= \"3.0\""}
 six = "*"
@@ -2588,16 +2600,16 @@ python-versions = "*"
 
 [[package]]
 name = "urllib3"
-version = "1.26.4"
+version = "1.26.5"
 description = "HTTP library with thread-safe connection pooling, file post, and more."
 category = "main"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
 
 [package.extras]
+brotli = ["brotlipy (>=0.6.0)"]
 secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
 socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
-brotli = ["brotlipy (>=0.6.0)"]
 
 [[package]]
 name = "vine"
@@ -2631,6 +2643,14 @@ category = "main"
 optional = false
 python-versions = "*"
 
+[[package]]
+name = "wrapt"
+version = "1.12.1"
+description = "Module for decorators, wrappers and monkey patching."
+category = "main"
+optional = false
+python-versions = "*"
+
 [[package]]
 name = "yubiotp"
 version = "1.0.0.post1"
@@ -2645,7 +2665,7 @@ pycryptodome = "*"
 [metadata]
 lock-version = "1.1"
 python-versions = "^3.9"
-content-hash = "d8832f2d98818b3d1b70a09e111eff2eb9f0f9f8f18a1ad59ab4e068bbcf5e61"
+content-hash = "b51e585754841d7d9a71da22ad79fff4df9b115c0d74ce208d35ee633755f560"
 
 [metadata.files]
 alabaster = [
@@ -2653,16 +2673,15 @@ alabaster = [
     {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"},
 ]
 aleksis-app-chronos = [
-    {file = "AlekSIS-App-Chronos-2.0b0.tar.gz", hash = "sha256:7fc45c0db61a7c94aea27e82aff6b2ff5d14762d1ae5b8e756b35fca76109cfd"},
-    {file = "AlekSIS_App_Chronos-2.0b0-py3-none-any.whl", hash = "sha256:5917317d3c9af268731070acfc698f07e62d2bb7c0bd6e3a63f471c3de2d3953"},
+    {file = "AlekSIS-App-Chronos-2.0rc1+20210623211739.053fedbd.tar.gz", hash = "sha256:45a32e88c2a6ad7e0114aedac7edd166d2f9830aa3392504a0b886a515870f73"},
+    {file = "AlekSIS_App_Chronos-2.0rc1+20210623211739.053fedbd-py3-none-any.whl", hash = "sha256:ad2cdbf24680701b8f52c85f9d2d52a0dcdf68875e8361472eeb3884e835b08d"},
 ]
 aleksis-builddeps = [
     {file = "AlekSIS-Builddeps-4.tar.gz", hash = "sha256:aaaa22965228b9b9b7de812e3e7fa9cbfdbf8635bb22d6f3a201dc0cc6d8d307"},
-    {file = "AlekSIS_Builddeps-4-py3-none-any.whl", hash = "sha256:02a93e503f5810e6c93a8bc829bc8cbda735ccbf78b91954d2f6507dfea3d01f"},
 ]
 aleksis-core = [
-    {file = "AlekSIS-Core-2.0b0.tar.gz", hash = "sha256:7847fee66fa9c5e9f72a768716ffb9aa4d3cbce0fd9c4e99de63ea968ca23f7b"},
-    {file = "AlekSIS_Core-2.0b0-py3-none-any.whl", hash = "sha256:cc5075da5e73b7e24d674ba72836fda219d8b3fee25a35804ad8fcad181d892b"},
+    {file = "AlekSIS-Core-2.1.dev0+20210622180326.408c9ac5.tar.gz", hash = "sha256:fd6474dd2fe2e59f8380e3eee7b3297cb34b7bb9594857080873eb13e16852c7"},
+    {file = "AlekSIS_Core-2.1.dev0+20210622180326.408c9ac5-py3-none-any.whl", hash = "sha256:0fd3f2159e2b45fdbda640a8f01eccd5c05a1abe2ebedf45b9408853fba6da4d"},
 ]
 amqp = [
     {file = "amqp-5.0.6-py3-none-any.whl", hash = "sha256:493a2ac6788ce270a2f6a765b017299f60c1998f5a8617908ee9be082f7300fb"},
@@ -2733,8 +2752,8 @@ calendarweek = [
     {file = "calendarweek-0.5.0.tar.gz", hash = "sha256:32f5c8663799a2f5a0b8909976c7a3ae77397acd7e7c31d1456ece5b452988a5"},
 ]
 celery = [
-    {file = "celery-5.0.5-py3-none-any.whl", hash = "sha256:5e8d364e058554e83bbb116e8377d90c79be254785f357cb2cec026e79febe13"},
-    {file = "celery-5.0.5.tar.gz", hash = "sha256:f4efebe6f8629b0da2b8e529424de376494f5b7a743c321c8a2ddc2b1414921c"},
+    {file = "celery-5.1.1-py3-none-any.whl", hash = "sha256:b5399d76cf70d5cfac3ec993f8796ec1aa90d4cef55972295751f384758a80d7"},
+    {file = "celery-5.1.1.tar.gz", hash = "sha256:54436cd97b031bf2e08064223240e2a83d601d9414bcb1b702f94c6c33c29485"},
 ]
 celery-haystack-ng = [
     {file = "celery-haystack-ng-0.20.post2.tar.gz", hash = "sha256:d2e077851f13dddc36fc86134c7c8a937e46ae75e576eb8e77e03b03977fc7bb"},
@@ -2744,8 +2763,8 @@ celery-progress = [
     {file = "celery_progress-0.1.0-py3-none-any.whl", hash = "sha256:01bc7ecb2483ed7085b957413a392f85b7e1002fc8ce6d24f3d1ff264173002d"},
 ]
 certifi = [
-    {file = "certifi-2020.12.5-py2.py3-none-any.whl", hash = "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830"},
-    {file = "certifi-2020.12.5.tar.gz", hash = "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c"},
+    {file = "certifi-2021.5.30-py2.py3-none-any.whl", hash = "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8"},
+    {file = "certifi-2021.5.30.tar.gz", hash = "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee"},
 ]
 cffi = [
     {file = "cffi-1.14.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991"},
@@ -2814,8 +2833,8 @@ click-plugins = [
     {file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8"},
 ]
 click-repl = [
-    {file = "click-repl-0.1.6.tar.gz", hash = "sha256:b9f29d52abc4d6059f8e276132a111ab8d94980afe6a5432b9d996544afa95d5"},
-    {file = "click_repl-0.1.6-py3-none-any.whl", hash = "sha256:9c4c3d022789cae912aad8a3f5e1d7c2cdd016ee1225b5212ad3e8691563cda5"},
+    {file = "click-repl-0.2.0.tar.gz", hash = "sha256:cd12f68d745bf6151210790540b4cb064c7b13e571bc64b6957d98d120dacfd8"},
+    {file = "click_repl-0.2.0-py3-none-any.whl", hash = "sha256:94b3fbbc9406a236f176e0506524b2937e4b23b6f4c0c0b2a0a83f8a64e9194b"},
 ]
 colorama = [
     {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
@@ -2908,13 +2927,17 @@ defusedxml = [
     {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
     {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
 ]
+deprecated = [
+    {file = "Deprecated-1.2.12-py2.py3-none-any.whl", hash = "sha256:08452d69b6b5bc66e8330adde0a4f8642e969b9e1702904d137eeb29c8ffc771"},
+    {file = "Deprecated-1.2.12.tar.gz", hash = "sha256:6d2de2de7931a968874481ef30208fd4e08da39177d61d3d4ebdf4366e7dbca1"},
+]
 dj-database-url = [
     {file = "dj-database-url-0.5.0.tar.gz", hash = "sha256:4aeaeb1f573c74835b0686a2b46b85990571159ffc21aa57ecd4d1e1cb334163"},
     {file = "dj_database_url-0.5.0-py2.py3-none-any.whl", hash = "sha256:851785365761ebe4994a921b433062309eb882fedd318e1b0fcecc607ed02da9"},
 ]
 django = [
-    {file = "Django-3.2.3-py3-none-any.whl", hash = "sha256:7e0a1393d18c16b503663752a8b6790880c5084412618990ce8a81cc908b4962"},
-    {file = "Django-3.2.3.tar.gz", hash = "sha256:13ac78dbfd189532cad8f383a27e58e18b3d33f80009ceb476d7fcbfc5dcebd8"},
+    {file = "Django-3.2.4-py3-none-any.whl", hash = "sha256:ea735cbbbb3b2fba6d4da4784a0043d84c67c92f1fdf15ad6db69900e792c10f"},
+    {file = "Django-3.2.4.tar.gz", hash = "sha256:66c9d8db8cc6fe938a28b7887c1596e42d522e27618562517cc8929eb7e7f296"},
 ]
 django-allauth = [
     {file = "django-allauth-0.44.0.tar.gz", hash = "sha256:e51af457466022f52154d74c8523ac69375120fad2acce6e239635d85e610b25"},
@@ -2936,8 +2959,8 @@ django-bulk-update = [
     {file = "django_bulk_update-2.2.0-py2.py3-none-any.whl", hash = "sha256:49a403392ae05ea872494d74fb3dfa3515f8df5c07cc277c3dc94724c0ee6985"},
 ]
 django-cachalot = [
-    {file = "django-cachalot-2.4.1.tar.gz", hash = "sha256:9859ed59f215090c24ad6a5d654b693c47a8d802132695cf238a1d384df1e245"},
-    {file = "django_cachalot-2.4.1-py3-none-any.whl", hash = "sha256:744e4ec03cc5a440303524f759f637b1ecc1cbf1232f36ebd1dae835da5853d1"},
+    {file = "django-cachalot-2.4.2.tar.gz", hash = "sha256:67d3a783a8f61191cf8a1c1db944b08e276e93735434aafdee8d721bfd9e4901"},
+    {file = "django_cachalot-2.4.2-py3-none-any.whl", hash = "sha256:1d5c47e56425afc0b7131696d7894ed5c9d85cb6994282a02fe3d8bc274e1bd3"},
 ]
 django-cache-memoize = [
     {file = "django-cache-memoize-0.1.9.tar.gz", hash = "sha256:31f9d45fc1374d64963c5490877b857d3160d9b9047e40e40ed721345ca32bf3"},
@@ -2952,12 +2975,12 @@ django-celery-email = [
     {file = "django_celery_email-3.0.0-py2.py3-none-any.whl", hash = "sha256:0f72da39cb2ea83c69440566e87f27cd72f68f247f98ce99fb29889fcf329406"},
 ]
 django-celery-results = [
-    {file = "django_celery_results-2.0.1-py2.py3-none-any.whl", hash = "sha256:a2f7d172f7f57dd972538acc6e80a5bf50c673fb4d82fe027189c8659c60dfce"},
-    {file = "django_celery_results-2.0.1.tar.gz", hash = "sha256:d625e324138e5b2ef46ffa9e89fa353c16d619420066ac8b240ef9247b293a84"},
+    {file = "django_celery_results-2.1.0-py2.py3-none-any.whl", hash = "sha256:f0965bf43f7d09ffe792806a2a36f6874256fb0bd56037528676dfb051be0794"},
+    {file = "django_celery_results-2.1.0.tar.gz", hash = "sha256:b5abe0c03c91dc8fe657e0c2a34c9604175838af13cb8c7f64654b3ad27febcf"},
 ]
 django-ckeditor = [
-    {file = "django-ckeditor-6.0.0.tar.gz", hash = "sha256:29fd1a333cb9741ac2c3fd4e427a5c00115ed33a2389716a09af7656022dcdde"},
-    {file = "django_ckeditor-6.0.0-py2.py3-none-any.whl", hash = "sha256:cc2d377f1bdcd4ca1540caeebe85f7e2cd006198d57328ef6c718d3eaa5a0846"},
+    {file = "django-ckeditor-6.1.0.tar.gz", hash = "sha256:f0d108f67a81a04e26d8de11255fe314f51026eaf8eb0534a807512ae3c21620"},
+    {file = "django_ckeditor-6.1.0-py2.py3-none-any.whl", hash = "sha256:346b26b9d60dc8a88524d0eaaf406f4e91a4b3c22d208ae87aa032bf500b251c"},
 ]
 django-cleanup = [
     {file = "django-cleanup-5.2.0.tar.gz", hash = "sha256:909d10ff574f5ce1a40fa63bd5c94c9ed866fd7ae770994c46cdf66c3db3e846"},
@@ -2995,8 +3018,8 @@ django-formtools = [
     {file = "django_formtools-2.3-py3-none-any.whl", hash = "sha256:4699937e19ee041d803943714fe0c1c7ad4cab802600eb64bbf4cdd0a1bfe7d9"},
 ]
 django-guardian = [
-    {file = "django-guardian-2.3.0.tar.gz", hash = "sha256:ed2de26e4defb800919c5749fb1bbe370d72829fbd72895b6cf4f7f1a7607e1b"},
-    {file = "django_guardian-2.3.0-py3-none-any.whl", hash = "sha256:0e70706c6cda88ddaf8849bddb525b8df49de05ba0798d4b3506049f0d95cbc8"},
+    {file = "django-guardian-2.4.0.tar.gz", hash = "sha256:c58a68ae76922d33e6bdc0e69af1892097838de56e93e78a8361090bcd9f89a0"},
+    {file = "django_guardian-2.4.0-py3-none-any.whl", hash = "sha256:440ca61358427e575323648b25f8384739e54c38b3d655c81d75e0cd0d61b697"},
 ]
 django-hattori = [
     {file = "django-hattori-0.2.1.tar.gz", hash = "sha256:6953d40881317252f19f62c4e7fe8058924b852c7498bc42beb7bc4d268c252c"},
@@ -3047,16 +3070,16 @@ django-oauth-toolkit = [
     {file = "django_oauth_toolkit-1.5.0-py3-none-any.whl", hash = "sha256:b2e346a7c1e222774bfb370f21b556b92b408395b4c23914e2d1b241b2e5376a"},
 ]
 django-otp = [
-    {file = "django-otp-1.0.5.tar.gz", hash = "sha256:cc657a0e7266cda6ab42f861bdc3840ed24f7e441bc7f249916174dd1a6375a0"},
-    {file = "django_otp-1.0.5-py3-none-any.whl", hash = "sha256:75a815747a0542cc5442e3a6396dfd272c49a0866bee2149ac57ecc36ddd3961"},
+    {file = "django-otp-1.0.6.tar.gz", hash = "sha256:0d56dd2a7fbb6ee6e54557e036ca64add0bd3596f471794bad673b7637d5e935"},
+    {file = "django_otp-1.0.6-py3-none-any.whl", hash = "sha256:01b5888f0bde5125e139433aacb947e52d5c406fa56c9db43c3e8d75b5c323c4"},
 ]
 django-otp-yubikey = [
     {file = "django-otp-yubikey-1.0.0.post1.tar.gz", hash = "sha256:1da060257611d06e681848b7923fd788d878a79e8c358a373374deab13a085af"},
     {file = "django_otp_yubikey-1.0.0.post1-py2.py3-none-any.whl", hash = "sha256:613c96be211c1267400a5a78ae63f212c722f82dffb9daef3c8b1df370abb9be"},
 ]
 django-phonenumber-field = [
-    {file = "django-phonenumber-field-5.1.0.tar.gz", hash = "sha256:9eda963ac15b363393f677cc084efd45c3bd97bb5a0cdb4a06409ac99e05dd4b"},
-    {file = "django_phonenumber_field-5.1.0-py3-none-any.whl", hash = "sha256:48724ba235ee8248a474204faa0934c5baf9536f429859d05cb131fbd6b1c695"},
+    {file = "django-phonenumber-field-5.2.0.tar.gz", hash = "sha256:52b2e5970133ec5ab701218b802f7ab237229854dc95fd239b7e9e77dc43731d"},
+    {file = "django_phonenumber_field-5.2.0-py3-none-any.whl", hash = "sha256:5547fb2b2cc690a306ba77a5038419afc8fa8298a486fb7895008e9067cc7e75"},
 ]
 django-polymorphic = [
     {file = "django-polymorphic-3.0.0.tar.gz", hash = "sha256:9d886f19f031d26bb1391c055ed9be06fb226a04a4cec1842b372c58873b3caa"},
@@ -3066,13 +3089,9 @@ django-prometheus = [
     {file = "django-prometheus-2.1.0.tar.gz", hash = "sha256:dd3f8da1399140fbef5c00d1526a23d1ade286b144281c325f8e409a781643f2"},
     {file = "django_prometheus-2.1.0-py2.py3-none-any.whl", hash = "sha256:c338d6efde1ca336e90c540b5e87afe9287d7bcc82d651a778f302b0be17a933"},
 ]
-django-pwa = [
-    {file = "django-pwa-1.0.10.tar.gz", hash = "sha256:07ed9dd57108838e3fe44b551a82032ca4ed76e31cb3c3e8d51604e0fe7e81e9"},
-    {file = "django_pwa-1.0.10-py3-none-any.whl", hash = "sha256:b1a2057b1e72c40c3a14beb90b958482da185f1d40a141fcae3d76580984b930"},
-]
 django-redis = [
-    {file = "django-redis-4.12.1.tar.gz", hash = "sha256:306589c7021e6468b2656edc89f62b8ba67e8d5a1c8877e2688042263daa7a63"},
-    {file = "django_redis-4.12.1-py3-none-any.whl", hash = "sha256:1133b26b75baa3664164c3f44b9d5d133d1b8de45d94d79f38d1adc5b1d502e5"},
+    {file = "django-redis-5.0.0.tar.gz", hash = "sha256:048f665bbe27f8ff2edebae6aa9c534ab137f1e8fa7234147ef470df3f3aa9b8"},
+    {file = "django_redis-5.0.0-py3-none-any.whl", hash = "sha256:97739ca9de3f964c51412d1d7d8aecdfd86737bb197fce6e1ff12620c63c97ee"},
 ]
 django-render-block = [
     {file = "django-render-block-0.8.1.tar.gz", hash = "sha256:edbc5d444cc50f3eb3387cf17f6f1014bf19d6018f680861cdeae9e0306003fa"},
@@ -3103,7 +3122,8 @@ django-tables2 = [
     {file = "django_tables2-2.4.0-py2.py3-none-any.whl", hash = "sha256:0f10ecef25708385a9d32d68d7c9478ca8dda31569410cb05a025be3f2c57593"},
 ]
 django-templated-email = [
-    {file = "django-templated-email-2.4.0.tar.gz", hash = "sha256:3bcd95cb806070b13c9919a72fec944b5ce319e30e8828a08180767bb1f84027"},
+    {file = "django-templated-email-3.0.0.tar.gz", hash = "sha256:49d61840ec551e640adaf341146e94d6f9058ae01df964480850bf988046e5eb"},
+    {file = "django_templated_email-3.0.0-py3-none-any.whl", hash = "sha256:bf1b68ffe6c8794c0c50e2ce20e3a166c6d511b3879abbd3cf059a3fc2fe2e60"},
 ]
 django-timezone-field = [
     {file = "django-timezone-field-4.1.2.tar.gz", hash = "sha256:cffac62452d060e365938aa9c9f7b72d70d8b26b9c60243bce227b35abd1b9df"},
@@ -3145,8 +3165,8 @@ dynaconf = [
     {file = "dynaconf-3.1.4.tar.gz", hash = "sha256:b2f472d83052f809c5925565b8a2ba76a103d5dc1dbb9748b693ed67212781b9"},
 ]
 faker = [
-    {file = "Faker-8.2.1-py3-none-any.whl", hash = "sha256:765cb52df0ca2dc5af0393048c1f60b2fec736095b379954c42c5c552f65838a"},
-    {file = "Faker-8.2.1.tar.gz", hash = "sha256:7397915ce793ac1e162eb89450a268c4404121389ca46264648a2a8c56d88624"},
+    {file = "Faker-8.8.2-py3-none-any.whl", hash = "sha256:7ab021c70d6a83f639611d80763b995696a9e964fb9eff06935da6120ad95019"},
+    {file = "Faker-8.8.2.tar.gz", hash = "sha256:22534c3aa6d2ef9f38403a234dc9b71b5cb878fb765c72994be5dc7b4eaf0865"},
 ]
 flake8 = [
     {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"},
@@ -3200,8 +3220,8 @@ gitdb = [
     {file = "gitdb-4.0.7.tar.gz", hash = "sha256:96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005"},
 ]
 gitpython = [
-    {file = "GitPython-3.1.17-py3-none-any.whl", hash = "sha256:29fe82050709760081f588dd50ce83504feddbebdc4da6956d02351552b1c135"},
-    {file = "GitPython-3.1.17.tar.gz", hash = "sha256:ee24bdc93dce357630764db659edaf6b8d664d4ff5447ccfeedd2dc5c253f41e"},
+    {file = "GitPython-3.1.18-py3-none-any.whl", hash = "sha256:fce760879cd2aebd2991b3542876dc5c4a909b30c9d69dfc488e504a8db37ee8"},
+    {file = "GitPython-3.1.18.tar.gz", hash = "sha256:b838a895977b45ab6f0cc926a9045c8d1c44e2b653c1fcc39fe91f42c6e8f05b"},
 ]
 haystack-redis = [
     {file = "haystack-redis-0.0.1.tar.gz", hash = "sha256:ccfea88bdc1387c9f7f6f19e9bc062a3612039ef94cfd3e78cf59a96ddd269b2"},
@@ -3224,16 +3244,16 @@ iniconfig = [
     {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
 ]
 ipython = [
-    {file = "ipython-7.23.1-py3-none-any.whl", hash = "sha256:f78c6a3972dde1cc9e4041cbf4de583546314ba52d3c97208e5b6b2221a9cb7d"},
-    {file = "ipython-7.23.1.tar.gz", hash = "sha256:714810a5c74f512b69d5f3b944c86e592cee0a5fb9c728e582f074610f6cf038"},
+    {file = "ipython-7.24.1-py3-none-any.whl", hash = "sha256:d513e93327cf8657d6467c81f1f894adc125334ffe0e4ddd1abbb1c78d828703"},
+    {file = "ipython-7.24.1.tar.gz", hash = "sha256:9bc24a99f5d19721fb8a2d1408908e9c0520a17fff2233ffe82620847f17f1b6"},
 ]
 ipython-genutils = [
     {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"},
     {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"},
 ]
 isort = [
-    {file = "isort-5.8.0-py3-none-any.whl", hash = "sha256:2bb1680aad211e3c9944dbce1d4ba09a989f04e238296c87fe2139faa26d655d"},
-    {file = "isort-5.8.0.tar.gz", hash = "sha256:0a943902919f65c5684ac4e0154b1ad4fac6dcaa5d9f3426b732f1c8b5419be6"},
+    {file = "isort-5.9.1-py3-none-any.whl", hash = "sha256:8e2c107091cfec7286bc0f68a547d0ba4c094d460b732075b6fba674f1035c0c"},
+    {file = "isort-5.9.1.tar.gz", hash = "sha256:83510593e07e433b77bd5bff0f6f607dbafa06d1a89022616f02d8b699cfcd56"},
 ]
 jedi = [
     {file = "jedi-0.18.0-py2.py3-none-any.whl", hash = "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93"},
@@ -3244,12 +3264,12 @@ jinja2 = [
     {file = "Jinja2-3.0.1.tar.gz", hash = "sha256:703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4"},
 ]
 jwcrypto = [
-    {file = "jwcrypto-0.8-py2.py3-none-any.whl", hash = "sha256:16e17faa4dce36551ade3a3ccb06236a61e5924ea1db163c9be9827acf935a82"},
-    {file = "jwcrypto-0.8.tar.gz", hash = "sha256:b7fee2635bbefdf145399392f5be26ad54161c8271c66b5fe107b4b452f06c24"},
+    {file = "jwcrypto-0.9.1-py2.py3-none-any.whl", hash = "sha256:12976a09895ec0076ce17c49ab7be64d6e63bcd7fd9a773e3fedf8011537a5f6"},
+    {file = "jwcrypto-0.9.1.tar.gz", hash = "sha256:63531529218ba9869e14ef8c9e7b516865ede3facf9b0ef3d3ba68014da211f9"},
 ]
 kombu = [
-    {file = "kombu-5.0.2-py2.py3-none-any.whl", hash = "sha256:6dc509178ac4269b0e66ab4881f70a2035c33d3a622e20585f965986a5182006"},
-    {file = "kombu-5.0.2.tar.gz", hash = "sha256:f4965fba0a4718d47d470beeb5d6446e3357a62402b16c510b6a2f251e05ac3c"},
+    {file = "kombu-5.1.0-py3-none-any.whl", hash = "sha256:e2dedd8a86c9077c350555153825a31e456a0dc20c15d5751f00137ec9c75f0a"},
+    {file = "kombu-5.1.0.tar.gz", hash = "sha256:01481d99f4606f6939cdc9b637264ed353ee9e3e4f62cfb582324142c41a572d"},
 ]
 libsass = [
     {file = "libsass-0.21.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:06c8776417fe930714bdc930a3d7e795ae3d72be6ac883ff72a1b8f7c49e5ffb"},
@@ -3311,36 +3331,37 @@ mccabe = [
     {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
 ]
 mypy = [
-    {file = "mypy-0.812-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:a26f8ec704e5a7423c8824d425086705e381b4f1dfdef6e3a1edab7ba174ec49"},
-    {file = "mypy-0.812-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:28fb5479c494b1bab244620685e2eb3c3f988d71fd5d64cc753195e8ed53df7c"},
-    {file = "mypy-0.812-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:9743c91088d396c1a5a3c9978354b61b0382b4e3c440ce83cf77994a43e8c521"},
-    {file = "mypy-0.812-cp35-cp35m-win_amd64.whl", hash = "sha256:d7da2e1d5f558c37d6e8c1246f1aec1e7349e4913d8fb3cb289a35de573fe2eb"},
-    {file = "mypy-0.812-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4eec37370483331d13514c3f55f446fc5248d6373e7029a29ecb7b7494851e7a"},
-    {file = "mypy-0.812-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d65cc1df038ef55a99e617431f0553cd77763869eebdf9042403e16089fe746c"},
-    {file = "mypy-0.812-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:61a3d5b97955422964be6b3baf05ff2ce7f26f52c85dd88db11d5e03e146a3a6"},
-    {file = "mypy-0.812-cp36-cp36m-win_amd64.whl", hash = "sha256:25adde9b862f8f9aac9d2d11971f226bd4c8fbaa89fb76bdadb267ef22d10064"},
-    {file = "mypy-0.812-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:552a815579aa1e995f39fd05dde6cd378e191b063f031f2acfe73ce9fb7f9e56"},
-    {file = "mypy-0.812-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:499c798053cdebcaa916eef8cd733e5584b5909f789de856b482cd7d069bdad8"},
-    {file = "mypy-0.812-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:5873888fff1c7cf5b71efbe80e0e73153fe9212fafdf8e44adfe4c20ec9f82d7"},
-    {file = "mypy-0.812-cp37-cp37m-win_amd64.whl", hash = "sha256:9f94aac67a2045ec719ffe6111df543bac7874cee01f41928f6969756e030564"},
-    {file = "mypy-0.812-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d23e0ea196702d918b60c8288561e722bf437d82cb7ef2edcd98cfa38905d506"},
-    {file = "mypy-0.812-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:674e822aa665b9fd75130c6c5f5ed9564a38c6cea6a6432ce47eafb68ee578c5"},
-    {file = "mypy-0.812-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:abf7e0c3cf117c44d9285cc6128856106183938c68fd4944763003decdcfeb66"},
-    {file = "mypy-0.812-cp38-cp38-win_amd64.whl", hash = "sha256:0d0a87c0e7e3a9becdfbe936c981d32e5ee0ccda3e0f07e1ef2c3d1a817cf73e"},
-    {file = "mypy-0.812-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7ce3175801d0ae5fdfa79b4f0cfed08807af4d075b402b7e294e6aa72af9aa2a"},
-    {file = "mypy-0.812-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:b09669bcda124e83708f34a94606e01b614fa71931d356c1f1a5297ba11f110a"},
-    {file = "mypy-0.812-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:33f159443db0829d16f0a8d83d94df3109bb6dd801975fe86bacb9bf71628e97"},
-    {file = "mypy-0.812-cp39-cp39-win_amd64.whl", hash = "sha256:3f2aca7f68580dc2508289c729bd49ee929a436208d2b2b6aab15745a70a57df"},
-    {file = "mypy-0.812-py3-none-any.whl", hash = "sha256:2f9b3407c58347a452fc0736861593e105139b905cca7d097e413453a1d650b4"},
-    {file = "mypy-0.812.tar.gz", hash = "sha256:cd07039aa5df222037005b08fbbfd69b3ab0b0bd7a07d7906de75ae52c4e3119"},
+    {file = "mypy-0.910-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:a155d80ea6cee511a3694b108c4494a39f42de11ee4e61e72bc424c490e46457"},
+    {file = "mypy-0.910-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:b94e4b785e304a04ea0828759172a15add27088520dc7e49ceade7834275bedb"},
+    {file = "mypy-0.910-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:088cd9c7904b4ad80bec811053272986611b84221835e079be5bcad029e79dd9"},
+    {file = "mypy-0.910-cp35-cp35m-win_amd64.whl", hash = "sha256:adaeee09bfde366d2c13fe6093a7df5df83c9a2ba98638c7d76b010694db760e"},
+    {file = "mypy-0.910-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ecd2c3fe726758037234c93df7e98deb257fd15c24c9180dacf1ef829da5f921"},
+    {file = "mypy-0.910-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d9dd839eb0dc1bbe866a288ba3c1afc33a202015d2ad83b31e875b5905a079b6"},
+    {file = "mypy-0.910-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:3e382b29f8e0ccf19a2df2b29a167591245df90c0b5a2542249873b5c1d78212"},
+    {file = "mypy-0.910-cp36-cp36m-win_amd64.whl", hash = "sha256:53fd2eb27a8ee2892614370896956af2ff61254c275aaee4c230ae771cadd885"},
+    {file = "mypy-0.910-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b6fb13123aeef4a3abbcfd7e71773ff3ff1526a7d3dc538f3929a49b42be03f0"},
+    {file = "mypy-0.910-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e4dab234478e3bd3ce83bac4193b2ecd9cf94e720ddd95ce69840273bf44f6de"},
+    {file = "mypy-0.910-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:7df1ead20c81371ccd6091fa3e2878559b5c4d4caadaf1a484cf88d93ca06703"},
+    {file = "mypy-0.910-cp37-cp37m-win_amd64.whl", hash = "sha256:0aadfb2d3935988ec3815952e44058a3100499f5be5b28c34ac9d79f002a4a9a"},
+    {file = "mypy-0.910-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec4e0cd079db280b6bdabdc807047ff3e199f334050db5cbb91ba3e959a67504"},
+    {file = "mypy-0.910-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:119bed3832d961f3a880787bf621634ba042cb8dc850a7429f643508eeac97b9"},
+    {file = "mypy-0.910-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:866c41f28cee548475f146aa4d39a51cf3b6a84246969f3759cb3e9c742fc072"},
+    {file = "mypy-0.910-cp38-cp38-win_amd64.whl", hash = "sha256:ceb6e0a6e27fb364fb3853389607cf7eb3a126ad335790fa1e14ed02fba50811"},
+    {file = "mypy-0.910-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a85e280d4d217150ce8cb1a6dddffd14e753a4e0c3cf90baabb32cefa41b59e"},
+    {file = "mypy-0.910-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:42c266ced41b65ed40a282c575705325fa7991af370036d3f134518336636f5b"},
+    {file = "mypy-0.910-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3c4b8ca36877fc75339253721f69603a9c7fdb5d4d5a95a1a1b899d8b86a4de2"},
+    {file = "mypy-0.910-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:c0df2d30ed496a08de5daed2a9ea807d07c21ae0ab23acf541ab88c24b26ab97"},
+    {file = "mypy-0.910-cp39-cp39-win_amd64.whl", hash = "sha256:c6c2602dffb74867498f86e6129fd52a2770c48b7cd3ece77ada4fa38f94eba8"},
+    {file = "mypy-0.910-py3-none-any.whl", hash = "sha256:ef565033fa5a958e62796867b1df10c40263ea9ded87164d67572834e57a174d"},
+    {file = "mypy-0.910.tar.gz", hash = "sha256:704098302473cb31a218f1775a873b376b30b4c18229421e9e9dc8916fd16150"},
 ]
 mypy-extensions = [
     {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
     {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
 ]
 oauthlib = [
-    {file = "oauthlib-3.1.0-py2.py3-none-any.whl", hash = "sha256:df884cd6cbe20e32633f1db1072e9356f53638e4361bef4e8b03c9127c9328ea"},
-    {file = "oauthlib-3.1.0.tar.gz", hash = "sha256:bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889"},
+    {file = "oauthlib-3.1.1-py2.py3-none-any.whl", hash = "sha256:42bf6354c2ed8c6acb54d971fce6f88193d97297e18602a3a886603f9d7730cc"},
+    {file = "oauthlib-3.1.1.tar.gz", hash = "sha256:8f0215fcc533dd8dd1bee6f4c412d4f0cd7297307d43ac61666389e3bc3198a3"},
 ]
 packaging = [
     {file = "packaging-20.9-py2.py3-none-any.whl", hash = "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a"},
@@ -3374,8 +3395,8 @@ pg8000 = [
     {file = "pg8000-1.19.5.tar.gz", hash = "sha256:dcb9afb9cb87acc79388ae633c45cf7f806aabe3bb5d8cf154572b699393f937"},
 ]
 phonenumbers = [
-    {file = "phonenumbers-8.12.23-py2.py3-none-any.whl", hash = "sha256:4b9d2f2165309613f32fe5057ff0604eb8e4bbb7be44f7ba77baef760d7d60e2"},
-    {file = "phonenumbers-8.12.23.tar.gz", hash = "sha256:8b0cf3df6ab75d22717af91014ca690423a85e77abc7b199748d1b3598b49a37"},
+    {file = "phonenumbers-8.12.25-py2.py3-none-any.whl", hash = "sha256:340f996b2f4f95441d5c518a986d79a2b8e8fa6d6699692ee6eeab2414575043"},
+    {file = "phonenumbers-8.12.25.tar.gz", hash = "sha256:de4db4e2582f989a9cbae54364a647b24a72a7b0126be50d8356cf02217dc6c9"},
 ]
 pickleshare = [
     {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
@@ -3414,6 +3435,7 @@ pillow = [
     {file = "Pillow-8.2.0-pp37-pypy37_pp73-manylinux2010_i686.whl", hash = "sha256:aac00e4bc94d1b7813fe882c28990c1bc2f9d0e1aa765a5f2b516e8a6a16a9e4"},
     {file = "Pillow-8.2.0-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:22fd0f42ad15dfdde6c581347eaa4adb9a6fc4b865f90b23378aa7914895e120"},
     {file = "Pillow-8.2.0-pp37-pypy37_pp73-win32.whl", hash = "sha256:e98eca29a05913e82177b3ba3d198b1728e164869c613d76d0de4bde6768a50e"},
+    {file = "Pillow-8.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8b56553c0345ad6dcb2e9b433ae47d67f95fc23fe28a0bde15a120f25257e291"},
     {file = "Pillow-8.2.0.tar.gz", hash = "sha256:a787ab10d7bb5494e5f76536ac460741788f1fbce851068d73a87ca7c35fc3e1"},
 ]
 pluggy = [
@@ -3421,12 +3443,12 @@ pluggy = [
     {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
 ]
 prometheus-client = [
-    {file = "prometheus_client-0.10.1-py2.py3-none-any.whl", hash = "sha256:030e4f9df5f53db2292eec37c6255957eb76168c6f974e4176c711cf91ed34aa"},
-    {file = "prometheus_client-0.10.1.tar.gz", hash = "sha256:b6c5a9643e3545bcbfd9451766cbaa5d9c67e7303c7bc32c750b6fa70ecb107d"},
+    {file = "prometheus_client-0.11.0-py2.py3-none-any.whl", hash = "sha256:b014bc76815eb1399da8ce5fc84b7717a3e63652b0c0f8804092c9363acab1b2"},
+    {file = "prometheus_client-0.11.0.tar.gz", hash = "sha256:3a8baade6cb80bcfe43297e33e7623f3118d660d41387593758e2fb1ea173a86"},
 ]
 prompt-toolkit = [
-    {file = "prompt_toolkit-3.0.18-py3-none-any.whl", hash = "sha256:bf00f22079f5fadc949f42ae8ff7f05702826a97059ffcc6281036ad40ac6f04"},
-    {file = "prompt_toolkit-3.0.18.tar.gz", hash = "sha256:e1b4f11b9336a28fa11810bc623c357420f69dfdb6d2dac41ca2c21a55c033bc"},
+    {file = "prompt_toolkit-3.0.19-py3-none-any.whl", hash = "sha256:7089d8d2938043508aa9420ec18ce0922885304cddae87fb96eebca942299f88"},
+    {file = "prompt_toolkit-3.0.19.tar.gz", hash = "sha256:08360ee3a3148bdb5163621709ee322ec34fc4375099afa4bbf751e9b7b7fa4f"},
 ]
 psutil = [
     {file = "psutil-5.8.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:0066a82f7b1b37d334e68697faba68e5ad5e858279fd6351c8ca6024e8d6ba64"},
@@ -3459,21 +3481,15 @@ psutil = [
     {file = "psutil-5.8.0.tar.gz", hash = "sha256:0c9ccb99ab76025f2f0bbecf341d4656e9c1351db8cc8a03ccd62e318ab4b5c6"},
 ]
 psycopg2 = [
-    {file = "psycopg2-2.8.6-cp27-cp27m-win32.whl", hash = "sha256:068115e13c70dc5982dfc00c5d70437fe37c014c808acce119b5448361c03725"},
-    {file = "psycopg2-2.8.6-cp27-cp27m-win_amd64.whl", hash = "sha256:d160744652e81c80627a909a0e808f3c6653a40af435744de037e3172cf277f5"},
-    {file = "psycopg2-2.8.6-cp34-cp34m-win32.whl", hash = "sha256:b8cae8b2f022efa1f011cc753adb9cbadfa5a184431d09b273fb49b4167561ad"},
-    {file = "psycopg2-2.8.6-cp34-cp34m-win_amd64.whl", hash = "sha256:f22ea9b67aea4f4a1718300908a2fb62b3e4276cf00bd829a97ab5894af42ea3"},
-    {file = "psycopg2-2.8.6-cp35-cp35m-win32.whl", hash = "sha256:26e7fd115a6db75267b325de0fba089b911a4a12ebd3d0b5e7acb7028bc46821"},
-    {file = "psycopg2-2.8.6-cp35-cp35m-win_amd64.whl", hash = "sha256:00195b5f6832dbf2876b8bf77f12bdce648224c89c880719c745b90515233301"},
-    {file = "psycopg2-2.8.6-cp36-cp36m-win32.whl", hash = "sha256:a49833abfdede8985ba3f3ec641f771cca215479f41523e99dace96d5b8cce2a"},
-    {file = "psycopg2-2.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:f974c96fca34ae9e4f49839ba6b78addf0346777b46c4da27a7bf54f48d3057d"},
-    {file = "psycopg2-2.8.6-cp37-cp37m-win32.whl", hash = "sha256:6a3d9efb6f36f1fe6aa8dbb5af55e067db802502c55a9defa47c5a1dad41df84"},
-    {file = "psycopg2-2.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:56fee7f818d032f802b8eed81ef0c1232b8b42390df189cab9cfa87573fe52c5"},
-    {file = "psycopg2-2.8.6-cp38-cp38-win32.whl", hash = "sha256:ad2fe8a37be669082e61fb001c185ffb58867fdbb3e7a6b0b0d2ffe232353a3e"},
-    {file = "psycopg2-2.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:56007a226b8e95aa980ada7abdea6b40b75ce62a433bd27cec7a8178d57f4051"},
-    {file = "psycopg2-2.8.6-cp39-cp39-win32.whl", hash = "sha256:2c93d4d16933fea5bbacbe1aaf8fa8c1348740b2e50b3735d1b0bf8154cbf0f3"},
-    {file = "psycopg2-2.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:d5062ae50b222da28253059880a871dc87e099c25cb68acf613d9d227413d6f7"},
-    {file = "psycopg2-2.8.6.tar.gz", hash = "sha256:fb23f6c71107c37fd667cb4ea363ddeb936b348bbd6449278eb92c189699f543"},
+    {file = "psycopg2-2.9.1-cp36-cp36m-win32.whl", hash = "sha256:7f91312f065df517187134cce8e395ab37f5b601a42446bdc0f0d51773621854"},
+    {file = "psycopg2-2.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:830c8e8dddab6b6716a4bf73a09910c7954a92f40cf1d1e702fb93c8a919cc56"},
+    {file = "psycopg2-2.9.1-cp37-cp37m-win32.whl", hash = "sha256:89409d369f4882c47f7ea20c42c5046879ce22c1e4ea20ef3b00a4dfc0a7f188"},
+    {file = "psycopg2-2.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7640e1e4d72444ef012e275e7b53204d7fab341fb22bc76057ede22fe6860b25"},
+    {file = "psycopg2-2.9.1-cp38-cp38-win32.whl", hash = "sha256:079d97fc22de90da1d370c90583659a9f9a6ee4007355f5825e5f1c70dffc1fa"},
+    {file = "psycopg2-2.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:2c992196719fadda59f72d44603ee1a2fdcc67de097eea38d41c7ad9ad246e62"},
+    {file = "psycopg2-2.9.1-cp39-cp39-win32.whl", hash = "sha256:2087013c159a73e09713294a44d0c8008204d06326006b7f652bef5ace66eebb"},
+    {file = "psycopg2-2.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:bf35a25f1aaa8a3781195595577fcbb59934856ee46b4f252f56ad12b8043bcf"},
+    {file = "psycopg2-2.9.1.tar.gz", hash = "sha256:de5303a6f1d0a7a34b9d40e4d3bef684ccc44a49bbe3eb85e3c0bffb4a131b7c"},
 ]
 ptyprocess = [
     {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
@@ -3536,8 +3552,8 @@ pygments = [
     {file = "Pygments-2.9.0.tar.gz", hash = "sha256:a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f"},
 ]
 pyjwt = [
-    {file = "PyJWT-2.1.0-py3-none-any.whl", hash = "sha256:934d73fbba91b0483d3857d1aff50e96b2a892384ee2c17417ed3203f173fca1"},
-    {file = "PyJWT-2.1.0.tar.gz", hash = "sha256:fba44e7898bbca160a2b2b501f492824fc8382485d3a6f11ba5d0c1937ce6130"},
+    {file = "PyJWT-1.7.1-py2.py3-none-any.whl", hash = "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e"},
+    {file = "PyJWT-1.7.1.tar.gz", hash = "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"},
 ]
 pyparsing = [
     {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
@@ -3548,12 +3564,12 @@ pytest = [
     {file = "pytest-6.2.4.tar.gz", hash = "sha256:50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b"},
 ]
 pytest-cov = [
-    {file = "pytest-cov-2.12.0.tar.gz", hash = "sha256:8535764137fecce504a49c2b742288e3d34bc09eed298ad65963616cc98fd45e"},
-    {file = "pytest_cov-2.12.0-py2.py3-none-any.whl", hash = "sha256:95d4933dcbbacfa377bb60b29801daa30d90c33981ab2a79e9ab4452c165066e"},
+    {file = "pytest-cov-2.12.1.tar.gz", hash = "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7"},
+    {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"},
 ]
 pytest-django = [
-    {file = "pytest-django-4.3.0.tar.gz", hash = "sha256:d1c6758a592fb0ef8abaa2fe12dd28858c1dcfc3d466102ffe52aa8934733dca"},
-    {file = "pytest_django-4.3.0-py3-none-any.whl", hash = "sha256:f96c4556f4e7b15d987dd1dcc1d1526df81d40c1548d31ce840d597ed2be8c46"},
+    {file = "pytest-django-4.4.0.tar.gz", hash = "sha256:b5171e3798bf7e3fc5ea7072fe87324db67a4dd9f1192b037fed4cc3c1b7f455"},
+    {file = "pytest_django-4.4.0-py3-none-any.whl", hash = "sha256:65783e78382456528bd9d79a35843adde9e6a47347b20464eb2c885cb0f1f606"},
 ]
 pytest-django-testing-postgresql = [
     {file = "pytest-django-testing-postgresql-0.1.post0.tar.gz", hash = "sha256:78b0c58930084cb4393407b2e5a2a3b8734c627b841ecef7d62d39bbfb8e8a45"},
@@ -3569,6 +3585,10 @@ python-dateutil = [
     {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"},
     {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"},
 ]
+python-gnupg = [
+    {file = "python-gnupg-0.4.7.tar.gz", hash = "sha256:2061f56b1942c29b92727bf9aecbd3cea3893acc9cccbdc7eb4604285efe4ac7"},
+    {file = "python_gnupg-0.4.7-py2.py3-none-any.whl", hash = "sha256:3ff5b1bf5e397de6e1fe41a7c0f403dad4e242ac92b345f440eaecfb72a7ebae"},
+]
 python3-openid = [
     {file = "python3-openid-3.2.0.tar.gz", hash = "sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf"},
     {file = "python3_openid-3.2.0-py3-none-any.whl", hash = "sha256:6626f771e0417486701e0b4daff762e7212e820ca5b29fcc0d05f6f8736dfa6b"},
@@ -3672,8 +3692,8 @@ restructuredtext-lint = [
     {file = "restructuredtext_lint-1.3.2.tar.gz", hash = "sha256:d3b10a1fe2ecac537e51ae6d151b223b78de9fafdd50e5eb6b08c243df173c80"},
 ]
 "ruamel.yaml" = [
-    {file = "ruamel.yaml-0.17.4-py3-none-any.whl", hash = "sha256:ac79fb25f5476e8e9ed1c53b8a2286d2c3f5dde49eb37dbcee5c7eb6a8415a22"},
-    {file = "ruamel.yaml-0.17.4.tar.gz", hash = "sha256:44bc6b54fddd45e4bc0619059196679f9e8b79c027f4131bb072e6a22f4d5e28"},
+    {file = "ruamel.yaml-0.17.9-py3-none-any.whl", hash = "sha256:8873a6f5516e0d848c92418b0b006519c0566b6cd0dcee7deb9bf399e2bd204f"},
+    {file = "ruamel.yaml-0.17.9.tar.gz", hash = "sha256:374373b4743aee9f6d9f40bea600fe020a7ac7ae36b838b4a6a93f72b584a14c"},
 ]
 "ruamel.yaml.clib" = [
     {file = "ruamel.yaml.clib-0.2.2-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:28116f204103cb3a108dfd37668f20abe6e3cafd0d3fd40dba126c732457b3cc"},
@@ -3814,15 +3834,15 @@ toml = [
     {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
 ]
 tqdm = [
-    {file = "tqdm-4.60.0-py2.py3-none-any.whl", hash = "sha256:daec693491c52e9498632dfbe9ccfc4882a557f5fa08982db1b4d3adbe0887c3"},
-    {file = "tqdm-4.60.0.tar.gz", hash = "sha256:ebdebdb95e3477ceea267decfc0784859aa3df3e27e22d23b83e9b272bf157ae"},
+    {file = "tqdm-4.61.1-py2.py3-none-any.whl", hash = "sha256:aa0c29f03f298951ac6318f7c8ce584e48fa22ec26396e6411e43d038243bdb2"},
+    {file = "tqdm-4.61.1.tar.gz", hash = "sha256:24be966933e942be5f074c29755a95b315c69a91f839a29139bf26ffffe2d3fd"},
 ]
 traitlets = [
     {file = "traitlets-5.0.5-py3-none-any.whl", hash = "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"},
     {file = "traitlets-5.0.5.tar.gz", hash = "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396"},
 ]
 twilio = [
-    {file = "twilio-6.50.1.tar.gz", hash = "sha256:dd8371c9b4ea422d6de7526b63b587da82e8488f2b3f6b1258d2cad6e4006a65"},
+    {file = "twilio-6.60.0.tar.gz", hash = "sha256:35eded160086b026c28b06fc335e4dfed3e67c90e39c63f2f1881d4bd635b6ab"},
 ]
 typed-ast = [
     {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6"},
@@ -3862,8 +3882,8 @@ typing-extensions = [
     {file = "typing_extensions-3.10.0.0.tar.gz", hash = "sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342"},
 ]
 urllib3 = [
-    {file = "urllib3-1.26.4-py2.py3-none-any.whl", hash = "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df"},
-    {file = "urllib3-1.26.4.tar.gz", hash = "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937"},
+    {file = "urllib3-1.26.5-py2.py3-none-any.whl", hash = "sha256:753a0374df26658f99d826cfe40394a686d05985786d946fbe4165b5148f5a7c"},
+    {file = "urllib3-1.26.5.tar.gz", hash = "sha256:a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098"},
 ]
 vine = [
     {file = "vine-5.0.0-py2.py3-none-any.whl", hash = "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30"},
@@ -3882,6 +3902,9 @@ whoosh = [
     {file = "Whoosh-2.7.4.tar.gz", hash = "sha256:7ca5633dbfa9e0e0fa400d3151a8a0c4bec53bd2ecedc0a67705b17565c31a83"},
     {file = "Whoosh-2.7.4.zip", hash = "sha256:e0857375f63e9041e03fedd5b7541f97cf78917ac1b6b06c1fcc9b45375dda69"},
 ]
+wrapt = [
+    {file = "wrapt-1.12.1.tar.gz", hash = "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"},
+]
 yubiotp = [
     {file = "YubiOTP-1.0.0.post1-py2.py3-none-any.whl", hash = "sha256:7ad57011866e0bc6c6d179ffbc3926fcc0e82d410178a6d01ba4da0f88332878"},
     {file = "YubiOTP-1.0.0.post1.tar.gz", hash = "sha256:c13825f7b76a69afb92f19521f4dea9f5031d70f45123b505dc2e0ac03132065"},
diff --git a/pyproject.toml b/pyproject.toml
index bbb5e9fed4d427394327c6724dfc09bcebdd491c..3dff4cbb04db67599dc0d89dce84863226a0e33c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "AlekSIS-App-Alsijil"
-version = "2.0b0"
+version = "2.0rc1"
 packages = [
     { include = "aleksis" }
 ]
@@ -41,8 +41,8 @@ secondary = true
 
 [tool.poetry.dependencies]
 python = "^3.9"
-aleksis-core = "^2.0b0"
-aleksis-app-chronos = "^2.0b0"
+aleksis-core = "^2.0rc"
+aleksis-app-chronos = "^2.0rc"
 
 [tool.poetry.dev-dependencies]
 aleksis-builddeps = "*"