diff --git a/aleksis/apps/chronos/locale/ar/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/ar/LC_MESSAGES/django.po
index 35267f7b3cade927ef11b6820d2444dc7685537c..783e1076a67b177d132dc8504be757d40a23d42d 100644
--- a/aleksis/apps/chronos/locale/ar/LC_MESSAGES/django.po
+++ b/aleksis/apps/chronos/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: 2020-12-05 21:26+0100\n"
+"POT-Creation-Date: 2021-05-20 21:05+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,493 +18,545 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
 
-#: forms.py:29
+#: aleksis/apps/chronos/forms.py:29
 msgid "Options for timetables"
 msgstr ""
 
-#: menus.py:6
+#: aleksis/apps/chronos/menus.py:6
 msgid "Timetables"
 msgstr ""
 
-#: menus.py:16 templates/chronos/my_timetable.html:11
-#: templates/chronos/my_timetable.html:18
+#: aleksis/apps/chronos/menus.py:16
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18
 msgid "My timetable"
 msgstr ""
 
-#: menus.py:27 templates/chronos/all.html:11 templates/chronos/all.html:12
+#: aleksis/apps/chronos/menus.py:27
+#: aleksis/apps/chronos/templates/chronos/all.html:11
+#: aleksis/apps/chronos/templates/chronos/all.html:12
 msgid "All timetables"
 msgstr ""
 
-#: menus.py:38
+#: aleksis/apps/chronos/menus.py:38
 msgid "Daily lessons"
 msgstr ""
 
-#: menus.py:49 templates/chronos/substitutions.html:11
-#: templates/chronos/substitutions.html:17
-#: templates/chronos/substitutions_print.html:12
-#: templates/chronos/substitutions_print.html:17
+#: aleksis/apps/chronos/menus.py:49
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:17
 msgid "Substitutions"
 msgstr ""
 
-#: mixins.py:25
+#: aleksis/apps/chronos/mixins.py:25
 msgid "Linked validity range"
 msgstr ""
 
-#: model_extensions.py:123
+#: aleksis/apps/chronos/model_extensions.py:133
 msgid "Show announcement in timetable views?"
 msgstr ""
 
-#: models.py:68
+#: aleksis/apps/chronos/model_extensions.py:141
+msgid "Can view group timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/model_extensions.py:144
+msgid "Can view person timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:71
 msgid "School term"
 msgstr ""
 
-#: models.py:71 models.py:543
+#: aleksis/apps/chronos/models.py:74 aleksis/apps/chronos/models.py:591
 msgid "Name"
 msgstr ""
 
-#: models.py:73 models.py:593 models.py:663 models.py:860
+#: aleksis/apps/chronos/models.py:76 aleksis/apps/chronos/models.py:641
+#: aleksis/apps/chronos/models.py:711 aleksis/apps/chronos/models.py:913
 msgid "Start date"
 msgstr ""
 
-#: models.py:74 models.py:594 models.py:664 models.py:861
+#: aleksis/apps/chronos/models.py:77 aleksis/apps/chronos/models.py:642
+#: aleksis/apps/chronos/models.py:712 aleksis/apps/chronos/models.py:914
 msgid "End date"
 msgstr ""
 
-#: models.py:93
+#: aleksis/apps/chronos/models.py:96
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: models.py:100
+#: aleksis/apps/chronos/models.py:103
 msgid "The validity range must be within the school term."
 msgstr ""
 
-#: models.py:107
+#: aleksis/apps/chronos/models.py:110
 msgid "There is already a validity range for this time or a part of this time."
 msgstr ""
 
-#: models.py:114
+#: aleksis/apps/chronos/models.py:117
 msgid "Validity range"
 msgstr ""
 
-#: models.py:115
+#: aleksis/apps/chronos/models.py:118
 msgid "Validity ranges"
 msgstr ""
 
-#: models.py:124
+#: aleksis/apps/chronos/models.py:130
 msgid "Week day"
 msgstr ""
 
-#: models.py:126
+#: aleksis/apps/chronos/models.py:132
 msgid "Number of period"
 msgstr ""
 
-#: models.py:128
+#: aleksis/apps/chronos/models.py:134
 msgid "Start time"
 msgstr ""
 
-#: models.py:129
+#: aleksis/apps/chronos/models.py:135
 msgid "End time"
 msgstr ""
 
-#: models.py:289 models.py:426 models.py:916
+#: aleksis/apps/chronos/models.py:303 aleksis/apps/chronos/models.py:449
+#: aleksis/apps/chronos/models.py:1027
 msgid "Time period"
 msgstr ""
 
-#: models.py:290
+#: aleksis/apps/chronos/models.py:304
 msgid "Time periods"
 msgstr ""
 
-#: models.py:294 models.py:310 models.py:542 models.py:703 models.py:720
+#: aleksis/apps/chronos/models.py:308 aleksis/apps/chronos/models.py:324
+#: aleksis/apps/chronos/models.py:590 aleksis/apps/chronos/models.py:756
+#: aleksis/apps/chronos/models.py:773
 msgid "Short name"
 msgstr ""
 
-#: models.py:295 models.py:311 models.py:704 models.py:721
+#: aleksis/apps/chronos/models.py:309 aleksis/apps/chronos/models.py:325
+#: aleksis/apps/chronos/models.py:757 aleksis/apps/chronos/models.py:774
 msgid "Long name"
 msgstr ""
 
-#: models.py:297
+#: aleksis/apps/chronos/models.py:311
 msgid "Foreground colour"
 msgstr ""
 
-#: models.py:298
+#: aleksis/apps/chronos/models.py:312
 msgid "Background colour"
 msgstr ""
 
-#: models.py:305 models.py:327 models.py:373 models.py:923
-#: templates/chronos/substitutions.html:46
-#: templates/chronos/substitutions_print.html:29
+#: aleksis/apps/chronos/models.py:319 aleksis/apps/chronos/models.py:342
+#: aleksis/apps/chronos/models.py:392 aleksis/apps/chronos/models.py:1034
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:46
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29
 msgid "Subject"
 msgstr ""
 
-#: models.py:306
+#: aleksis/apps/chronos/models.py:320
 msgid "Subjects"
 msgstr ""
 
-#: models.py:321 models.py:378 models.py:430 models.py:590 models.py:932
-#: templates/chronos/substitutions.html:47
-#: templates/chronos/substitutions_print.html:30
+#: aleksis/apps/chronos/models.py:334
+msgid "Can view room timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:336 aleksis/apps/chronos/models.py:397
+#: aleksis/apps/chronos/models.py:453 aleksis/apps/chronos/models.py:638
+#: aleksis/apps/chronos/models.py:1043
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:47
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30
 msgid "Room"
 msgstr ""
 
-#: models.py:322 models.py:874 templates/chronos/all.html:39
+#: aleksis/apps/chronos/models.py:337 aleksis/apps/chronos/models.py:927
+#: aleksis/apps/chronos/templates/chronos/all.html:39
 msgid "Rooms"
 msgstr ""
 
-#: models.py:330 models.py:376 models.py:876 models.py:929 tables.py:35
-#: templates/chronos/all.html:17 templates/chronos/substitutions_print.html:28
+#: aleksis/apps/chronos/models.py:345 aleksis/apps/chronos/models.py:395
+#: aleksis/apps/chronos/models.py:929 aleksis/apps/chronos/models.py:1040
+#: aleksis/apps/chronos/tables.py:35
+#: aleksis/apps/chronos/templates/chronos/all.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28
 msgid "Teachers"
 msgstr ""
 
-#: models.py:333
+#: aleksis/apps/chronos/models.py:348
 msgid "Periods"
 msgstr ""
 
-#: models.py:335 models.py:873 models.py:926 tables.py:34
-#: templates/chronos/all.html:28
+#: aleksis/apps/chronos/models.py:350 aleksis/apps/chronos/models.py:926
+#: aleksis/apps/chronos/models.py:1037 aleksis/apps/chronos/tables.py:34
+#: aleksis/apps/chronos/templates/chronos/all.html:28
 msgid "Groups"
 msgstr ""
 
-#: models.py:353 models.py:423 models.py:630
+#: aleksis/apps/chronos/models.py:372 aleksis/apps/chronos/models.py:446
+#: aleksis/apps/chronos/models.py:678
 msgid "Lesson"
 msgstr ""
 
-#: models.py:354 templates/chronos/lessons_day.html:9
-#: templates/chronos/lessons_day.html:19
+#: aleksis/apps/chronos/models.py:373
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19
 msgid "Lessons"
 msgstr ""
 
-#: models.py:360 models.py:913
+#: aleksis/apps/chronos/models.py:379 aleksis/apps/chronos/models.py:1024
 msgid "Week"
 msgstr ""
 
-#: models.py:361 models.py:914
+#: aleksis/apps/chronos/models.py:380 aleksis/apps/chronos/models.py:1025
 msgid "Year"
 msgstr ""
 
-#: models.py:364 models.py:497
+#: aleksis/apps/chronos/models.py:383 aleksis/apps/chronos/models.py:546
 msgid "Lesson period"
 msgstr ""
 
-#: models.py:380
+#: aleksis/apps/chronos/models.py:399
 msgid "Cancelled?"
 msgstr ""
 
-#: models.py:382
+#: aleksis/apps/chronos/models.py:401
 msgid "Cancelled for teachers?"
 msgstr ""
 
-#: models.py:385 models.py:609 models.py:650 models.py:935
+#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:657
+#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:1046
 msgid "Comment"
 msgstr ""
 
-#: models.py:389
+#: aleksis/apps/chronos/models.py:408
 msgid "Lessons can only be either substituted or cancelled."
 msgstr ""
 
-#: models.py:413
+#: aleksis/apps/chronos/models.py:436
 msgid "Lesson substitution"
 msgstr ""
 
-#: models.py:414
+#: aleksis/apps/chronos/models.py:437
 msgid "Lesson substitutions"
 msgstr ""
 
-#: models.py:498
+#: aleksis/apps/chronos/models.py:547
 msgid "Lesson periods"
 msgstr ""
 
-#: models.py:537
+#: aleksis/apps/chronos/models.py:585
 msgid "Timetable widget"
 msgstr ""
 
-#: models.py:538
+#: aleksis/apps/chronos/models.py:586
 msgid "Timetable widgets"
 msgstr ""
 
-#: models.py:552 models.py:565
+#: aleksis/apps/chronos/models.py:600 aleksis/apps/chronos/models.py:613
 msgid "Absence reason"
 msgstr ""
 
-#: models.py:553
+#: aleksis/apps/chronos/models.py:601
 msgid "Absence reasons"
 msgstr ""
 
-#: models.py:574 models.py:791 models.py:837
-#: templates/chronos/substitutions.html:45
+#: aleksis/apps/chronos/models.py:622 aleksis/apps/chronos/models.py:844
+#: aleksis/apps/chronos/models.py:890
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:45
 msgid "Teacher"
 msgstr ""
 
-#: models.py:582
+#: aleksis/apps/chronos/models.py:630
 msgid "Group"
 msgstr ""
 
-#: models.py:598 models.py:637
+#: aleksis/apps/chronos/models.py:646 aleksis/apps/chronos/models.py:685
 msgid "Start period"
 msgstr ""
 
-#: models.py:605 models.py:644
+#: aleksis/apps/chronos/models.py:653 aleksis/apps/chronos/models.py:692
 msgid "End period"
 msgstr ""
 
-#: models.py:619
+#: aleksis/apps/chronos/models.py:667
 msgid "Unknown absence"
 msgstr ""
 
-#: models.py:624
+#: aleksis/apps/chronos/models.py:672
 msgid "Absence"
 msgstr ""
 
-#: models.py:625
+#: aleksis/apps/chronos/models.py:673
 msgid "Absences"
 msgstr ""
 
-#: models.py:633
+#: aleksis/apps/chronos/models.py:681
 msgid "Date of exam"
 msgstr ""
 
-#: models.py:649 models.py:662 models.py:858
+#: aleksis/apps/chronos/models.py:697 aleksis/apps/chronos/models.py:710
+#: aleksis/apps/chronos/models.py:911
 msgid "Title"
 msgstr ""
 
-#: models.py:655
+#: aleksis/apps/chronos/models.py:703
 msgid "Exam"
 msgstr ""
 
-#: models.py:656
+#: aleksis/apps/chronos/models.py:704
 msgid "Exams"
 msgstr ""
 
-#: models.py:665
+#: aleksis/apps/chronos/models.py:713
 msgid "Comments"
 msgstr ""
 
-#: models.py:698
+#: aleksis/apps/chronos/models.py:751
 msgid "Holiday"
 msgstr ""
 
-#: models.py:699
+#: aleksis/apps/chronos/models.py:752
 msgid "Holidays"
 msgstr ""
 
-#: models.py:713 models.py:784
+#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:837
 msgid "Supervision area"
 msgstr ""
 
-#: models.py:714
+#: aleksis/apps/chronos/models.py:767
 msgid "Supervision areas"
 msgstr ""
 
-#: models.py:726
+#: aleksis/apps/chronos/models.py:779
 msgid "Time period after break starts"
 msgstr ""
 
-#: models.py:734
+#: aleksis/apps/chronos/models.py:787
 msgid "Time period before break ends"
 msgstr ""
 
-#: models.py:774 models.py:788
+#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:841
 msgid "Break"
 msgstr ""
 
-#: models.py:775
+#: aleksis/apps/chronos/models.py:828
 msgid "Breaks"
 msgstr ""
 
-#: models.py:822 models.py:831 templates/chronos/partials/subs/subject.html:23
-#: templates/chronos/partials/supervision.html:15
+#: aleksis/apps/chronos/models.py:875 aleksis/apps/chronos/models.py:884
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23
+#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15
 msgid "Supervision"
 msgstr ""
 
-#: models.py:823
+#: aleksis/apps/chronos/models.py:876
 msgid "Supervisions"
 msgstr ""
 
-#: models.py:829
+#: aleksis/apps/chronos/models.py:882
 msgid "Date"
 msgstr ""
 
-#: models.py:849
+#: aleksis/apps/chronos/models.py:902
 msgid "Supervision substitution"
 msgstr ""
 
-#: models.py:850
+#: aleksis/apps/chronos/models.py:903
 msgid "Supervision substitutions"
 msgstr ""
 
-#: models.py:866
+#: aleksis/apps/chronos/models.py:919
 msgid "Start time period"
 msgstr ""
 
-#: models.py:870
+#: aleksis/apps/chronos/models.py:923
 msgid "End time period"
 msgstr ""
 
-#: models.py:883
+#: aleksis/apps/chronos/models.py:936
 #, python-brace-format
 msgid "Event {self.pk}"
 msgstr ""
 
-#: models.py:904 templates/chronos/partials/subs/subject.html:27
+#: aleksis/apps/chronos/models.py:1013
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27
 msgid "Event"
 msgstr ""
 
-#: models.py:905
+#: aleksis/apps/chronos/models.py:1014
 msgid "Events"
 msgstr ""
 
-#: models.py:941
+#: aleksis/apps/chronos/models.py:1064
 msgid "Extra lesson"
 msgstr ""
 
-#: models.py:942
+#: aleksis/apps/chronos/models.py:1065
 msgid "Extra lessons"
 msgstr ""
 
-#: models.py:949
-msgid "Can view all timetables"
+#: aleksis/apps/chronos/models.py:1073
+msgid "Can view all room timetables"
 msgstr ""
 
-#: models.py:950
+#: aleksis/apps/chronos/models.py:1074
+msgid "Can view all group timetables"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:1075
+msgid "Can view all person timetables"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:1076
 msgid "Can view timetable overview"
 msgstr ""
 
-#: models.py:951
+#: aleksis/apps/chronos/models.py:1077
 msgid "Can view all lessons per day"
 msgstr ""
 
-#: preferences.py:8
+#: aleksis/apps/chronos/preferences.py:8
 msgid "Chronos"
 msgstr ""
 
-#: preferences.py:16
+#: aleksis/apps/chronos/preferences.py:16
 msgid "Use parent groups in timetable views"
 msgstr ""
 
-#: preferences.py:18
+#: aleksis/apps/chronos/preferences.py:18
 msgid "If an lesson or substitution has only one group and this group has parent groups, show the parent groups instead of the original group."
 msgstr ""
 
-#: preferences.py:29
+#: aleksis/apps/chronos/preferences.py:29
 msgid "Shorten groups in timetable views"
 msgstr ""
 
-#: preferences.py:30
+#: aleksis/apps/chronos/preferences.py:30
 msgid "If there are more groups than the set limit, they will be collapsed."
 msgstr ""
 
-#: preferences.py:38
+#: aleksis/apps/chronos/preferences.py:38
 msgid "Limit of groups for shortening of groups"
 msgstr ""
 
-#: preferences.py:40
+#: aleksis/apps/chronos/preferences.py:40
 msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit."
 msgstr ""
 
-#: preferences.py:50
+#: aleksis/apps/chronos/preferences.py:50
 msgid "Number of days shown on substitutions print view"
 msgstr ""
 
-#: preferences.py:58
+#: aleksis/apps/chronos/preferences.py:58
 msgid "Show header box in substitution views"
 msgstr ""
 
-#: preferences.py:59
+#: aleksis/apps/chronos/preferences.py:59
 msgid "The header box shows affected teachers/groups."
 msgstr ""
 
-#: preferences.py:68
+#: aleksis/apps/chronos/preferences.py:68
 msgid "Show parent groups in header box in substitution views instead of original groups"
 msgstr ""
 
-#: tables.py:41
+#: aleksis/apps/chronos/tables.py:41
 msgid "Substitution"
 msgstr ""
 
-#: tables.py:43
+#: aleksis/apps/chronos/tables.py:43
 msgid "Manage substitution"
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:6
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:6
 msgid "Edit substitution."
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:7
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:7
 msgid "Edit substitution"
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:20
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:20
 msgid "Delete"
 msgstr ""
 
-#: templates/chronos/my_timetable.html:19 templates/chronos/timetable.html:50
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19
+#: aleksis/apps/chronos/templates/chronos/timetable.html:49
 msgid "SMART PLAN"
 msgstr ""
 
-#: templates/chronos/my_timetable.html:22
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22
 msgid "Show week timetable for"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:10
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10
 msgid "Absent teachers"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:22
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22
 msgid "Absent groups"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:34
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34
 msgid "Affected teachers"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:46
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46
 msgid "Affected groups"
 msgstr ""
 
-#: templates/chronos/partials/subs/badge.html:4
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4
 msgid "Cancelled"
 msgstr ""
 
-#: templates/chronos/partials/subs/badge.html:6
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6
 msgid "Cancelled for teachers"
 msgstr ""
 
-#: templates/chronos/partials/week_select.html:14
-#: templates/chronos/partials/week_select.html:25
-#: templates/chronos/partials/week_select.html:36
+#: aleksis/apps/chronos/templates/chronos/partials/today.html:2
+msgid "Today"
+msgstr ""
+
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36
 msgid "CW"
 msgstr ""
 
-#: templates/chronos/substitutions.html:48
-#: templates/chronos/substitutions_print.html:31
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:48
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31
 msgid "Notes"
 msgstr ""
 
-#: templates/chronos/substitutions.html:56
-#: templates/chronos/substitutions_print.html:41
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:56
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41
 msgid "No substitutions available."
 msgstr ""
 
-#: templates/chronos/substitutions_print.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11
 msgid "Print: Substitutions"
 msgstr ""
 
-#: templates/chronos/timetable.html:11 templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11
 msgid "Timetable"
 msgstr ""
 
-#: templates/chronos/timetable.html:28
+#: aleksis/apps/chronos/templates/chronos/timetable.html:28
 msgid "Group teachers:"
 msgstr ""
 
-#: templates/chronos/timetable.html:55
+#: aleksis/apps/chronos/templates/chronos/timetable.html:54
 msgid "Show regular timetable"
 msgstr ""
 
-#: templates/chronos/timetable.html:67
+#: aleksis/apps/chronos/templates/chronos/timetable.html:66
 msgid "Show SMART PLAN"
 msgstr ""
 
-#: templates/chronos/widget.html:8
+#: aleksis/apps/chronos/templates/chronos/widget.html:8
 #, python-format
 msgid ""
 "\n"
@@ -512,21 +564,21 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/chronos/widget.html:19
+#: aleksis/apps/chronos/templates/chronos/widget.html:19
 msgid ""
 "\n"
 "              There is no timetable linked to your person.\n"
 "            "
 msgstr ""
 
-#: templates/chronos/widget.html:29
+#: aleksis/apps/chronos/templates/chronos/widget.html:29
 msgid "Go to smart plan"
 msgstr ""
 
-#: views.py:243
+#: aleksis/apps/chronos/views.py:264
 msgid "The substitution has been saved."
 msgstr ""
 
-#: views.py:264
+#: aleksis/apps/chronos/views.py:285
 msgid "The substitution has been deleted."
 msgstr ""
diff --git a/aleksis/apps/chronos/locale/de_DE/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/de_DE/LC_MESSAGES/django.po
index 581952c87add443aeb2c6bdcabcff4617fc5f636..65ae69e47bd62db5265f6abd77d4ca7c708a0c2b 100644
--- a/aleksis/apps/chronos/locale/de_DE/LC_MESSAGES/django.po
+++ b/aleksis/apps/chronos/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: 2020-12-05 21:26+0100\n"
+"POT-Creation-Date: 2021-05-20 21:05+0200\n"
 "PO-Revision-Date: 2020-12-05 20:51+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
-"Language-Team: German <https://translate.edugit.org/projects/aleksis/"
-"aleksis-app-chronos/de/>\n"
+"Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-app-chronos/de/>\n"
 "Language: de_DE\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -19,497 +18,557 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 4.3.2\n"
 
-#: forms.py:29
+#: aleksis/apps/chronos/forms.py:29
 msgid "Options for timetables"
 msgstr "Einstellungen für Stundenpläne"
 
-#: menus.py:6
+#: aleksis/apps/chronos/menus.py:6
 msgid "Timetables"
 msgstr "Stundenpläne"
 
-#: menus.py:16 templates/chronos/my_timetable.html:11
-#: templates/chronos/my_timetable.html:18
+#: aleksis/apps/chronos/menus.py:16
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18
 msgid "My timetable"
 msgstr "Mein Plan"
 
-#: menus.py:27 templates/chronos/all.html:11 templates/chronos/all.html:12
+#: aleksis/apps/chronos/menus.py:27
+#: aleksis/apps/chronos/templates/chronos/all.html:11
+#: aleksis/apps/chronos/templates/chronos/all.html:12
 msgid "All timetables"
 msgstr "Alle Stundenpläne"
 
-#: menus.py:38
+#: aleksis/apps/chronos/menus.py:38
 msgid "Daily lessons"
 msgstr "Tagesstunden"
 
-#: menus.py:49 templates/chronos/substitutions.html:11
-#: templates/chronos/substitutions.html:17
-#: templates/chronos/substitutions_print.html:12
-#: templates/chronos/substitutions_print.html:17
+#: aleksis/apps/chronos/menus.py:49
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:17
 msgid "Substitutions"
 msgstr "Vertretungen"
 
-#: mixins.py:25
+#: aleksis/apps/chronos/mixins.py:25
 msgid "Linked validity range"
 msgstr "Zugeordneter Gültigkeitsbereich"
 
-#: model_extensions.py:123
+#: aleksis/apps/chronos/model_extensions.py:133
 msgid "Show announcement in timetable views?"
 msgstr "Ankündigungen in Stundenplanansichten anzeigen?"
 
-#: models.py:68
+#: aleksis/apps/chronos/model_extensions.py:141
+#, fuzzy
+#| msgid "Can view all timetables"
+msgid "Can view group timetable"
+msgstr "Kann alle Stundenpläne sehen"
+
+#: aleksis/apps/chronos/model_extensions.py:144
+#, fuzzy
+#| msgid "Can view all timetables"
+msgid "Can view person timetable"
+msgstr "Kann alle Stundenpläne sehen"
+
+#: aleksis/apps/chronos/models.py:71
 msgid "School term"
 msgstr "Schuljahr"
 
-#: models.py:71 models.py:543
+#: aleksis/apps/chronos/models.py:74 aleksis/apps/chronos/models.py:591
 msgid "Name"
 msgstr "Name"
 
-#: models.py:73 models.py:593 models.py:663 models.py:860
+#: aleksis/apps/chronos/models.py:76 aleksis/apps/chronos/models.py:641
+#: aleksis/apps/chronos/models.py:711 aleksis/apps/chronos/models.py:913
 msgid "Start date"
 msgstr "Startdatum"
 
-#: models.py:74 models.py:594 models.py:664 models.py:861
+#: aleksis/apps/chronos/models.py:77 aleksis/apps/chronos/models.py:642
+#: aleksis/apps/chronos/models.py:712 aleksis/apps/chronos/models.py:914
 msgid "End date"
 msgstr "Enddatum"
 
-#: models.py:93
+#: aleksis/apps/chronos/models.py:96
 msgid "The start date must be earlier than the end date."
 msgstr "Das Startdatum muss vor dem Enddatum liegen."
 
-#: models.py:100
+#: aleksis/apps/chronos/models.py:103
 msgid "The validity range must be within the school term."
 msgstr "Der Gültigkeitsbereich muss innerhalb des Schuljahres liegen."
 
-#: models.py:107
+#: aleksis/apps/chronos/models.py:110
 msgid "There is already a validity range for this time or a part of this time."
-msgstr ""
-"Es gibt bereits einen Gültigkeitsbereich für diesen Zeitraum oder einen Teil "
-"diesen Zeitraumes."
+msgstr "Es gibt bereits einen Gültigkeitsbereich für diesen Zeitraum oder einen Teil diesen Zeitraumes."
 
-#: models.py:114
+#: aleksis/apps/chronos/models.py:117
 msgid "Validity range"
 msgstr "Gültigkeitsbereich"
 
-#: models.py:115
+#: aleksis/apps/chronos/models.py:118
 msgid "Validity ranges"
 msgstr "Gültigkeitsbereiche"
 
-#: models.py:124
+#: aleksis/apps/chronos/models.py:130
 msgid "Week day"
 msgstr "Wochentag"
 
-#: models.py:126
+#: aleksis/apps/chronos/models.py:132
 msgid "Number of period"
 msgstr "Nummer der Stunde"
 
-#: models.py:128
+#: aleksis/apps/chronos/models.py:134
 msgid "Start time"
 msgstr "Startzeit"
 
-#: models.py:129
+#: aleksis/apps/chronos/models.py:135
 msgid "End time"
 msgstr "Endzeit"
 
-#: models.py:289 models.py:426 models.py:916
+#: aleksis/apps/chronos/models.py:303 aleksis/apps/chronos/models.py:449
+#: aleksis/apps/chronos/models.py:1027
 msgid "Time period"
 msgstr "Stunde"
 
-#: models.py:290
+#: aleksis/apps/chronos/models.py:304
 msgid "Time periods"
 msgstr "Stunden"
 
-#: models.py:294 models.py:310 models.py:542 models.py:703 models.py:720
+#: aleksis/apps/chronos/models.py:308 aleksis/apps/chronos/models.py:324
+#: aleksis/apps/chronos/models.py:590 aleksis/apps/chronos/models.py:756
+#: aleksis/apps/chronos/models.py:773
 msgid "Short name"
 msgstr "Kurzname"
 
-#: models.py:295 models.py:311 models.py:704 models.py:721
+#: aleksis/apps/chronos/models.py:309 aleksis/apps/chronos/models.py:325
+#: aleksis/apps/chronos/models.py:757 aleksis/apps/chronos/models.py:774
 msgid "Long name"
 msgstr "Langname"
 
-#: models.py:297
+#: aleksis/apps/chronos/models.py:311
 msgid "Foreground colour"
 msgstr "Vordergrundfarbe"
 
-#: models.py:298
+#: aleksis/apps/chronos/models.py:312
 msgid "Background colour"
 msgstr "Hintergrundfarbe"
 
-#: models.py:305 models.py:327 models.py:373 models.py:923
-#: templates/chronos/substitutions.html:46
-#: templates/chronos/substitutions_print.html:29
+#: aleksis/apps/chronos/models.py:319 aleksis/apps/chronos/models.py:342
+#: aleksis/apps/chronos/models.py:392 aleksis/apps/chronos/models.py:1034
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:46
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29
 msgid "Subject"
 msgstr "Fach"
 
-#: models.py:306
+#: aleksis/apps/chronos/models.py:320
 msgid "Subjects"
 msgstr "Fächer"
 
-#: models.py:321 models.py:378 models.py:430 models.py:590 models.py:932
-#: templates/chronos/substitutions.html:47
-#: templates/chronos/substitutions_print.html:30
+#: aleksis/apps/chronos/models.py:334
+#, fuzzy
+#| msgid "Can view all timetables"
+msgid "Can view room timetable"
+msgstr "Kann alle Stundenpläne sehen"
+
+#: aleksis/apps/chronos/models.py:336 aleksis/apps/chronos/models.py:397
+#: aleksis/apps/chronos/models.py:453 aleksis/apps/chronos/models.py:638
+#: aleksis/apps/chronos/models.py:1043
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:47
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30
 msgid "Room"
 msgstr "Raum"
 
-#: models.py:322 models.py:874 templates/chronos/all.html:39
+#: aleksis/apps/chronos/models.py:337 aleksis/apps/chronos/models.py:927
+#: aleksis/apps/chronos/templates/chronos/all.html:39
 msgid "Rooms"
 msgstr "Räume"
 
-#: models.py:330 models.py:376 models.py:876 models.py:929 tables.py:35
-#: templates/chronos/all.html:17 templates/chronos/substitutions_print.html:28
+#: aleksis/apps/chronos/models.py:345 aleksis/apps/chronos/models.py:395
+#: aleksis/apps/chronos/models.py:929 aleksis/apps/chronos/models.py:1040
+#: aleksis/apps/chronos/tables.py:35
+#: aleksis/apps/chronos/templates/chronos/all.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28
 msgid "Teachers"
 msgstr "Lehrkräfte"
 
-#: models.py:333
+#: aleksis/apps/chronos/models.py:348
 msgid "Periods"
 msgstr "Stunden"
 
-#: models.py:335 models.py:873 models.py:926 tables.py:34
-#: templates/chronos/all.html:28
+#: aleksis/apps/chronos/models.py:350 aleksis/apps/chronos/models.py:926
+#: aleksis/apps/chronos/models.py:1037 aleksis/apps/chronos/tables.py:34
+#: aleksis/apps/chronos/templates/chronos/all.html:28
 msgid "Groups"
 msgstr "Gruppen"
 
-#: models.py:353 models.py:423 models.py:630
+#: aleksis/apps/chronos/models.py:372 aleksis/apps/chronos/models.py:446
+#: aleksis/apps/chronos/models.py:678
 msgid "Lesson"
 msgstr "Unterrichtsstunde"
 
-#: models.py:354 templates/chronos/lessons_day.html:9
-#: templates/chronos/lessons_day.html:19
+#: aleksis/apps/chronos/models.py:373
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19
 msgid "Lessons"
 msgstr "Unterrichtsstunden"
 
-#: models.py:360 models.py:913
+#: aleksis/apps/chronos/models.py:379 aleksis/apps/chronos/models.py:1024
 msgid "Week"
 msgstr "Woche"
 
-#: models.py:361 models.py:914
+#: aleksis/apps/chronos/models.py:380 aleksis/apps/chronos/models.py:1025
 msgid "Year"
 msgstr "Jahr"
 
-#: models.py:364 models.py:497
+#: aleksis/apps/chronos/models.py:383 aleksis/apps/chronos/models.py:546
 msgid "Lesson period"
 msgstr "Unterrichtsstunde"
 
-#: models.py:380
+#: aleksis/apps/chronos/models.py:399
 msgid "Cancelled?"
 msgstr "Entfällt?"
 
-#: models.py:382
+#: aleksis/apps/chronos/models.py:401
 msgid "Cancelled for teachers?"
 msgstr "Entfällt für Lehrkräfte?"
 
-#: models.py:385 models.py:609 models.py:650 models.py:935
+#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:657
+#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:1046
 msgid "Comment"
 msgstr "Kommentar"
 
-#: models.py:389
+#: aleksis/apps/chronos/models.py:408
 msgid "Lessons can only be either substituted or cancelled."
 msgstr "Unterrichtsstunden können nur entweder vertreten werden oder ausfallen."
 
-#: models.py:413
+#: aleksis/apps/chronos/models.py:436
 msgid "Lesson substitution"
 msgstr "Vertretung"
 
-#: models.py:414
+#: aleksis/apps/chronos/models.py:437
 msgid "Lesson substitutions"
 msgstr "Vertretungen"
 
-#: models.py:498
+#: aleksis/apps/chronos/models.py:547
 msgid "Lesson periods"
 msgstr "Unterrichtsstunden"
 
-#: models.py:537
+#: aleksis/apps/chronos/models.py:585
 msgid "Timetable widget"
 msgstr "Stundenplanwidget"
 
-#: models.py:538
+#: aleksis/apps/chronos/models.py:586
 msgid "Timetable widgets"
 msgstr "Stundenplanwidgets"
 
-#: models.py:552 models.py:565
+#: aleksis/apps/chronos/models.py:600 aleksis/apps/chronos/models.py:613
 msgid "Absence reason"
 msgstr "Absenzgrund"
 
-#: models.py:553
+#: aleksis/apps/chronos/models.py:601
 msgid "Absence reasons"
 msgstr "Absenzgründe"
 
-#: models.py:574 models.py:791 models.py:837
-#: templates/chronos/substitutions.html:45
+#: aleksis/apps/chronos/models.py:622 aleksis/apps/chronos/models.py:844
+#: aleksis/apps/chronos/models.py:890
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:45
 msgid "Teacher"
 msgstr "Lehrkraft"
 
-#: models.py:582
+#: aleksis/apps/chronos/models.py:630
 msgid "Group"
 msgstr "Gruppe"
 
-#: models.py:598 models.py:637
+#: aleksis/apps/chronos/models.py:646 aleksis/apps/chronos/models.py:685
 msgid "Start period"
 msgstr "Startstunde"
 
-#: models.py:605 models.py:644
+#: aleksis/apps/chronos/models.py:653 aleksis/apps/chronos/models.py:692
 msgid "End period"
 msgstr "Endstunde"
 
-#: models.py:619
+#: aleksis/apps/chronos/models.py:667
 msgid "Unknown absence"
 msgstr "Unbekannte Absenz"
 
-#: models.py:624
+#: aleksis/apps/chronos/models.py:672
 msgid "Absence"
 msgstr "Absenz"
 
-#: models.py:625
+#: aleksis/apps/chronos/models.py:673
 msgid "Absences"
 msgstr "Fehlstunden"
 
-#: models.py:633
+#: aleksis/apps/chronos/models.py:681
 msgid "Date of exam"
 msgstr "Datum der Klausur"
 
-#: models.py:649 models.py:662 models.py:858
+#: aleksis/apps/chronos/models.py:697 aleksis/apps/chronos/models.py:710
+#: aleksis/apps/chronos/models.py:911
 msgid "Title"
 msgstr "Titel"
 
-#: models.py:655
+#: aleksis/apps/chronos/models.py:703
 msgid "Exam"
 msgstr "Klausur"
 
-#: models.py:656
+#: aleksis/apps/chronos/models.py:704
 msgid "Exams"
 msgstr "Klausuren"
 
-#: models.py:665
+#: aleksis/apps/chronos/models.py:713
 msgid "Comments"
 msgstr "Kommentare"
 
-#: models.py:698
+#: aleksis/apps/chronos/models.py:751
 msgid "Holiday"
 msgstr "Ferien"
 
-#: models.py:699
+#: aleksis/apps/chronos/models.py:752
 msgid "Holidays"
 msgstr "Ferien"
 
-#: models.py:713 models.py:784
+#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:837
 msgid "Supervision area"
 msgstr "Aufsichtsgebiet"
 
-#: models.py:714
+#: aleksis/apps/chronos/models.py:767
 msgid "Supervision areas"
 msgstr "Aufsichtsgebiete"
 
-#: models.py:726
+#: aleksis/apps/chronos/models.py:779
 msgid "Time period after break starts"
 msgstr "Stunde, nach der die Pause startet"
 
-#: models.py:734
+#: aleksis/apps/chronos/models.py:787
 msgid "Time period before break ends"
 msgstr "Stunde nach der Pause"
 
-#: models.py:774 models.py:788
+#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:841
 msgid "Break"
 msgstr "Pause"
 
-#: models.py:775
+#: aleksis/apps/chronos/models.py:828
 msgid "Breaks"
 msgstr "Pausen"
 
-#: models.py:822 models.py:831 templates/chronos/partials/subs/subject.html:23
-#: templates/chronos/partials/supervision.html:15
+#: aleksis/apps/chronos/models.py:875 aleksis/apps/chronos/models.py:884
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23
+#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15
 msgid "Supervision"
 msgstr "Aufsicht"
 
-#: models.py:823
+#: aleksis/apps/chronos/models.py:876
 msgid "Supervisions"
 msgstr "Aufsichten"
 
-#: models.py:829
+#: aleksis/apps/chronos/models.py:882
 msgid "Date"
 msgstr "Datum"
 
-#: models.py:849
+#: aleksis/apps/chronos/models.py:902
 msgid "Supervision substitution"
 msgstr "Aufsichtsvertretung"
 
-#: models.py:850
+#: aleksis/apps/chronos/models.py:903
 msgid "Supervision substitutions"
 msgstr "Aufsichtsvertretungen"
 
-#: models.py:866
+#: aleksis/apps/chronos/models.py:919
 msgid "Start time period"
 msgstr "Startstunde"
 
-#: models.py:870
+#: aleksis/apps/chronos/models.py:923
 msgid "End time period"
 msgstr "Endstunde"
 
-#: models.py:883
+#: aleksis/apps/chronos/models.py:936
 #, python-brace-format
 msgid "Event {self.pk}"
 msgstr "Veranstaltung {self.pk}"
 
-#: models.py:904 templates/chronos/partials/subs/subject.html:27
+#: aleksis/apps/chronos/models.py:1013
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27
 msgid "Event"
 msgstr "Veranstaltung"
 
-#: models.py:905
+#: aleksis/apps/chronos/models.py:1014
 msgid "Events"
 msgstr "Veranstaltungen"
 
-#: models.py:941
+#: aleksis/apps/chronos/models.py:1064
 msgid "Extra lesson"
 msgstr "Sonderstunde"
 
-#: models.py:942
+#: aleksis/apps/chronos/models.py:1065
 msgid "Extra lessons"
 msgstr "Sonderstunden"
 
-#: models.py:949
-msgid "Can view all timetables"
+#: aleksis/apps/chronos/models.py:1073
+#, fuzzy
+#| msgid "Can view all timetables"
+msgid "Can view all room timetables"
 msgstr "Kann alle Stundenpläne sehen"
 
-#: models.py:950
+#: aleksis/apps/chronos/models.py:1074
+#, fuzzy
+#| msgid "Can view all timetables"
+msgid "Can view all group timetables"
+msgstr "Kann alle Stundenpläne sehen"
+
+#: aleksis/apps/chronos/models.py:1075
+#, fuzzy
+#| msgid "Can view all timetables"
+msgid "Can view all person timetables"
+msgstr "Kann alle Stundenpläne sehen"
+
+#: aleksis/apps/chronos/models.py:1076
 msgid "Can view timetable overview"
 msgstr "Kann Stundenplanübersicht sehen"
 
-#: models.py:951
+#: aleksis/apps/chronos/models.py:1077
 msgid "Can view all lessons per day"
 msgstr "Kann alle Tagesstunden sehen"
 
-#: preferences.py:8
+#: aleksis/apps/chronos/preferences.py:8
 msgid "Chronos"
 msgstr "Chronos"
 
-#: preferences.py:16
+#: aleksis/apps/chronos/preferences.py:16
 msgid "Use parent groups in timetable views"
 msgstr "Elterngruppen in Stundenplanansichten benutzen"
 
-#: preferences.py:18
+#: aleksis/apps/chronos/preferences.py:18
 msgid "If an lesson or substitution has only one group and this group has parent groups, show the parent groups instead of the original group."
 msgstr "Wenn eine Stunde oder Vertretung nur eine Gruppe hat und diese Gruppe Elterngruppen hat, zeige die Elterngruppen anstelle der eigentlichen Gruppe."
 
-#: preferences.py:29
+#: aleksis/apps/chronos/preferences.py:29
 msgid "Shorten groups in timetable views"
 msgstr "Gruppen in Stundenplanansichten kürzen"
 
-#: preferences.py:30
+#: aleksis/apps/chronos/preferences.py:30
 msgid "If there are more groups than the set limit, they will be collapsed."
 msgstr "Wenn es mehr Gruppen als das gesetzte Limit gibt, werden die Gruppenangaben gekürzt."
 
-#: preferences.py:38
+#: aleksis/apps/chronos/preferences.py:38
 msgid "Limit of groups for shortening of groups"
 msgstr "Anzahl der Gruppen, ab der gekürzt wird"
 
-#: preferences.py:40
+#: aleksis/apps/chronos/preferences.py:40
 msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit."
 msgstr "Wenn ein Nutzer die Kürzung von Gruppen aktiviert hat, werden sie ab diesem Limit gekürzt."
 
-#: preferences.py:50
+#: aleksis/apps/chronos/preferences.py:50
 msgid "Number of days shown on substitutions print view"
 msgstr "Anzahl der Tage, die in der Druckansicht des Vertretungsplanes angezeigt werden soll"
 
-#: preferences.py:58
+#: aleksis/apps/chronos/preferences.py:58
 msgid "Show header box in substitution views"
 msgstr "Kopfbox in Vertretungsplänen anzeigen"
 
-#: preferences.py:59
+#: aleksis/apps/chronos/preferences.py:59
 msgid "The header box shows affected teachers/groups."
 msgstr "Die Kopfbox zeigt betroffene Lehrkräfte/Gruppen."
 
-#: preferences.py:68
+#: aleksis/apps/chronos/preferences.py:68
 msgid "Show parent groups in header box in substitution views instead of original groups"
-msgstr ""
-"Elterngruppen in der Kopfbox in Vertretungsplänen an Stelle der eigentlichen "
-"Gruppen anzeigen"
+msgstr "Elterngruppen in der Kopfbox in Vertretungsplänen an Stelle der eigentlichen Gruppen anzeigen"
 
-#: tables.py:41
+#: aleksis/apps/chronos/tables.py:41
 msgid "Substitution"
 msgstr "Vertretung"
 
-#: tables.py:43
+#: aleksis/apps/chronos/tables.py:43
 msgid "Manage substitution"
 msgstr "Vertretung verwalten"
 
-#: templates/chronos/edit_substitution.html:6
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:6
 msgid "Edit substitution."
 msgstr "Vertretung bearbeiten."
 
-#: templates/chronos/edit_substitution.html:7
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:7
 msgid "Edit substitution"
 msgstr "Vertretung bearbeiten"
 
-#: templates/chronos/edit_substitution.html:20
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:20
 msgid "Delete"
 msgstr "Löschen"
 
-#: templates/chronos/my_timetable.html:19 templates/chronos/timetable.html:50
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19
+#: aleksis/apps/chronos/templates/chronos/timetable.html:49
 msgid "SMART PLAN"
 msgstr "SMART PLAN"
 
-#: templates/chronos/my_timetable.html:22
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22
 msgid "Show week timetable for"
 msgstr "Wochenplan anzeigen für"
 
-#: templates/chronos/partials/headerbox.html:10
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10
 msgid "Absent teachers"
 msgstr "Abwesende Lehrkräfte"
 
-#: templates/chronos/partials/headerbox.html:22
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22
 msgid "Absent groups"
 msgstr "Abwesende Gruppen"
 
-#: templates/chronos/partials/headerbox.html:34
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34
 msgid "Affected teachers"
 msgstr "Betroffene Lehrkräfte"
 
-#: templates/chronos/partials/headerbox.html:46
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46
 msgid "Affected groups"
 msgstr "Betroffene Gruppen"
 
-#: templates/chronos/partials/subs/badge.html:4
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4
 msgid "Cancelled"
 msgstr "Entfall"
 
-#: templates/chronos/partials/subs/badge.html:6
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6
 msgid "Cancelled for teachers"
 msgstr "Entfall für Lehrkräfte"
 
-#: templates/chronos/partials/week_select.html:14
-#: templates/chronos/partials/week_select.html:25
-#: templates/chronos/partials/week_select.html:36
+#: aleksis/apps/chronos/templates/chronos/partials/today.html:2
+msgid "Today"
+msgstr ""
+
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36
 msgid "CW"
 msgstr "KW"
 
-#: templates/chronos/substitutions.html:48
-#: templates/chronos/substitutions_print.html:31
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:48
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31
 msgid "Notes"
 msgstr "Notizen"
 
-#: templates/chronos/substitutions.html:56
-#: templates/chronos/substitutions_print.html:41
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:56
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41
 msgid "No substitutions available."
 msgstr "Keine Vertretungen vorhanden."
 
-#: templates/chronos/substitutions_print.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11
 msgid "Print: Substitutions"
 msgstr "Druckansicht: Vertretungen"
 
-#: templates/chronos/timetable.html:11 templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11
 msgid "Timetable"
 msgstr "Stundenplan"
 
-#: templates/chronos/timetable.html:28
+#: aleksis/apps/chronos/templates/chronos/timetable.html:28
 msgid "Group teachers:"
 msgstr "Gruppenlehrkräfte:"
 
-#: templates/chronos/timetable.html:55
+#: aleksis/apps/chronos/templates/chronos/timetable.html:54
 msgid "Show regular timetable"
 msgstr "Regulären Plan anzeigen"
 
-#: templates/chronos/timetable.html:67
+#: aleksis/apps/chronos/templates/chronos/timetable.html:66
 msgid "Show SMART PLAN"
 msgstr "SMART PLAN anzeigen"
 
-#: templates/chronos/widget.html:8
+#: aleksis/apps/chronos/templates/chronos/widget.html:8
 #, python-format
 msgid ""
 "\n"
@@ -520,7 +579,7 @@ msgstr ""
 "        Mein Stundenplan für %(day)s\n"
 "      "
 
-#: templates/chronos/widget.html:19
+#: aleksis/apps/chronos/templates/chronos/widget.html:19
 msgid ""
 "\n"
 "              There is no timetable linked to your person.\n"
@@ -530,15 +589,15 @@ msgstr ""
 "              Es gibt keine Stundenplan, der Ihrer Person zugeordnet ist.\n"
 "            "
 
-#: templates/chronos/widget.html:29
+#: aleksis/apps/chronos/templates/chronos/widget.html:29
 msgid "Go to smart plan"
 msgstr "SMART PLAN anzeigen"
 
-#: views.py:243
+#: aleksis/apps/chronos/views.py:264
 msgid "The substitution has been saved."
 msgstr "Die Vertretung wurde gespeichert."
 
-#: views.py:264
+#: aleksis/apps/chronos/views.py:285
 msgid "The substitution has been deleted."
 msgstr "Die Vertretung wurde gelöscht."
 
diff --git a/aleksis/apps/chronos/locale/fr/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/fr/LC_MESSAGES/django.po
index ef1400f446d475d7a544cdd99128c5277f675885..587918b30a585327a67b2985b411c026557233d0 100644
--- a/aleksis/apps/chronos/locale/fr/LC_MESSAGES/django.po
+++ b/aleksis/apps/chronos/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: 2020-12-05 21:26+0100\n"
+"POT-Creation-Date: 2021-05-20 21:05+0200\n"
 "PO-Revision-Date: 2020-04-29 12:01+0000\n"
 "Last-Translator: Marlene Grundey <grundema@katharineum.de>\n"
 "Language-Team: French <https://translate.edugit.org/projects/aleksis/aleksis-app-chronos/fr/>\n"
@@ -18,495 +18,547 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "X-Generator: Weblate 4.0.1\n"
 
-#: forms.py:29
+#: aleksis/apps/chronos/forms.py:29
 msgid "Options for timetables"
 msgstr ""
 
-#: menus.py:6
+#: aleksis/apps/chronos/menus.py:6
 msgid "Timetables"
 msgstr ""
 
-#: menus.py:16 templates/chronos/my_timetable.html:11
-#: templates/chronos/my_timetable.html:18
+#: aleksis/apps/chronos/menus.py:16
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18
 msgid "My timetable"
 msgstr ""
 
-#: menus.py:27 templates/chronos/all.html:11 templates/chronos/all.html:12
+#: aleksis/apps/chronos/menus.py:27
+#: aleksis/apps/chronos/templates/chronos/all.html:11
+#: aleksis/apps/chronos/templates/chronos/all.html:12
 msgid "All timetables"
 msgstr ""
 
-#: menus.py:38
+#: aleksis/apps/chronos/menus.py:38
 msgid "Daily lessons"
 msgstr ""
 
-#: menus.py:49 templates/chronos/substitutions.html:11
-#: templates/chronos/substitutions.html:17
-#: templates/chronos/substitutions_print.html:12
-#: templates/chronos/substitutions_print.html:17
+#: aleksis/apps/chronos/menus.py:49
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:17
 msgid "Substitutions"
 msgstr ""
 
-#: mixins.py:25
+#: aleksis/apps/chronos/mixins.py:25
 msgid "Linked validity range"
 msgstr ""
 
-#: model_extensions.py:123
+#: aleksis/apps/chronos/model_extensions.py:133
 msgid "Show announcement in timetable views?"
 msgstr ""
 
-#: models.py:68
+#: aleksis/apps/chronos/model_extensions.py:141
+msgid "Can view group timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/model_extensions.py:144
+msgid "Can view person timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:71
 msgid "School term"
 msgstr ""
 
-#: models.py:71 models.py:543
+#: aleksis/apps/chronos/models.py:74 aleksis/apps/chronos/models.py:591
 msgid "Name"
 msgstr ""
 
-#: models.py:73 models.py:593 models.py:663 models.py:860
+#: aleksis/apps/chronos/models.py:76 aleksis/apps/chronos/models.py:641
+#: aleksis/apps/chronos/models.py:711 aleksis/apps/chronos/models.py:913
 msgid "Start date"
 msgstr ""
 
-#: models.py:74 models.py:594 models.py:664 models.py:861
+#: aleksis/apps/chronos/models.py:77 aleksis/apps/chronos/models.py:642
+#: aleksis/apps/chronos/models.py:712 aleksis/apps/chronos/models.py:914
 msgid "End date"
 msgstr ""
 
-#: models.py:93
+#: aleksis/apps/chronos/models.py:96
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: models.py:100
+#: aleksis/apps/chronos/models.py:103
 msgid "The validity range must be within the school term."
 msgstr ""
 
-#: models.py:107
+#: aleksis/apps/chronos/models.py:110
 msgid "There is already a validity range for this time or a part of this time."
 msgstr ""
 
-#: models.py:114
+#: aleksis/apps/chronos/models.py:117
 msgid "Validity range"
 msgstr ""
 
-#: models.py:115
+#: aleksis/apps/chronos/models.py:118
 msgid "Validity ranges"
 msgstr ""
 
-#: models.py:124
+#: aleksis/apps/chronos/models.py:130
 msgid "Week day"
 msgstr ""
 
-#: models.py:126
+#: aleksis/apps/chronos/models.py:132
 msgid "Number of period"
 msgstr ""
 
-#: models.py:128
+#: aleksis/apps/chronos/models.py:134
 msgid "Start time"
 msgstr ""
 
-#: models.py:129
+#: aleksis/apps/chronos/models.py:135
 msgid "End time"
 msgstr ""
 
-#: models.py:289 models.py:426 models.py:916
+#: aleksis/apps/chronos/models.py:303 aleksis/apps/chronos/models.py:449
+#: aleksis/apps/chronos/models.py:1027
 msgid "Time period"
 msgstr ""
 
-#: models.py:290
+#: aleksis/apps/chronos/models.py:304
 msgid "Time periods"
 msgstr ""
 
-#: models.py:294 models.py:310 models.py:542 models.py:703 models.py:720
+#: aleksis/apps/chronos/models.py:308 aleksis/apps/chronos/models.py:324
+#: aleksis/apps/chronos/models.py:590 aleksis/apps/chronos/models.py:756
+#: aleksis/apps/chronos/models.py:773
 msgid "Short name"
 msgstr ""
 
-#: models.py:295 models.py:311 models.py:704 models.py:721
+#: aleksis/apps/chronos/models.py:309 aleksis/apps/chronos/models.py:325
+#: aleksis/apps/chronos/models.py:757 aleksis/apps/chronos/models.py:774
 msgid "Long name"
 msgstr ""
 
-#: models.py:297
+#: aleksis/apps/chronos/models.py:311
 msgid "Foreground colour"
 msgstr ""
 
-#: models.py:298
+#: aleksis/apps/chronos/models.py:312
 msgid "Background colour"
 msgstr ""
 
-#: models.py:305 models.py:327 models.py:373 models.py:923
-#: templates/chronos/substitutions.html:46
-#: templates/chronos/substitutions_print.html:29
+#: aleksis/apps/chronos/models.py:319 aleksis/apps/chronos/models.py:342
+#: aleksis/apps/chronos/models.py:392 aleksis/apps/chronos/models.py:1034
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:46
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29
 msgid "Subject"
 msgstr "Sujet"
 
-#: models.py:306
+#: aleksis/apps/chronos/models.py:320
 #, fuzzy
 #| msgid "Subject"
 msgid "Subjects"
 msgstr "Sujet"
 
-#: models.py:321 models.py:378 models.py:430 models.py:590 models.py:932
-#: templates/chronos/substitutions.html:47
-#: templates/chronos/substitutions_print.html:30
+#: aleksis/apps/chronos/models.py:334
+msgid "Can view room timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:336 aleksis/apps/chronos/models.py:397
+#: aleksis/apps/chronos/models.py:453 aleksis/apps/chronos/models.py:638
+#: aleksis/apps/chronos/models.py:1043
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:47
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30
 msgid "Room"
 msgstr "Salle"
 
-#: models.py:322 models.py:874 templates/chronos/all.html:39
+#: aleksis/apps/chronos/models.py:337 aleksis/apps/chronos/models.py:927
+#: aleksis/apps/chronos/templates/chronos/all.html:39
 msgid "Rooms"
 msgstr ""
 
-#: models.py:330 models.py:376 models.py:876 models.py:929 tables.py:35
-#: templates/chronos/all.html:17 templates/chronos/substitutions_print.html:28
+#: aleksis/apps/chronos/models.py:345 aleksis/apps/chronos/models.py:395
+#: aleksis/apps/chronos/models.py:929 aleksis/apps/chronos/models.py:1040
+#: aleksis/apps/chronos/tables.py:35
+#: aleksis/apps/chronos/templates/chronos/all.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28
 msgid "Teachers"
 msgstr "Profs"
 
-#: models.py:333
+#: aleksis/apps/chronos/models.py:348
 msgid "Periods"
 msgstr ""
 
-#: models.py:335 models.py:873 models.py:926 tables.py:34
-#: templates/chronos/all.html:28
+#: aleksis/apps/chronos/models.py:350 aleksis/apps/chronos/models.py:926
+#: aleksis/apps/chronos/models.py:1037 aleksis/apps/chronos/tables.py:34
+#: aleksis/apps/chronos/templates/chronos/all.html:28
 msgid "Groups"
 msgstr ""
 
-#: models.py:353 models.py:423 models.py:630
+#: aleksis/apps/chronos/models.py:372 aleksis/apps/chronos/models.py:446
+#: aleksis/apps/chronos/models.py:678
 msgid "Lesson"
 msgstr "Cours"
 
-#: models.py:354 templates/chronos/lessons_day.html:9
-#: templates/chronos/lessons_day.html:19
+#: aleksis/apps/chronos/models.py:373
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19
 msgid "Lessons"
 msgstr ""
 
-#: models.py:360 models.py:913
+#: aleksis/apps/chronos/models.py:379 aleksis/apps/chronos/models.py:1024
 msgid "Week"
 msgstr ""
 
-#: models.py:361 models.py:914
+#: aleksis/apps/chronos/models.py:380 aleksis/apps/chronos/models.py:1025
 msgid "Year"
 msgstr ""
 
-#: models.py:364 models.py:497
+#: aleksis/apps/chronos/models.py:383 aleksis/apps/chronos/models.py:546
 msgid "Lesson period"
 msgstr ""
 
-#: models.py:380
+#: aleksis/apps/chronos/models.py:399
 msgid "Cancelled?"
 msgstr ""
 
-#: models.py:382
+#: aleksis/apps/chronos/models.py:401
 msgid "Cancelled for teachers?"
 msgstr ""
 
-#: models.py:385 models.py:609 models.py:650 models.py:935
+#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:657
+#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:1046
 msgid "Comment"
 msgstr ""
 
-#: models.py:389
+#: aleksis/apps/chronos/models.py:408
 msgid "Lessons can only be either substituted or cancelled."
 msgstr ""
 
-#: models.py:413
+#: aleksis/apps/chronos/models.py:436
 msgid "Lesson substitution"
 msgstr ""
 
-#: models.py:414
+#: aleksis/apps/chronos/models.py:437
 msgid "Lesson substitutions"
 msgstr ""
 
-#: models.py:498
+#: aleksis/apps/chronos/models.py:547
 msgid "Lesson periods"
 msgstr ""
 
-#: models.py:537
+#: aleksis/apps/chronos/models.py:585
 msgid "Timetable widget"
 msgstr ""
 
-#: models.py:538
+#: aleksis/apps/chronos/models.py:586
 msgid "Timetable widgets"
 msgstr ""
 
-#: models.py:552 models.py:565
+#: aleksis/apps/chronos/models.py:600 aleksis/apps/chronos/models.py:613
 msgid "Absence reason"
 msgstr ""
 
-#: models.py:553
+#: aleksis/apps/chronos/models.py:601
 msgid "Absence reasons"
 msgstr ""
 
-#: models.py:574 models.py:791 models.py:837
-#: templates/chronos/substitutions.html:45
+#: aleksis/apps/chronos/models.py:622 aleksis/apps/chronos/models.py:844
+#: aleksis/apps/chronos/models.py:890
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:45
 msgid "Teacher"
 msgstr "Profs"
 
-#: models.py:582
+#: aleksis/apps/chronos/models.py:630
 msgid "Group"
 msgstr ""
 
-#: models.py:598 models.py:637
+#: aleksis/apps/chronos/models.py:646 aleksis/apps/chronos/models.py:685
 msgid "Start period"
 msgstr ""
 
-#: models.py:605 models.py:644
+#: aleksis/apps/chronos/models.py:653 aleksis/apps/chronos/models.py:692
 msgid "End period"
 msgstr ""
 
-#: models.py:619
+#: aleksis/apps/chronos/models.py:667
 msgid "Unknown absence"
 msgstr ""
 
-#: models.py:624
+#: aleksis/apps/chronos/models.py:672
 msgid "Absence"
 msgstr ""
 
-#: models.py:625
+#: aleksis/apps/chronos/models.py:673
 msgid "Absences"
 msgstr "Absences"
 
-#: models.py:633
+#: aleksis/apps/chronos/models.py:681
 msgid "Date of exam"
 msgstr ""
 
-#: models.py:649 models.py:662 models.py:858
+#: aleksis/apps/chronos/models.py:697 aleksis/apps/chronos/models.py:710
+#: aleksis/apps/chronos/models.py:911
 msgid "Title"
 msgstr ""
 
-#: models.py:655
+#: aleksis/apps/chronos/models.py:703
 msgid "Exam"
 msgstr ""
 
-#: models.py:656
+#: aleksis/apps/chronos/models.py:704
 msgid "Exams"
 msgstr ""
 
-#: models.py:665
+#: aleksis/apps/chronos/models.py:713
 msgid "Comments"
 msgstr ""
 
-#: models.py:698
+#: aleksis/apps/chronos/models.py:751
 msgid "Holiday"
 msgstr ""
 
-#: models.py:699
+#: aleksis/apps/chronos/models.py:752
 msgid "Holidays"
 msgstr ""
 
-#: models.py:713 models.py:784
+#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:837
 msgid "Supervision area"
 msgstr ""
 
-#: models.py:714
+#: aleksis/apps/chronos/models.py:767
 msgid "Supervision areas"
 msgstr ""
 
-#: models.py:726
+#: aleksis/apps/chronos/models.py:779
 msgid "Time period after break starts"
 msgstr ""
 
-#: models.py:734
+#: aleksis/apps/chronos/models.py:787
 msgid "Time period before break ends"
 msgstr ""
 
-#: models.py:774 models.py:788
+#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:841
 msgid "Break"
 msgstr ""
 
-#: models.py:775
+#: aleksis/apps/chronos/models.py:828
 msgid "Breaks"
 msgstr ""
 
-#: models.py:822 models.py:831 templates/chronos/partials/subs/subject.html:23
-#: templates/chronos/partials/supervision.html:15
+#: aleksis/apps/chronos/models.py:875 aleksis/apps/chronos/models.py:884
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23
+#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15
 msgid "Supervision"
 msgstr ""
 
-#: models.py:823
+#: aleksis/apps/chronos/models.py:876
 msgid "Supervisions"
 msgstr ""
 
-#: models.py:829
+#: aleksis/apps/chronos/models.py:882
 msgid "Date"
 msgstr "Date"
 
-#: models.py:849
+#: aleksis/apps/chronos/models.py:902
 msgid "Supervision substitution"
 msgstr ""
 
-#: models.py:850
+#: aleksis/apps/chronos/models.py:903
 msgid "Supervision substitutions"
 msgstr ""
 
-#: models.py:866
+#: aleksis/apps/chronos/models.py:919
 msgid "Start time period"
 msgstr ""
 
-#: models.py:870
+#: aleksis/apps/chronos/models.py:923
 msgid "End time period"
 msgstr ""
 
-#: models.py:883
+#: aleksis/apps/chronos/models.py:936
 #, python-brace-format
 msgid "Event {self.pk}"
 msgstr ""
 
-#: models.py:904 templates/chronos/partials/subs/subject.html:27
+#: aleksis/apps/chronos/models.py:1013
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27
 msgid "Event"
 msgstr ""
 
-#: models.py:905
+#: aleksis/apps/chronos/models.py:1014
 msgid "Events"
 msgstr ""
 
-#: models.py:941
+#: aleksis/apps/chronos/models.py:1064
 msgid "Extra lesson"
 msgstr ""
 
-#: models.py:942
+#: aleksis/apps/chronos/models.py:1065
 msgid "Extra lessons"
 msgstr ""
 
-#: models.py:949
-msgid "Can view all timetables"
+#: aleksis/apps/chronos/models.py:1073
+msgid "Can view all room timetables"
 msgstr ""
 
-#: models.py:950
+#: aleksis/apps/chronos/models.py:1074
+msgid "Can view all group timetables"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:1075
+msgid "Can view all person timetables"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:1076
 msgid "Can view timetable overview"
 msgstr ""
 
-#: models.py:951
+#: aleksis/apps/chronos/models.py:1077
 msgid "Can view all lessons per day"
 msgstr ""
 
-#: preferences.py:8
+#: aleksis/apps/chronos/preferences.py:8
 msgid "Chronos"
 msgstr ""
 
-#: preferences.py:16
+#: aleksis/apps/chronos/preferences.py:16
 msgid "Use parent groups in timetable views"
 msgstr ""
 
-#: preferences.py:18
+#: aleksis/apps/chronos/preferences.py:18
 msgid "If an lesson or substitution has only one group and this group has parent groups, show the parent groups instead of the original group."
 msgstr ""
 
-#: preferences.py:29
+#: aleksis/apps/chronos/preferences.py:29
 msgid "Shorten groups in timetable views"
 msgstr ""
 
-#: preferences.py:30
+#: aleksis/apps/chronos/preferences.py:30
 msgid "If there are more groups than the set limit, they will be collapsed."
 msgstr ""
 
-#: preferences.py:38
+#: aleksis/apps/chronos/preferences.py:38
 msgid "Limit of groups for shortening of groups"
 msgstr ""
 
-#: preferences.py:40
+#: aleksis/apps/chronos/preferences.py:40
 msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit."
 msgstr ""
 
-#: preferences.py:50
+#: aleksis/apps/chronos/preferences.py:50
 msgid "Number of days shown on substitutions print view"
 msgstr ""
 
-#: preferences.py:58
+#: aleksis/apps/chronos/preferences.py:58
 msgid "Show header box in substitution views"
 msgstr ""
 
-#: preferences.py:59
+#: aleksis/apps/chronos/preferences.py:59
 msgid "The header box shows affected teachers/groups."
 msgstr ""
 
-#: preferences.py:68
+#: aleksis/apps/chronos/preferences.py:68
 msgid "Show parent groups in header box in substitution views instead of original groups"
 msgstr ""
 
-#: tables.py:41
+#: aleksis/apps/chronos/tables.py:41
 msgid "Substitution"
 msgstr ""
 
-#: tables.py:43
+#: aleksis/apps/chronos/tables.py:43
 msgid "Manage substitution"
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:6
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:6
 msgid "Edit substitution."
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:7
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:7
 msgid "Edit substitution"
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:20
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:20
 msgid "Delete"
 msgstr ""
 
-#: templates/chronos/my_timetable.html:19 templates/chronos/timetable.html:50
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19
+#: aleksis/apps/chronos/templates/chronos/timetable.html:49
 msgid "SMART PLAN"
 msgstr ""
 
-#: templates/chronos/my_timetable.html:22
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22
 msgid "Show week timetable for"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:10
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10
 msgid "Absent teachers"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:22
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22
 msgid "Absent groups"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:34
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34
 msgid "Affected teachers"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:46
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46
 msgid "Affected groups"
 msgstr ""
 
-#: templates/chronos/partials/subs/badge.html:4
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4
 msgid "Cancelled"
 msgstr ""
 
-#: templates/chronos/partials/subs/badge.html:6
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6
 msgid "Cancelled for teachers"
 msgstr ""
 
-#: templates/chronos/partials/week_select.html:14
-#: templates/chronos/partials/week_select.html:25
-#: templates/chronos/partials/week_select.html:36
+#: aleksis/apps/chronos/templates/chronos/partials/today.html:2
+msgid "Today"
+msgstr ""
+
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36
 msgid "CW"
 msgstr ""
 
-#: templates/chronos/substitutions.html:48
-#: templates/chronos/substitutions_print.html:31
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:48
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31
 msgid "Notes"
 msgstr "Notes"
 
-#: templates/chronos/substitutions.html:56
-#: templates/chronos/substitutions_print.html:41
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:56
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41
 msgid "No substitutions available."
 msgstr ""
 
-#: templates/chronos/substitutions_print.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11
 msgid "Print: Substitutions"
 msgstr ""
 
-#: templates/chronos/timetable.html:11 templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11
 msgid "Timetable"
 msgstr ""
 
-#: templates/chronos/timetable.html:28
+#: aleksis/apps/chronos/templates/chronos/timetable.html:28
 msgid "Group teachers:"
 msgstr ""
 
-#: templates/chronos/timetable.html:55
+#: aleksis/apps/chronos/templates/chronos/timetable.html:54
 msgid "Show regular timetable"
 msgstr ""
 
-#: templates/chronos/timetable.html:67
+#: aleksis/apps/chronos/templates/chronos/timetable.html:66
 msgid "Show SMART PLAN"
 msgstr ""
 
-#: templates/chronos/widget.html:8
+#: aleksis/apps/chronos/templates/chronos/widget.html:8
 #, python-format
 msgid ""
 "\n"
@@ -514,21 +566,21 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/chronos/widget.html:19
+#: aleksis/apps/chronos/templates/chronos/widget.html:19
 msgid ""
 "\n"
 "              There is no timetable linked to your person.\n"
 "            "
 msgstr ""
 
-#: templates/chronos/widget.html:29
+#: aleksis/apps/chronos/templates/chronos/widget.html:29
 msgid "Go to smart plan"
 msgstr ""
 
-#: views.py:243
+#: aleksis/apps/chronos/views.py:264
 msgid "The substitution has been saved."
 msgstr ""
 
-#: views.py:264
+#: aleksis/apps/chronos/views.py:285
 msgid "The substitution has been deleted."
 msgstr ""
diff --git a/aleksis/apps/chronos/locale/la/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/la/LC_MESSAGES/django.po
index 5166f132e40c7d277883ccaca440e7f3a441f070..0e49cd219957525a22ff74510c1952786aacb57c 100644
--- a/aleksis/apps/chronos/locale/la/LC_MESSAGES/django.po
+++ b/aleksis/apps/chronos/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: 2020-12-05 21:26+0100\n"
+"POT-Creation-Date: 2021-05-20 21:05+0200\n"
 "PO-Revision-Date: 2020-08-23 13:49+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
 "Language-Team: Latin <https://translate.edugit.org/projects/aleksis/aleksis-app-chronos/la/>\n"
@@ -18,493 +18,545 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 4.1.1\n"
 
-#: forms.py:29
+#: aleksis/apps/chronos/forms.py:29
 msgid "Options for timetables"
 msgstr ""
 
-#: menus.py:6
+#: aleksis/apps/chronos/menus.py:6
 msgid "Timetables"
 msgstr ""
 
-#: menus.py:16 templates/chronos/my_timetable.html:11
-#: templates/chronos/my_timetable.html:18
+#: aleksis/apps/chronos/menus.py:16
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18
 msgid "My timetable"
 msgstr ""
 
-#: menus.py:27 templates/chronos/all.html:11 templates/chronos/all.html:12
+#: aleksis/apps/chronos/menus.py:27
+#: aleksis/apps/chronos/templates/chronos/all.html:11
+#: aleksis/apps/chronos/templates/chronos/all.html:12
 msgid "All timetables"
 msgstr ""
 
-#: menus.py:38
+#: aleksis/apps/chronos/menus.py:38
 msgid "Daily lessons"
 msgstr ""
 
-#: menus.py:49 templates/chronos/substitutions.html:11
-#: templates/chronos/substitutions.html:17
-#: templates/chronos/substitutions_print.html:12
-#: templates/chronos/substitutions_print.html:17
+#: aleksis/apps/chronos/menus.py:49
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:17
 msgid "Substitutions"
 msgstr ""
 
-#: mixins.py:25
+#: aleksis/apps/chronos/mixins.py:25
 msgid "Linked validity range"
 msgstr ""
 
-#: model_extensions.py:123
+#: aleksis/apps/chronos/model_extensions.py:133
 msgid "Show announcement in timetable views?"
 msgstr ""
 
-#: models.py:68
+#: aleksis/apps/chronos/model_extensions.py:141
+msgid "Can view group timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/model_extensions.py:144
+msgid "Can view person timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:71
 msgid "School term"
 msgstr ""
 
-#: models.py:71 models.py:543
+#: aleksis/apps/chronos/models.py:74 aleksis/apps/chronos/models.py:591
 msgid "Name"
 msgstr ""
 
-#: models.py:73 models.py:593 models.py:663 models.py:860
+#: aleksis/apps/chronos/models.py:76 aleksis/apps/chronos/models.py:641
+#: aleksis/apps/chronos/models.py:711 aleksis/apps/chronos/models.py:913
 msgid "Start date"
 msgstr ""
 
-#: models.py:74 models.py:594 models.py:664 models.py:861
+#: aleksis/apps/chronos/models.py:77 aleksis/apps/chronos/models.py:642
+#: aleksis/apps/chronos/models.py:712 aleksis/apps/chronos/models.py:914
 msgid "End date"
 msgstr ""
 
-#: models.py:93
+#: aleksis/apps/chronos/models.py:96
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: models.py:100
+#: aleksis/apps/chronos/models.py:103
 msgid "The validity range must be within the school term."
 msgstr ""
 
-#: models.py:107
+#: aleksis/apps/chronos/models.py:110
 msgid "There is already a validity range for this time or a part of this time."
 msgstr ""
 
-#: models.py:114
+#: aleksis/apps/chronos/models.py:117
 msgid "Validity range"
 msgstr ""
 
-#: models.py:115
+#: aleksis/apps/chronos/models.py:118
 msgid "Validity ranges"
 msgstr ""
 
-#: models.py:124
+#: aleksis/apps/chronos/models.py:130
 msgid "Week day"
 msgstr ""
 
-#: models.py:126
+#: aleksis/apps/chronos/models.py:132
 msgid "Number of period"
 msgstr ""
 
-#: models.py:128
+#: aleksis/apps/chronos/models.py:134
 msgid "Start time"
 msgstr ""
 
-#: models.py:129
+#: aleksis/apps/chronos/models.py:135
 msgid "End time"
 msgstr ""
 
-#: models.py:289 models.py:426 models.py:916
+#: aleksis/apps/chronos/models.py:303 aleksis/apps/chronos/models.py:449
+#: aleksis/apps/chronos/models.py:1027
 msgid "Time period"
 msgstr ""
 
-#: models.py:290
+#: aleksis/apps/chronos/models.py:304
 msgid "Time periods"
 msgstr ""
 
-#: models.py:294 models.py:310 models.py:542 models.py:703 models.py:720
+#: aleksis/apps/chronos/models.py:308 aleksis/apps/chronos/models.py:324
+#: aleksis/apps/chronos/models.py:590 aleksis/apps/chronos/models.py:756
+#: aleksis/apps/chronos/models.py:773
 msgid "Short name"
 msgstr ""
 
-#: models.py:295 models.py:311 models.py:704 models.py:721
+#: aleksis/apps/chronos/models.py:309 aleksis/apps/chronos/models.py:325
+#: aleksis/apps/chronos/models.py:757 aleksis/apps/chronos/models.py:774
 msgid "Long name"
 msgstr ""
 
-#: models.py:297
+#: aleksis/apps/chronos/models.py:311
 msgid "Foreground colour"
 msgstr ""
 
-#: models.py:298
+#: aleksis/apps/chronos/models.py:312
 msgid "Background colour"
 msgstr ""
 
-#: models.py:305 models.py:327 models.py:373 models.py:923
-#: templates/chronos/substitutions.html:46
-#: templates/chronos/substitutions_print.html:29
+#: aleksis/apps/chronos/models.py:319 aleksis/apps/chronos/models.py:342
+#: aleksis/apps/chronos/models.py:392 aleksis/apps/chronos/models.py:1034
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:46
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29
 msgid "Subject"
 msgstr ""
 
-#: models.py:306
+#: aleksis/apps/chronos/models.py:320
 msgid "Subjects"
 msgstr ""
 
-#: models.py:321 models.py:378 models.py:430 models.py:590 models.py:932
-#: templates/chronos/substitutions.html:47
-#: templates/chronos/substitutions_print.html:30
+#: aleksis/apps/chronos/models.py:334
+msgid "Can view room timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:336 aleksis/apps/chronos/models.py:397
+#: aleksis/apps/chronos/models.py:453 aleksis/apps/chronos/models.py:638
+#: aleksis/apps/chronos/models.py:1043
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:47
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30
 msgid "Room"
 msgstr ""
 
-#: models.py:322 models.py:874 templates/chronos/all.html:39
+#: aleksis/apps/chronos/models.py:337 aleksis/apps/chronos/models.py:927
+#: aleksis/apps/chronos/templates/chronos/all.html:39
 msgid "Rooms"
 msgstr ""
 
-#: models.py:330 models.py:376 models.py:876 models.py:929 tables.py:35
-#: templates/chronos/all.html:17 templates/chronos/substitutions_print.html:28
+#: aleksis/apps/chronos/models.py:345 aleksis/apps/chronos/models.py:395
+#: aleksis/apps/chronos/models.py:929 aleksis/apps/chronos/models.py:1040
+#: aleksis/apps/chronos/tables.py:35
+#: aleksis/apps/chronos/templates/chronos/all.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28
 msgid "Teachers"
 msgstr ""
 
-#: models.py:333
+#: aleksis/apps/chronos/models.py:348
 msgid "Periods"
 msgstr ""
 
-#: models.py:335 models.py:873 models.py:926 tables.py:34
-#: templates/chronos/all.html:28
+#: aleksis/apps/chronos/models.py:350 aleksis/apps/chronos/models.py:926
+#: aleksis/apps/chronos/models.py:1037 aleksis/apps/chronos/tables.py:34
+#: aleksis/apps/chronos/templates/chronos/all.html:28
 msgid "Groups"
 msgstr ""
 
-#: models.py:353 models.py:423 models.py:630
+#: aleksis/apps/chronos/models.py:372 aleksis/apps/chronos/models.py:446
+#: aleksis/apps/chronos/models.py:678
 msgid "Lesson"
 msgstr ""
 
-#: models.py:354 templates/chronos/lessons_day.html:9
-#: templates/chronos/lessons_day.html:19
+#: aleksis/apps/chronos/models.py:373
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19
 msgid "Lessons"
 msgstr ""
 
-#: models.py:360 models.py:913
+#: aleksis/apps/chronos/models.py:379 aleksis/apps/chronos/models.py:1024
 msgid "Week"
 msgstr ""
 
-#: models.py:361 models.py:914
+#: aleksis/apps/chronos/models.py:380 aleksis/apps/chronos/models.py:1025
 msgid "Year"
 msgstr ""
 
-#: models.py:364 models.py:497
+#: aleksis/apps/chronos/models.py:383 aleksis/apps/chronos/models.py:546
 msgid "Lesson period"
 msgstr ""
 
-#: models.py:380
+#: aleksis/apps/chronos/models.py:399
 msgid "Cancelled?"
 msgstr ""
 
-#: models.py:382
+#: aleksis/apps/chronos/models.py:401
 msgid "Cancelled for teachers?"
 msgstr ""
 
-#: models.py:385 models.py:609 models.py:650 models.py:935
+#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:657
+#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:1046
 msgid "Comment"
 msgstr ""
 
-#: models.py:389
+#: aleksis/apps/chronos/models.py:408
 msgid "Lessons can only be either substituted or cancelled."
 msgstr ""
 
-#: models.py:413
+#: aleksis/apps/chronos/models.py:436
 msgid "Lesson substitution"
 msgstr ""
 
-#: models.py:414
+#: aleksis/apps/chronos/models.py:437
 msgid "Lesson substitutions"
 msgstr ""
 
-#: models.py:498
+#: aleksis/apps/chronos/models.py:547
 msgid "Lesson periods"
 msgstr ""
 
-#: models.py:537
+#: aleksis/apps/chronos/models.py:585
 msgid "Timetable widget"
 msgstr ""
 
-#: models.py:538
+#: aleksis/apps/chronos/models.py:586
 msgid "Timetable widgets"
 msgstr ""
 
-#: models.py:552 models.py:565
+#: aleksis/apps/chronos/models.py:600 aleksis/apps/chronos/models.py:613
 msgid "Absence reason"
 msgstr ""
 
-#: models.py:553
+#: aleksis/apps/chronos/models.py:601
 msgid "Absence reasons"
 msgstr ""
 
-#: models.py:574 models.py:791 models.py:837
-#: templates/chronos/substitutions.html:45
+#: aleksis/apps/chronos/models.py:622 aleksis/apps/chronos/models.py:844
+#: aleksis/apps/chronos/models.py:890
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:45
 msgid "Teacher"
 msgstr ""
 
-#: models.py:582
+#: aleksis/apps/chronos/models.py:630
 msgid "Group"
 msgstr "Grex"
 
-#: models.py:598 models.py:637
+#: aleksis/apps/chronos/models.py:646 aleksis/apps/chronos/models.py:685
 msgid "Start period"
 msgstr ""
 
-#: models.py:605 models.py:644
+#: aleksis/apps/chronos/models.py:653 aleksis/apps/chronos/models.py:692
 msgid "End period"
 msgstr ""
 
-#: models.py:619
+#: aleksis/apps/chronos/models.py:667
 msgid "Unknown absence"
 msgstr ""
 
-#: models.py:624
+#: aleksis/apps/chronos/models.py:672
 msgid "Absence"
 msgstr ""
 
-#: models.py:625
+#: aleksis/apps/chronos/models.py:673
 msgid "Absences"
 msgstr ""
 
-#: models.py:633
+#: aleksis/apps/chronos/models.py:681
 msgid "Date of exam"
 msgstr ""
 
-#: models.py:649 models.py:662 models.py:858
+#: aleksis/apps/chronos/models.py:697 aleksis/apps/chronos/models.py:710
+#: aleksis/apps/chronos/models.py:911
 msgid "Title"
 msgstr ""
 
-#: models.py:655
+#: aleksis/apps/chronos/models.py:703
 msgid "Exam"
 msgstr ""
 
-#: models.py:656
+#: aleksis/apps/chronos/models.py:704
 msgid "Exams"
 msgstr ""
 
-#: models.py:665
+#: aleksis/apps/chronos/models.py:713
 msgid "Comments"
 msgstr ""
 
-#: models.py:698
+#: aleksis/apps/chronos/models.py:751
 msgid "Holiday"
 msgstr ""
 
-#: models.py:699
+#: aleksis/apps/chronos/models.py:752
 msgid "Holidays"
 msgstr ""
 
-#: models.py:713 models.py:784
+#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:837
 msgid "Supervision area"
 msgstr ""
 
-#: models.py:714
+#: aleksis/apps/chronos/models.py:767
 msgid "Supervision areas"
 msgstr ""
 
-#: models.py:726
+#: aleksis/apps/chronos/models.py:779
 msgid "Time period after break starts"
 msgstr ""
 
-#: models.py:734
+#: aleksis/apps/chronos/models.py:787
 msgid "Time period before break ends"
 msgstr ""
 
-#: models.py:774 models.py:788
+#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:841
 msgid "Break"
 msgstr ""
 
-#: models.py:775
+#: aleksis/apps/chronos/models.py:828
 msgid "Breaks"
 msgstr ""
 
-#: models.py:822 models.py:831 templates/chronos/partials/subs/subject.html:23
-#: templates/chronos/partials/supervision.html:15
+#: aleksis/apps/chronos/models.py:875 aleksis/apps/chronos/models.py:884
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23
+#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15
 msgid "Supervision"
 msgstr ""
 
-#: models.py:823
+#: aleksis/apps/chronos/models.py:876
 msgid "Supervisions"
 msgstr ""
 
-#: models.py:829
+#: aleksis/apps/chronos/models.py:882
 msgid "Date"
 msgstr ""
 
-#: models.py:849
+#: aleksis/apps/chronos/models.py:902
 msgid "Supervision substitution"
 msgstr ""
 
-#: models.py:850
+#: aleksis/apps/chronos/models.py:903
 msgid "Supervision substitutions"
 msgstr ""
 
-#: models.py:866
+#: aleksis/apps/chronos/models.py:919
 msgid "Start time period"
 msgstr ""
 
-#: models.py:870
+#: aleksis/apps/chronos/models.py:923
 msgid "End time period"
 msgstr ""
 
-#: models.py:883
+#: aleksis/apps/chronos/models.py:936
 #, python-brace-format
 msgid "Event {self.pk}"
 msgstr ""
 
-#: models.py:904 templates/chronos/partials/subs/subject.html:27
+#: aleksis/apps/chronos/models.py:1013
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27
 msgid "Event"
 msgstr ""
 
-#: models.py:905
+#: aleksis/apps/chronos/models.py:1014
 msgid "Events"
 msgstr ""
 
-#: models.py:941
+#: aleksis/apps/chronos/models.py:1064
 msgid "Extra lesson"
 msgstr ""
 
-#: models.py:942
+#: aleksis/apps/chronos/models.py:1065
 msgid "Extra lessons"
 msgstr ""
 
-#: models.py:949
-msgid "Can view all timetables"
+#: aleksis/apps/chronos/models.py:1073
+msgid "Can view all room timetables"
 msgstr ""
 
-#: models.py:950
+#: aleksis/apps/chronos/models.py:1074
+msgid "Can view all group timetables"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:1075
+msgid "Can view all person timetables"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:1076
 msgid "Can view timetable overview"
 msgstr ""
 
-#: models.py:951
+#: aleksis/apps/chronos/models.py:1077
 msgid "Can view all lessons per day"
 msgstr ""
 
-#: preferences.py:8
+#: aleksis/apps/chronos/preferences.py:8
 msgid "Chronos"
 msgstr ""
 
-#: preferences.py:16
+#: aleksis/apps/chronos/preferences.py:16
 msgid "Use parent groups in timetable views"
 msgstr ""
 
-#: preferences.py:18
+#: aleksis/apps/chronos/preferences.py:18
 msgid "If an lesson or substitution has only one group and this group has parent groups, show the parent groups instead of the original group."
 msgstr ""
 
-#: preferences.py:29
+#: aleksis/apps/chronos/preferences.py:29
 msgid "Shorten groups in timetable views"
 msgstr ""
 
-#: preferences.py:30
+#: aleksis/apps/chronos/preferences.py:30
 msgid "If there are more groups than the set limit, they will be collapsed."
 msgstr ""
 
-#: preferences.py:38
+#: aleksis/apps/chronos/preferences.py:38
 msgid "Limit of groups for shortening of groups"
 msgstr ""
 
-#: preferences.py:40
+#: aleksis/apps/chronos/preferences.py:40
 msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit."
 msgstr ""
 
-#: preferences.py:50
+#: aleksis/apps/chronos/preferences.py:50
 msgid "Number of days shown on substitutions print view"
 msgstr ""
 
-#: preferences.py:58
+#: aleksis/apps/chronos/preferences.py:58
 msgid "Show header box in substitution views"
 msgstr ""
 
-#: preferences.py:59
+#: aleksis/apps/chronos/preferences.py:59
 msgid "The header box shows affected teachers/groups."
 msgstr ""
 
-#: preferences.py:68
+#: aleksis/apps/chronos/preferences.py:68
 msgid "Show parent groups in header box in substitution views instead of original groups"
 msgstr ""
 
-#: tables.py:41
+#: aleksis/apps/chronos/tables.py:41
 msgid "Substitution"
 msgstr ""
 
-#: tables.py:43
+#: aleksis/apps/chronos/tables.py:43
 msgid "Manage substitution"
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:6
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:6
 msgid "Edit substitution."
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:7
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:7
 msgid "Edit substitution"
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:20
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:20
 msgid "Delete"
 msgstr ""
 
-#: templates/chronos/my_timetable.html:19 templates/chronos/timetable.html:50
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19
+#: aleksis/apps/chronos/templates/chronos/timetable.html:49
 msgid "SMART PLAN"
 msgstr ""
 
-#: templates/chronos/my_timetable.html:22
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22
 msgid "Show week timetable for"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:10
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10
 msgid "Absent teachers"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:22
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22
 msgid "Absent groups"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:34
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34
 msgid "Affected teachers"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:46
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46
 msgid "Affected groups"
 msgstr ""
 
-#: templates/chronos/partials/subs/badge.html:4
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4
 msgid "Cancelled"
 msgstr ""
 
-#: templates/chronos/partials/subs/badge.html:6
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6
 msgid "Cancelled for teachers"
 msgstr ""
 
-#: templates/chronos/partials/week_select.html:14
-#: templates/chronos/partials/week_select.html:25
-#: templates/chronos/partials/week_select.html:36
+#: aleksis/apps/chronos/templates/chronos/partials/today.html:2
+msgid "Today"
+msgstr ""
+
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36
 msgid "CW"
 msgstr ""
 
-#: templates/chronos/substitutions.html:48
-#: templates/chronos/substitutions_print.html:31
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:48
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31
 msgid "Notes"
 msgstr ""
 
-#: templates/chronos/substitutions.html:56
-#: templates/chronos/substitutions_print.html:41
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:56
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41
 msgid "No substitutions available."
 msgstr ""
 
-#: templates/chronos/substitutions_print.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11
 msgid "Print: Substitutions"
 msgstr ""
 
-#: templates/chronos/timetable.html:11 templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11
 msgid "Timetable"
 msgstr ""
 
-#: templates/chronos/timetable.html:28
+#: aleksis/apps/chronos/templates/chronos/timetable.html:28
 msgid "Group teachers:"
 msgstr ""
 
-#: templates/chronos/timetable.html:55
+#: aleksis/apps/chronos/templates/chronos/timetable.html:54
 msgid "Show regular timetable"
 msgstr ""
 
-#: templates/chronos/timetable.html:67
+#: aleksis/apps/chronos/templates/chronos/timetable.html:66
 msgid "Show SMART PLAN"
 msgstr ""
 
-#: templates/chronos/widget.html:8
+#: aleksis/apps/chronos/templates/chronos/widget.html:8
 #, python-format
 msgid ""
 "\n"
@@ -512,21 +564,21 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/chronos/widget.html:19
+#: aleksis/apps/chronos/templates/chronos/widget.html:19
 msgid ""
 "\n"
 "              There is no timetable linked to your person.\n"
 "            "
 msgstr ""
 
-#: templates/chronos/widget.html:29
+#: aleksis/apps/chronos/templates/chronos/widget.html:29
 msgid "Go to smart plan"
 msgstr ""
 
-#: views.py:243
+#: aleksis/apps/chronos/views.py:264
 msgid "The substitution has been saved."
 msgstr ""
 
-#: views.py:264
+#: aleksis/apps/chronos/views.py:285
 msgid "The substitution has been deleted."
 msgstr ""
diff --git a/aleksis/apps/chronos/locale/nb_NO/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/nb_NO/LC_MESSAGES/django.po
index d2ee8f534efc0854e8c0460df8e0604bbea99cb8..3d7d0db5771014fdf728a52f20eaecebceea0886 100644
--- a/aleksis/apps/chronos/locale/nb_NO/LC_MESSAGES/django.po
+++ b/aleksis/apps/chronos/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: 2020-12-05 21:26+0100\n"
+"POT-Creation-Date: 2021-05-20 21:05+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,493 +17,545 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: forms.py:29
+#: aleksis/apps/chronos/forms.py:29
 msgid "Options for timetables"
 msgstr ""
 
-#: menus.py:6
+#: aleksis/apps/chronos/menus.py:6
 msgid "Timetables"
 msgstr ""
 
-#: menus.py:16 templates/chronos/my_timetable.html:11
-#: templates/chronos/my_timetable.html:18
+#: aleksis/apps/chronos/menus.py:16
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18
 msgid "My timetable"
 msgstr ""
 
-#: menus.py:27 templates/chronos/all.html:11 templates/chronos/all.html:12
+#: aleksis/apps/chronos/menus.py:27
+#: aleksis/apps/chronos/templates/chronos/all.html:11
+#: aleksis/apps/chronos/templates/chronos/all.html:12
 msgid "All timetables"
 msgstr ""
 
-#: menus.py:38
+#: aleksis/apps/chronos/menus.py:38
 msgid "Daily lessons"
 msgstr ""
 
-#: menus.py:49 templates/chronos/substitutions.html:11
-#: templates/chronos/substitutions.html:17
-#: templates/chronos/substitutions_print.html:12
-#: templates/chronos/substitutions_print.html:17
+#: aleksis/apps/chronos/menus.py:49
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:17
 msgid "Substitutions"
 msgstr ""
 
-#: mixins.py:25
+#: aleksis/apps/chronos/mixins.py:25
 msgid "Linked validity range"
 msgstr ""
 
-#: model_extensions.py:123
+#: aleksis/apps/chronos/model_extensions.py:133
 msgid "Show announcement in timetable views?"
 msgstr ""
 
-#: models.py:68
+#: aleksis/apps/chronos/model_extensions.py:141
+msgid "Can view group timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/model_extensions.py:144
+msgid "Can view person timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:71
 msgid "School term"
 msgstr ""
 
-#: models.py:71 models.py:543
+#: aleksis/apps/chronos/models.py:74 aleksis/apps/chronos/models.py:591
 msgid "Name"
 msgstr ""
 
-#: models.py:73 models.py:593 models.py:663 models.py:860
+#: aleksis/apps/chronos/models.py:76 aleksis/apps/chronos/models.py:641
+#: aleksis/apps/chronos/models.py:711 aleksis/apps/chronos/models.py:913
 msgid "Start date"
 msgstr ""
 
-#: models.py:74 models.py:594 models.py:664 models.py:861
+#: aleksis/apps/chronos/models.py:77 aleksis/apps/chronos/models.py:642
+#: aleksis/apps/chronos/models.py:712 aleksis/apps/chronos/models.py:914
 msgid "End date"
 msgstr ""
 
-#: models.py:93
+#: aleksis/apps/chronos/models.py:96
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: models.py:100
+#: aleksis/apps/chronos/models.py:103
 msgid "The validity range must be within the school term."
 msgstr ""
 
-#: models.py:107
+#: aleksis/apps/chronos/models.py:110
 msgid "There is already a validity range for this time or a part of this time."
 msgstr ""
 
-#: models.py:114
+#: aleksis/apps/chronos/models.py:117
 msgid "Validity range"
 msgstr ""
 
-#: models.py:115
+#: aleksis/apps/chronos/models.py:118
 msgid "Validity ranges"
 msgstr ""
 
-#: models.py:124
+#: aleksis/apps/chronos/models.py:130
 msgid "Week day"
 msgstr ""
 
-#: models.py:126
+#: aleksis/apps/chronos/models.py:132
 msgid "Number of period"
 msgstr ""
 
-#: models.py:128
+#: aleksis/apps/chronos/models.py:134
 msgid "Start time"
 msgstr ""
 
-#: models.py:129
+#: aleksis/apps/chronos/models.py:135
 msgid "End time"
 msgstr ""
 
-#: models.py:289 models.py:426 models.py:916
+#: aleksis/apps/chronos/models.py:303 aleksis/apps/chronos/models.py:449
+#: aleksis/apps/chronos/models.py:1027
 msgid "Time period"
 msgstr ""
 
-#: models.py:290
+#: aleksis/apps/chronos/models.py:304
 msgid "Time periods"
 msgstr ""
 
-#: models.py:294 models.py:310 models.py:542 models.py:703 models.py:720
+#: aleksis/apps/chronos/models.py:308 aleksis/apps/chronos/models.py:324
+#: aleksis/apps/chronos/models.py:590 aleksis/apps/chronos/models.py:756
+#: aleksis/apps/chronos/models.py:773
 msgid "Short name"
 msgstr ""
 
-#: models.py:295 models.py:311 models.py:704 models.py:721
+#: aleksis/apps/chronos/models.py:309 aleksis/apps/chronos/models.py:325
+#: aleksis/apps/chronos/models.py:757 aleksis/apps/chronos/models.py:774
 msgid "Long name"
 msgstr ""
 
-#: models.py:297
+#: aleksis/apps/chronos/models.py:311
 msgid "Foreground colour"
 msgstr ""
 
-#: models.py:298
+#: aleksis/apps/chronos/models.py:312
 msgid "Background colour"
 msgstr ""
 
-#: models.py:305 models.py:327 models.py:373 models.py:923
-#: templates/chronos/substitutions.html:46
-#: templates/chronos/substitutions_print.html:29
+#: aleksis/apps/chronos/models.py:319 aleksis/apps/chronos/models.py:342
+#: aleksis/apps/chronos/models.py:392 aleksis/apps/chronos/models.py:1034
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:46
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29
 msgid "Subject"
 msgstr ""
 
-#: models.py:306
+#: aleksis/apps/chronos/models.py:320
 msgid "Subjects"
 msgstr ""
 
-#: models.py:321 models.py:378 models.py:430 models.py:590 models.py:932
-#: templates/chronos/substitutions.html:47
-#: templates/chronos/substitutions_print.html:30
+#: aleksis/apps/chronos/models.py:334
+msgid "Can view room timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:336 aleksis/apps/chronos/models.py:397
+#: aleksis/apps/chronos/models.py:453 aleksis/apps/chronos/models.py:638
+#: aleksis/apps/chronos/models.py:1043
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:47
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30
 msgid "Room"
 msgstr ""
 
-#: models.py:322 models.py:874 templates/chronos/all.html:39
+#: aleksis/apps/chronos/models.py:337 aleksis/apps/chronos/models.py:927
+#: aleksis/apps/chronos/templates/chronos/all.html:39
 msgid "Rooms"
 msgstr ""
 
-#: models.py:330 models.py:376 models.py:876 models.py:929 tables.py:35
-#: templates/chronos/all.html:17 templates/chronos/substitutions_print.html:28
+#: aleksis/apps/chronos/models.py:345 aleksis/apps/chronos/models.py:395
+#: aleksis/apps/chronos/models.py:929 aleksis/apps/chronos/models.py:1040
+#: aleksis/apps/chronos/tables.py:35
+#: aleksis/apps/chronos/templates/chronos/all.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28
 msgid "Teachers"
 msgstr ""
 
-#: models.py:333
+#: aleksis/apps/chronos/models.py:348
 msgid "Periods"
 msgstr ""
 
-#: models.py:335 models.py:873 models.py:926 tables.py:34
-#: templates/chronos/all.html:28
+#: aleksis/apps/chronos/models.py:350 aleksis/apps/chronos/models.py:926
+#: aleksis/apps/chronos/models.py:1037 aleksis/apps/chronos/tables.py:34
+#: aleksis/apps/chronos/templates/chronos/all.html:28
 msgid "Groups"
 msgstr ""
 
-#: models.py:353 models.py:423 models.py:630
+#: aleksis/apps/chronos/models.py:372 aleksis/apps/chronos/models.py:446
+#: aleksis/apps/chronos/models.py:678
 msgid "Lesson"
 msgstr ""
 
-#: models.py:354 templates/chronos/lessons_day.html:9
-#: templates/chronos/lessons_day.html:19
+#: aleksis/apps/chronos/models.py:373
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19
 msgid "Lessons"
 msgstr ""
 
-#: models.py:360 models.py:913
+#: aleksis/apps/chronos/models.py:379 aleksis/apps/chronos/models.py:1024
 msgid "Week"
 msgstr ""
 
-#: models.py:361 models.py:914
+#: aleksis/apps/chronos/models.py:380 aleksis/apps/chronos/models.py:1025
 msgid "Year"
 msgstr ""
 
-#: models.py:364 models.py:497
+#: aleksis/apps/chronos/models.py:383 aleksis/apps/chronos/models.py:546
 msgid "Lesson period"
 msgstr ""
 
-#: models.py:380
+#: aleksis/apps/chronos/models.py:399
 msgid "Cancelled?"
 msgstr ""
 
-#: models.py:382
+#: aleksis/apps/chronos/models.py:401
 msgid "Cancelled for teachers?"
 msgstr ""
 
-#: models.py:385 models.py:609 models.py:650 models.py:935
+#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:657
+#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:1046
 msgid "Comment"
 msgstr ""
 
-#: models.py:389
+#: aleksis/apps/chronos/models.py:408
 msgid "Lessons can only be either substituted or cancelled."
 msgstr ""
 
-#: models.py:413
+#: aleksis/apps/chronos/models.py:436
 msgid "Lesson substitution"
 msgstr ""
 
-#: models.py:414
+#: aleksis/apps/chronos/models.py:437
 msgid "Lesson substitutions"
 msgstr ""
 
-#: models.py:498
+#: aleksis/apps/chronos/models.py:547
 msgid "Lesson periods"
 msgstr ""
 
-#: models.py:537
+#: aleksis/apps/chronos/models.py:585
 msgid "Timetable widget"
 msgstr ""
 
-#: models.py:538
+#: aleksis/apps/chronos/models.py:586
 msgid "Timetable widgets"
 msgstr ""
 
-#: models.py:552 models.py:565
+#: aleksis/apps/chronos/models.py:600 aleksis/apps/chronos/models.py:613
 msgid "Absence reason"
 msgstr ""
 
-#: models.py:553
+#: aleksis/apps/chronos/models.py:601
 msgid "Absence reasons"
 msgstr ""
 
-#: models.py:574 models.py:791 models.py:837
-#: templates/chronos/substitutions.html:45
+#: aleksis/apps/chronos/models.py:622 aleksis/apps/chronos/models.py:844
+#: aleksis/apps/chronos/models.py:890
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:45
 msgid "Teacher"
 msgstr ""
 
-#: models.py:582
+#: aleksis/apps/chronos/models.py:630
 msgid "Group"
 msgstr ""
 
-#: models.py:598 models.py:637
+#: aleksis/apps/chronos/models.py:646 aleksis/apps/chronos/models.py:685
 msgid "Start period"
 msgstr ""
 
-#: models.py:605 models.py:644
+#: aleksis/apps/chronos/models.py:653 aleksis/apps/chronos/models.py:692
 msgid "End period"
 msgstr ""
 
-#: models.py:619
+#: aleksis/apps/chronos/models.py:667
 msgid "Unknown absence"
 msgstr ""
 
-#: models.py:624
+#: aleksis/apps/chronos/models.py:672
 msgid "Absence"
 msgstr ""
 
-#: models.py:625
+#: aleksis/apps/chronos/models.py:673
 msgid "Absences"
 msgstr ""
 
-#: models.py:633
+#: aleksis/apps/chronos/models.py:681
 msgid "Date of exam"
 msgstr ""
 
-#: models.py:649 models.py:662 models.py:858
+#: aleksis/apps/chronos/models.py:697 aleksis/apps/chronos/models.py:710
+#: aleksis/apps/chronos/models.py:911
 msgid "Title"
 msgstr ""
 
-#: models.py:655
+#: aleksis/apps/chronos/models.py:703
 msgid "Exam"
 msgstr ""
 
-#: models.py:656
+#: aleksis/apps/chronos/models.py:704
 msgid "Exams"
 msgstr ""
 
-#: models.py:665
+#: aleksis/apps/chronos/models.py:713
 msgid "Comments"
 msgstr ""
 
-#: models.py:698
+#: aleksis/apps/chronos/models.py:751
 msgid "Holiday"
 msgstr ""
 
-#: models.py:699
+#: aleksis/apps/chronos/models.py:752
 msgid "Holidays"
 msgstr ""
 
-#: models.py:713 models.py:784
+#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:837
 msgid "Supervision area"
 msgstr ""
 
-#: models.py:714
+#: aleksis/apps/chronos/models.py:767
 msgid "Supervision areas"
 msgstr ""
 
-#: models.py:726
+#: aleksis/apps/chronos/models.py:779
 msgid "Time period after break starts"
 msgstr ""
 
-#: models.py:734
+#: aleksis/apps/chronos/models.py:787
 msgid "Time period before break ends"
 msgstr ""
 
-#: models.py:774 models.py:788
+#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:841
 msgid "Break"
 msgstr ""
 
-#: models.py:775
+#: aleksis/apps/chronos/models.py:828
 msgid "Breaks"
 msgstr ""
 
-#: models.py:822 models.py:831 templates/chronos/partials/subs/subject.html:23
-#: templates/chronos/partials/supervision.html:15
+#: aleksis/apps/chronos/models.py:875 aleksis/apps/chronos/models.py:884
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23
+#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15
 msgid "Supervision"
 msgstr ""
 
-#: models.py:823
+#: aleksis/apps/chronos/models.py:876
 msgid "Supervisions"
 msgstr ""
 
-#: models.py:829
+#: aleksis/apps/chronos/models.py:882
 msgid "Date"
 msgstr ""
 
-#: models.py:849
+#: aleksis/apps/chronos/models.py:902
 msgid "Supervision substitution"
 msgstr ""
 
-#: models.py:850
+#: aleksis/apps/chronos/models.py:903
 msgid "Supervision substitutions"
 msgstr ""
 
-#: models.py:866
+#: aleksis/apps/chronos/models.py:919
 msgid "Start time period"
 msgstr ""
 
-#: models.py:870
+#: aleksis/apps/chronos/models.py:923
 msgid "End time period"
 msgstr ""
 
-#: models.py:883
+#: aleksis/apps/chronos/models.py:936
 #, python-brace-format
 msgid "Event {self.pk}"
 msgstr ""
 
-#: models.py:904 templates/chronos/partials/subs/subject.html:27
+#: aleksis/apps/chronos/models.py:1013
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27
 msgid "Event"
 msgstr ""
 
-#: models.py:905
+#: aleksis/apps/chronos/models.py:1014
 msgid "Events"
 msgstr ""
 
-#: models.py:941
+#: aleksis/apps/chronos/models.py:1064
 msgid "Extra lesson"
 msgstr ""
 
-#: models.py:942
+#: aleksis/apps/chronos/models.py:1065
 msgid "Extra lessons"
 msgstr ""
 
-#: models.py:949
-msgid "Can view all timetables"
+#: aleksis/apps/chronos/models.py:1073
+msgid "Can view all room timetables"
 msgstr ""
 
-#: models.py:950
+#: aleksis/apps/chronos/models.py:1074
+msgid "Can view all group timetables"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:1075
+msgid "Can view all person timetables"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:1076
 msgid "Can view timetable overview"
 msgstr ""
 
-#: models.py:951
+#: aleksis/apps/chronos/models.py:1077
 msgid "Can view all lessons per day"
 msgstr ""
 
-#: preferences.py:8
+#: aleksis/apps/chronos/preferences.py:8
 msgid "Chronos"
 msgstr ""
 
-#: preferences.py:16
+#: aleksis/apps/chronos/preferences.py:16
 msgid "Use parent groups in timetable views"
 msgstr ""
 
-#: preferences.py:18
+#: aleksis/apps/chronos/preferences.py:18
 msgid "If an lesson or substitution has only one group and this group has parent groups, show the parent groups instead of the original group."
 msgstr ""
 
-#: preferences.py:29
+#: aleksis/apps/chronos/preferences.py:29
 msgid "Shorten groups in timetable views"
 msgstr ""
 
-#: preferences.py:30
+#: aleksis/apps/chronos/preferences.py:30
 msgid "If there are more groups than the set limit, they will be collapsed."
 msgstr ""
 
-#: preferences.py:38
+#: aleksis/apps/chronos/preferences.py:38
 msgid "Limit of groups for shortening of groups"
 msgstr ""
 
-#: preferences.py:40
+#: aleksis/apps/chronos/preferences.py:40
 msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit."
 msgstr ""
 
-#: preferences.py:50
+#: aleksis/apps/chronos/preferences.py:50
 msgid "Number of days shown on substitutions print view"
 msgstr ""
 
-#: preferences.py:58
+#: aleksis/apps/chronos/preferences.py:58
 msgid "Show header box in substitution views"
 msgstr ""
 
-#: preferences.py:59
+#: aleksis/apps/chronos/preferences.py:59
 msgid "The header box shows affected teachers/groups."
 msgstr ""
 
-#: preferences.py:68
+#: aleksis/apps/chronos/preferences.py:68
 msgid "Show parent groups in header box in substitution views instead of original groups"
 msgstr ""
 
-#: tables.py:41
+#: aleksis/apps/chronos/tables.py:41
 msgid "Substitution"
 msgstr ""
 
-#: tables.py:43
+#: aleksis/apps/chronos/tables.py:43
 msgid "Manage substitution"
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:6
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:6
 msgid "Edit substitution."
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:7
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:7
 msgid "Edit substitution"
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:20
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:20
 msgid "Delete"
 msgstr ""
 
-#: templates/chronos/my_timetable.html:19 templates/chronos/timetable.html:50
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19
+#: aleksis/apps/chronos/templates/chronos/timetable.html:49
 msgid "SMART PLAN"
 msgstr ""
 
-#: templates/chronos/my_timetable.html:22
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22
 msgid "Show week timetable for"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:10
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10
 msgid "Absent teachers"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:22
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22
 msgid "Absent groups"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:34
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34
 msgid "Affected teachers"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:46
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46
 msgid "Affected groups"
 msgstr ""
 
-#: templates/chronos/partials/subs/badge.html:4
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4
 msgid "Cancelled"
 msgstr ""
 
-#: templates/chronos/partials/subs/badge.html:6
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6
 msgid "Cancelled for teachers"
 msgstr ""
 
-#: templates/chronos/partials/week_select.html:14
-#: templates/chronos/partials/week_select.html:25
-#: templates/chronos/partials/week_select.html:36
+#: aleksis/apps/chronos/templates/chronos/partials/today.html:2
+msgid "Today"
+msgstr ""
+
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36
 msgid "CW"
 msgstr ""
 
-#: templates/chronos/substitutions.html:48
-#: templates/chronos/substitutions_print.html:31
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:48
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31
 msgid "Notes"
 msgstr ""
 
-#: templates/chronos/substitutions.html:56
-#: templates/chronos/substitutions_print.html:41
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:56
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41
 msgid "No substitutions available."
 msgstr ""
 
-#: templates/chronos/substitutions_print.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11
 msgid "Print: Substitutions"
 msgstr ""
 
-#: templates/chronos/timetable.html:11 templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11
 msgid "Timetable"
 msgstr ""
 
-#: templates/chronos/timetable.html:28
+#: aleksis/apps/chronos/templates/chronos/timetable.html:28
 msgid "Group teachers:"
 msgstr ""
 
-#: templates/chronos/timetable.html:55
+#: aleksis/apps/chronos/templates/chronos/timetable.html:54
 msgid "Show regular timetable"
 msgstr ""
 
-#: templates/chronos/timetable.html:67
+#: aleksis/apps/chronos/templates/chronos/timetable.html:66
 msgid "Show SMART PLAN"
 msgstr ""
 
-#: templates/chronos/widget.html:8
+#: aleksis/apps/chronos/templates/chronos/widget.html:8
 #, python-format
 msgid ""
 "\n"
@@ -511,21 +563,21 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/chronos/widget.html:19
+#: aleksis/apps/chronos/templates/chronos/widget.html:19
 msgid ""
 "\n"
 "              There is no timetable linked to your person.\n"
 "            "
 msgstr ""
 
-#: templates/chronos/widget.html:29
+#: aleksis/apps/chronos/templates/chronos/widget.html:29
 msgid "Go to smart plan"
 msgstr ""
 
-#: views.py:243
+#: aleksis/apps/chronos/views.py:264
 msgid "The substitution has been saved."
 msgstr ""
 
-#: views.py:264
+#: aleksis/apps/chronos/views.py:285
 msgid "The substitution has been deleted."
 msgstr ""
diff --git a/aleksis/apps/chronos/locale/tr_TR/LC_MESSAGES/django.po b/aleksis/apps/chronos/locale/tr_TR/LC_MESSAGES/django.po
index d2ee8f534efc0854e8c0460df8e0604bbea99cb8..3d7d0db5771014fdf728a52f20eaecebceea0886 100644
--- a/aleksis/apps/chronos/locale/tr_TR/LC_MESSAGES/django.po
+++ b/aleksis/apps/chronos/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: 2020-12-05 21:26+0100\n"
+"POT-Creation-Date: 2021-05-20 21:05+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,493 +17,545 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: forms.py:29
+#: aleksis/apps/chronos/forms.py:29
 msgid "Options for timetables"
 msgstr ""
 
-#: menus.py:6
+#: aleksis/apps/chronos/menus.py:6
 msgid "Timetables"
 msgstr ""
 
-#: menus.py:16 templates/chronos/my_timetable.html:11
-#: templates/chronos/my_timetable.html:18
+#: aleksis/apps/chronos/menus.py:16
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:18
 msgid "My timetable"
 msgstr ""
 
-#: menus.py:27 templates/chronos/all.html:11 templates/chronos/all.html:12
+#: aleksis/apps/chronos/menus.py:27
+#: aleksis/apps/chronos/templates/chronos/all.html:11
+#: aleksis/apps/chronos/templates/chronos/all.html:12
 msgid "All timetables"
 msgstr ""
 
-#: menus.py:38
+#: aleksis/apps/chronos/menus.py:38
 msgid "Daily lessons"
 msgstr ""
 
-#: menus.py:49 templates/chronos/substitutions.html:11
-#: templates/chronos/substitutions.html:17
-#: templates/chronos/substitutions_print.html:12
-#: templates/chronos/substitutions_print.html:17
+#: aleksis/apps/chronos/menus.py:49
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:12
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:17
 msgid "Substitutions"
 msgstr ""
 
-#: mixins.py:25
+#: aleksis/apps/chronos/mixins.py:25
 msgid "Linked validity range"
 msgstr ""
 
-#: model_extensions.py:123
+#: aleksis/apps/chronos/model_extensions.py:133
 msgid "Show announcement in timetable views?"
 msgstr ""
 
-#: models.py:68
+#: aleksis/apps/chronos/model_extensions.py:141
+msgid "Can view group timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/model_extensions.py:144
+msgid "Can view person timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:71
 msgid "School term"
 msgstr ""
 
-#: models.py:71 models.py:543
+#: aleksis/apps/chronos/models.py:74 aleksis/apps/chronos/models.py:591
 msgid "Name"
 msgstr ""
 
-#: models.py:73 models.py:593 models.py:663 models.py:860
+#: aleksis/apps/chronos/models.py:76 aleksis/apps/chronos/models.py:641
+#: aleksis/apps/chronos/models.py:711 aleksis/apps/chronos/models.py:913
 msgid "Start date"
 msgstr ""
 
-#: models.py:74 models.py:594 models.py:664 models.py:861
+#: aleksis/apps/chronos/models.py:77 aleksis/apps/chronos/models.py:642
+#: aleksis/apps/chronos/models.py:712 aleksis/apps/chronos/models.py:914
 msgid "End date"
 msgstr ""
 
-#: models.py:93
+#: aleksis/apps/chronos/models.py:96
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: models.py:100
+#: aleksis/apps/chronos/models.py:103
 msgid "The validity range must be within the school term."
 msgstr ""
 
-#: models.py:107
+#: aleksis/apps/chronos/models.py:110
 msgid "There is already a validity range for this time or a part of this time."
 msgstr ""
 
-#: models.py:114
+#: aleksis/apps/chronos/models.py:117
 msgid "Validity range"
 msgstr ""
 
-#: models.py:115
+#: aleksis/apps/chronos/models.py:118
 msgid "Validity ranges"
 msgstr ""
 
-#: models.py:124
+#: aleksis/apps/chronos/models.py:130
 msgid "Week day"
 msgstr ""
 
-#: models.py:126
+#: aleksis/apps/chronos/models.py:132
 msgid "Number of period"
 msgstr ""
 
-#: models.py:128
+#: aleksis/apps/chronos/models.py:134
 msgid "Start time"
 msgstr ""
 
-#: models.py:129
+#: aleksis/apps/chronos/models.py:135
 msgid "End time"
 msgstr ""
 
-#: models.py:289 models.py:426 models.py:916
+#: aleksis/apps/chronos/models.py:303 aleksis/apps/chronos/models.py:449
+#: aleksis/apps/chronos/models.py:1027
 msgid "Time period"
 msgstr ""
 
-#: models.py:290
+#: aleksis/apps/chronos/models.py:304
 msgid "Time periods"
 msgstr ""
 
-#: models.py:294 models.py:310 models.py:542 models.py:703 models.py:720
+#: aleksis/apps/chronos/models.py:308 aleksis/apps/chronos/models.py:324
+#: aleksis/apps/chronos/models.py:590 aleksis/apps/chronos/models.py:756
+#: aleksis/apps/chronos/models.py:773
 msgid "Short name"
 msgstr ""
 
-#: models.py:295 models.py:311 models.py:704 models.py:721
+#: aleksis/apps/chronos/models.py:309 aleksis/apps/chronos/models.py:325
+#: aleksis/apps/chronos/models.py:757 aleksis/apps/chronos/models.py:774
 msgid "Long name"
 msgstr ""
 
-#: models.py:297
+#: aleksis/apps/chronos/models.py:311
 msgid "Foreground colour"
 msgstr ""
 
-#: models.py:298
+#: aleksis/apps/chronos/models.py:312
 msgid "Background colour"
 msgstr ""
 
-#: models.py:305 models.py:327 models.py:373 models.py:923
-#: templates/chronos/substitutions.html:46
-#: templates/chronos/substitutions_print.html:29
+#: aleksis/apps/chronos/models.py:319 aleksis/apps/chronos/models.py:342
+#: aleksis/apps/chronos/models.py:392 aleksis/apps/chronos/models.py:1034
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:46
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:29
 msgid "Subject"
 msgstr ""
 
-#: models.py:306
+#: aleksis/apps/chronos/models.py:320
 msgid "Subjects"
 msgstr ""
 
-#: models.py:321 models.py:378 models.py:430 models.py:590 models.py:932
-#: templates/chronos/substitutions.html:47
-#: templates/chronos/substitutions_print.html:30
+#: aleksis/apps/chronos/models.py:334
+msgid "Can view room timetable"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:336 aleksis/apps/chronos/models.py:397
+#: aleksis/apps/chronos/models.py:453 aleksis/apps/chronos/models.py:638
+#: aleksis/apps/chronos/models.py:1043
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:47
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:30
 msgid "Room"
 msgstr ""
 
-#: models.py:322 models.py:874 templates/chronos/all.html:39
+#: aleksis/apps/chronos/models.py:337 aleksis/apps/chronos/models.py:927
+#: aleksis/apps/chronos/templates/chronos/all.html:39
 msgid "Rooms"
 msgstr ""
 
-#: models.py:330 models.py:376 models.py:876 models.py:929 tables.py:35
-#: templates/chronos/all.html:17 templates/chronos/substitutions_print.html:28
+#: aleksis/apps/chronos/models.py:345 aleksis/apps/chronos/models.py:395
+#: aleksis/apps/chronos/models.py:929 aleksis/apps/chronos/models.py:1040
+#: aleksis/apps/chronos/tables.py:35
+#: aleksis/apps/chronos/templates/chronos/all.html:17
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:28
 msgid "Teachers"
 msgstr ""
 
-#: models.py:333
+#: aleksis/apps/chronos/models.py:348
 msgid "Periods"
 msgstr ""
 
-#: models.py:335 models.py:873 models.py:926 tables.py:34
-#: templates/chronos/all.html:28
+#: aleksis/apps/chronos/models.py:350 aleksis/apps/chronos/models.py:926
+#: aleksis/apps/chronos/models.py:1037 aleksis/apps/chronos/tables.py:34
+#: aleksis/apps/chronos/templates/chronos/all.html:28
 msgid "Groups"
 msgstr ""
 
-#: models.py:353 models.py:423 models.py:630
+#: aleksis/apps/chronos/models.py:372 aleksis/apps/chronos/models.py:446
+#: aleksis/apps/chronos/models.py:678
 msgid "Lesson"
 msgstr ""
 
-#: models.py:354 templates/chronos/lessons_day.html:9
-#: templates/chronos/lessons_day.html:19
+#: aleksis/apps/chronos/models.py:373
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:9
+#: aleksis/apps/chronos/templates/chronos/lessons_day.html:19
 msgid "Lessons"
 msgstr ""
 
-#: models.py:360 models.py:913
+#: aleksis/apps/chronos/models.py:379 aleksis/apps/chronos/models.py:1024
 msgid "Week"
 msgstr ""
 
-#: models.py:361 models.py:914
+#: aleksis/apps/chronos/models.py:380 aleksis/apps/chronos/models.py:1025
 msgid "Year"
 msgstr ""
 
-#: models.py:364 models.py:497
+#: aleksis/apps/chronos/models.py:383 aleksis/apps/chronos/models.py:546
 msgid "Lesson period"
 msgstr ""
 
-#: models.py:380
+#: aleksis/apps/chronos/models.py:399
 msgid "Cancelled?"
 msgstr ""
 
-#: models.py:382
+#: aleksis/apps/chronos/models.py:401
 msgid "Cancelled for teachers?"
 msgstr ""
 
-#: models.py:385 models.py:609 models.py:650 models.py:935
+#: aleksis/apps/chronos/models.py:404 aleksis/apps/chronos/models.py:657
+#: aleksis/apps/chronos/models.py:698 aleksis/apps/chronos/models.py:1046
 msgid "Comment"
 msgstr ""
 
-#: models.py:389
+#: aleksis/apps/chronos/models.py:408
 msgid "Lessons can only be either substituted or cancelled."
 msgstr ""
 
-#: models.py:413
+#: aleksis/apps/chronos/models.py:436
 msgid "Lesson substitution"
 msgstr ""
 
-#: models.py:414
+#: aleksis/apps/chronos/models.py:437
 msgid "Lesson substitutions"
 msgstr ""
 
-#: models.py:498
+#: aleksis/apps/chronos/models.py:547
 msgid "Lesson periods"
 msgstr ""
 
-#: models.py:537
+#: aleksis/apps/chronos/models.py:585
 msgid "Timetable widget"
 msgstr ""
 
-#: models.py:538
+#: aleksis/apps/chronos/models.py:586
 msgid "Timetable widgets"
 msgstr ""
 
-#: models.py:552 models.py:565
+#: aleksis/apps/chronos/models.py:600 aleksis/apps/chronos/models.py:613
 msgid "Absence reason"
 msgstr ""
 
-#: models.py:553
+#: aleksis/apps/chronos/models.py:601
 msgid "Absence reasons"
 msgstr ""
 
-#: models.py:574 models.py:791 models.py:837
-#: templates/chronos/substitutions.html:45
+#: aleksis/apps/chronos/models.py:622 aleksis/apps/chronos/models.py:844
+#: aleksis/apps/chronos/models.py:890
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:45
 msgid "Teacher"
 msgstr ""
 
-#: models.py:582
+#: aleksis/apps/chronos/models.py:630
 msgid "Group"
 msgstr ""
 
-#: models.py:598 models.py:637
+#: aleksis/apps/chronos/models.py:646 aleksis/apps/chronos/models.py:685
 msgid "Start period"
 msgstr ""
 
-#: models.py:605 models.py:644
+#: aleksis/apps/chronos/models.py:653 aleksis/apps/chronos/models.py:692
 msgid "End period"
 msgstr ""
 
-#: models.py:619
+#: aleksis/apps/chronos/models.py:667
 msgid "Unknown absence"
 msgstr ""
 
-#: models.py:624
+#: aleksis/apps/chronos/models.py:672
 msgid "Absence"
 msgstr ""
 
-#: models.py:625
+#: aleksis/apps/chronos/models.py:673
 msgid "Absences"
 msgstr ""
 
-#: models.py:633
+#: aleksis/apps/chronos/models.py:681
 msgid "Date of exam"
 msgstr ""
 
-#: models.py:649 models.py:662 models.py:858
+#: aleksis/apps/chronos/models.py:697 aleksis/apps/chronos/models.py:710
+#: aleksis/apps/chronos/models.py:911
 msgid "Title"
 msgstr ""
 
-#: models.py:655
+#: aleksis/apps/chronos/models.py:703
 msgid "Exam"
 msgstr ""
 
-#: models.py:656
+#: aleksis/apps/chronos/models.py:704
 msgid "Exams"
 msgstr ""
 
-#: models.py:665
+#: aleksis/apps/chronos/models.py:713
 msgid "Comments"
 msgstr ""
 
-#: models.py:698
+#: aleksis/apps/chronos/models.py:751
 msgid "Holiday"
 msgstr ""
 
-#: models.py:699
+#: aleksis/apps/chronos/models.py:752
 msgid "Holidays"
 msgstr ""
 
-#: models.py:713 models.py:784
+#: aleksis/apps/chronos/models.py:766 aleksis/apps/chronos/models.py:837
 msgid "Supervision area"
 msgstr ""
 
-#: models.py:714
+#: aleksis/apps/chronos/models.py:767
 msgid "Supervision areas"
 msgstr ""
 
-#: models.py:726
+#: aleksis/apps/chronos/models.py:779
 msgid "Time period after break starts"
 msgstr ""
 
-#: models.py:734
+#: aleksis/apps/chronos/models.py:787
 msgid "Time period before break ends"
 msgstr ""
 
-#: models.py:774 models.py:788
+#: aleksis/apps/chronos/models.py:827 aleksis/apps/chronos/models.py:841
 msgid "Break"
 msgstr ""
 
-#: models.py:775
+#: aleksis/apps/chronos/models.py:828
 msgid "Breaks"
 msgstr ""
 
-#: models.py:822 models.py:831 templates/chronos/partials/subs/subject.html:23
-#: templates/chronos/partials/supervision.html:15
+#: aleksis/apps/chronos/models.py:875 aleksis/apps/chronos/models.py:884
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:23
+#: aleksis/apps/chronos/templates/chronos/partials/supervision.html:15
 msgid "Supervision"
 msgstr ""
 
-#: models.py:823
+#: aleksis/apps/chronos/models.py:876
 msgid "Supervisions"
 msgstr ""
 
-#: models.py:829
+#: aleksis/apps/chronos/models.py:882
 msgid "Date"
 msgstr ""
 
-#: models.py:849
+#: aleksis/apps/chronos/models.py:902
 msgid "Supervision substitution"
 msgstr ""
 
-#: models.py:850
+#: aleksis/apps/chronos/models.py:903
 msgid "Supervision substitutions"
 msgstr ""
 
-#: models.py:866
+#: aleksis/apps/chronos/models.py:919
 msgid "Start time period"
 msgstr ""
 
-#: models.py:870
+#: aleksis/apps/chronos/models.py:923
 msgid "End time period"
 msgstr ""
 
-#: models.py:883
+#: aleksis/apps/chronos/models.py:936
 #, python-brace-format
 msgid "Event {self.pk}"
 msgstr ""
 
-#: models.py:904 templates/chronos/partials/subs/subject.html:27
+#: aleksis/apps/chronos/models.py:1013
+#: aleksis/apps/chronos/templates/chronos/partials/subs/subject.html:27
 msgid "Event"
 msgstr ""
 
-#: models.py:905
+#: aleksis/apps/chronos/models.py:1014
 msgid "Events"
 msgstr ""
 
-#: models.py:941
+#: aleksis/apps/chronos/models.py:1064
 msgid "Extra lesson"
 msgstr ""
 
-#: models.py:942
+#: aleksis/apps/chronos/models.py:1065
 msgid "Extra lessons"
 msgstr ""
 
-#: models.py:949
-msgid "Can view all timetables"
+#: aleksis/apps/chronos/models.py:1073
+msgid "Can view all room timetables"
 msgstr ""
 
-#: models.py:950
+#: aleksis/apps/chronos/models.py:1074
+msgid "Can view all group timetables"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:1075
+msgid "Can view all person timetables"
+msgstr ""
+
+#: aleksis/apps/chronos/models.py:1076
 msgid "Can view timetable overview"
 msgstr ""
 
-#: models.py:951
+#: aleksis/apps/chronos/models.py:1077
 msgid "Can view all lessons per day"
 msgstr ""
 
-#: preferences.py:8
+#: aleksis/apps/chronos/preferences.py:8
 msgid "Chronos"
 msgstr ""
 
-#: preferences.py:16
+#: aleksis/apps/chronos/preferences.py:16
 msgid "Use parent groups in timetable views"
 msgstr ""
 
-#: preferences.py:18
+#: aleksis/apps/chronos/preferences.py:18
 msgid "If an lesson or substitution has only one group and this group has parent groups, show the parent groups instead of the original group."
 msgstr ""
 
-#: preferences.py:29
+#: aleksis/apps/chronos/preferences.py:29
 msgid "Shorten groups in timetable views"
 msgstr ""
 
-#: preferences.py:30
+#: aleksis/apps/chronos/preferences.py:30
 msgid "If there are more groups than the set limit, they will be collapsed."
 msgstr ""
 
-#: preferences.py:38
+#: aleksis/apps/chronos/preferences.py:38
 msgid "Limit of groups for shortening of groups"
 msgstr ""
 
-#: preferences.py:40
+#: aleksis/apps/chronos/preferences.py:40
 msgid "If an user activates shortening of groups,they will be collapsed if there are more groups than this limit."
 msgstr ""
 
-#: preferences.py:50
+#: aleksis/apps/chronos/preferences.py:50
 msgid "Number of days shown on substitutions print view"
 msgstr ""
 
-#: preferences.py:58
+#: aleksis/apps/chronos/preferences.py:58
 msgid "Show header box in substitution views"
 msgstr ""
 
-#: preferences.py:59
+#: aleksis/apps/chronos/preferences.py:59
 msgid "The header box shows affected teachers/groups."
 msgstr ""
 
-#: preferences.py:68
+#: aleksis/apps/chronos/preferences.py:68
 msgid "Show parent groups in header box in substitution views instead of original groups"
 msgstr ""
 
-#: tables.py:41
+#: aleksis/apps/chronos/tables.py:41
 msgid "Substitution"
 msgstr ""
 
-#: tables.py:43
+#: aleksis/apps/chronos/tables.py:43
 msgid "Manage substitution"
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:6
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:6
 msgid "Edit substitution."
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:7
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:7
 msgid "Edit substitution"
 msgstr ""
 
-#: templates/chronos/edit_substitution.html:20
+#: aleksis/apps/chronos/templates/chronos/edit_substitution.html:20
 msgid "Delete"
 msgstr ""
 
-#: templates/chronos/my_timetable.html:19 templates/chronos/timetable.html:50
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:19
+#: aleksis/apps/chronos/templates/chronos/timetable.html:49
 msgid "SMART PLAN"
 msgstr ""
 
-#: templates/chronos/my_timetable.html:22
+#: aleksis/apps/chronos/templates/chronos/my_timetable.html:22
 msgid "Show week timetable for"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:10
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:10
 msgid "Absent teachers"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:22
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:22
 msgid "Absent groups"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:34
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:34
 msgid "Affected teachers"
 msgstr ""
 
-#: templates/chronos/partials/headerbox.html:46
+#: aleksis/apps/chronos/templates/chronos/partials/headerbox.html:46
 msgid "Affected groups"
 msgstr ""
 
-#: templates/chronos/partials/subs/badge.html:4
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:4
 msgid "Cancelled"
 msgstr ""
 
-#: templates/chronos/partials/subs/badge.html:6
+#: aleksis/apps/chronos/templates/chronos/partials/subs/badge.html:6
 msgid "Cancelled for teachers"
 msgstr ""
 
-#: templates/chronos/partials/week_select.html:14
-#: templates/chronos/partials/week_select.html:25
-#: templates/chronos/partials/week_select.html:36
+#: aleksis/apps/chronos/templates/chronos/partials/today.html:2
+msgid "Today"
+msgstr ""
+
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:14
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:25
+#: aleksis/apps/chronos/templates/chronos/partials/week_select.html:36
 msgid "CW"
 msgstr ""
 
-#: templates/chronos/substitutions.html:48
-#: templates/chronos/substitutions_print.html:31
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:48
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:31
 msgid "Notes"
 msgstr ""
 
-#: templates/chronos/substitutions.html:56
-#: templates/chronos/substitutions_print.html:41
+#: aleksis/apps/chronos/templates/chronos/substitutions.html:56
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:41
 msgid "No substitutions available."
 msgstr ""
 
-#: templates/chronos/substitutions_print.html:11
+#: aleksis/apps/chronos/templates/chronos/substitutions_print.html:11
 msgid "Print: Substitutions"
 msgstr ""
 
-#: templates/chronos/timetable.html:11 templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable.html:11
+#: aleksis/apps/chronos/templates/chronos/timetable.html:23
+#: aleksis/apps/chronos/templates/chronos/timetable_print.html:11
 msgid "Timetable"
 msgstr ""
 
-#: templates/chronos/timetable.html:28
+#: aleksis/apps/chronos/templates/chronos/timetable.html:28
 msgid "Group teachers:"
 msgstr ""
 
-#: templates/chronos/timetable.html:55
+#: aleksis/apps/chronos/templates/chronos/timetable.html:54
 msgid "Show regular timetable"
 msgstr ""
 
-#: templates/chronos/timetable.html:67
+#: aleksis/apps/chronos/templates/chronos/timetable.html:66
 msgid "Show SMART PLAN"
 msgstr ""
 
-#: templates/chronos/widget.html:8
+#: aleksis/apps/chronos/templates/chronos/widget.html:8
 #, python-format
 msgid ""
 "\n"
@@ -511,21 +563,21 @@ msgid ""
 "      "
 msgstr ""
 
-#: templates/chronos/widget.html:19
+#: aleksis/apps/chronos/templates/chronos/widget.html:19
 msgid ""
 "\n"
 "              There is no timetable linked to your person.\n"
 "            "
 msgstr ""
 
-#: templates/chronos/widget.html:29
+#: aleksis/apps/chronos/templates/chronos/widget.html:29
 msgid "Go to smart plan"
 msgstr ""
 
-#: views.py:243
+#: aleksis/apps/chronos/views.py:264
 msgid "The substitution has been saved."
 msgstr ""
 
-#: views.py:264
+#: aleksis/apps/chronos/views.py:285
 msgid "The substitution has been deleted."
 msgstr ""