Skip to content
Snippets Groups Projects
0001_initial.py 41.7 KiB
Newer Older
Tom Teichler's avatar
Tom Teichler committed
# Generated by Django 3.0.5 on 2020-05-04 14:16
Nik | Klampfradler's avatar
Nik | Klampfradler committed

Hangzhi Yu's avatar
Hangzhi Yu committed
import django.contrib.postgres.fields.jsonb
import django.contrib.sites.managers
import django.db.models.deletion
Jonathan Weth's avatar
Jonathan Weth committed
from django.db import migrations, models

import calendarweek.calendarweek
import colorfield.fields

import aleksis.apps.chronos.managers
Nik | Klampfradler's avatar
Nik | Klampfradler committed


class Migration(migrations.Migration):

    initial = True

    dependencies = [
Jonathan Weth's avatar
Jonathan Weth committed
        ("core", "0001_initial"),
        ("sites", "0002_alter_domain_unique"),
Nik | Klampfradler's avatar
Nik | Klampfradler committed
    ]

    operations = [
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="ChronosGlobalPermissions",
Hangzhi Yu's avatar
Hangzhi Yu committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
Hangzhi Yu's avatar
Hangzhi Yu committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "permissions": (
                    ("view_all_timetables", "Can view all timetables"),
                    ("view_timetable_overview", "Can view timetable overview"),
                    ("view_lessons_day", "Can view all lessons per day"),
                ),
                "managed": False,
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
Jonathan Weth's avatar
Jonathan Weth committed
            managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="Break",
Hangzhi Yu's avatar
Hangzhi Yu committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                (
                    "short_name",
                    models.CharField(max_length=255, verbose_name="Short name"),
                ),
                ("name", models.CharField(max_length=255, verbose_name="Long name")),
Hangzhi Yu's avatar
Hangzhi Yu committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Break",
                "verbose_name_plural": "Breaks",
                "ordering": ["after_period"],
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
Jonathan Weth's avatar
Jonathan Weth committed
            managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="Lesson",
Hangzhi Yu's avatar
Hangzhi Yu committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                ("date_start", models.DateField(null=True, verbose_name="Start date")),
                ("date_end", models.DateField(null=True, verbose_name="End date")),
                (
                    "groups",
                    models.ManyToManyField(
                        related_name="lessons", to="core.Group", verbose_name="Groups"
                    ),
                ),
Hangzhi Yu's avatar
Hangzhi Yu committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Lesson",
                "verbose_name_plural": "Lessons",
                "ordering": ["date_start", "subject"],
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
Jonathan Weth's avatar
Jonathan Weth committed
            bases=(
                models.Model,
                aleksis.apps.chronos.managers.GroupPropertiesMixin,
                aleksis.apps.chronos.managers.TeacherPropertiesMixin,
            ),
            managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="LessonPeriod",
Hangzhi Yu's avatar
Hangzhi Yu committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                (
                    "lesson",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="lesson_periods",
                        to="chronos.Lesson",
                        verbose_name="Lesson",
                    ),
                ),
Hangzhi Yu's avatar
Hangzhi Yu committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Lesson period",
                "verbose_name_plural": "Lesson periods",
                "ordering": [
                    "lesson__date_start",
                    "period__weekday",
                    "period__period",
                    "lesson__subject",
                ],
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="Supervision",
Hangzhi Yu's avatar
Hangzhi Yu committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
Hangzhi Yu's avatar
Hangzhi Yu committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Supervision",
                "verbose_name_plural": "Supervisions",
                "ordering": ["area", "break_item"],
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="TimetableWidget",
            fields=[],
Hangzhi Yu's avatar
Hangzhi Yu committed
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Timetable widget",
                "verbose_name_plural": "Timetable widgets",
                "proxy": True,
                "indexes": [],
                "constraints": [],
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
Jonathan Weth's avatar
Jonathan Weth committed
            bases=("core.dashboardwidget",),
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="TimePeriod",
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                (
                    "weekday",
                    models.PositiveSmallIntegerField(
                        choices=[
                            (0, "Monday"),
                            (1, "Tuesday"),
                            (2, "Wednesday"),
                            (3, "Thursday"),
                            (4, "Friday"),
                            (5, "Saturday"),
                            (6, "Sunday"),
                        ],
                        verbose_name="Week day",
                    ),
                ),
                (
                    "period",
                    models.PositiveSmallIntegerField(verbose_name="Number of period"),
                ),
                ("time_start", models.TimeField(verbose_name="Start time")),
                ("time_end", models.TimeField(verbose_name="End time")),
                (
                    "site",
                    models.ForeignKey(
                        default=1,
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="sites.Site",
                    ),
                ),
Hangzhi Yu's avatar
Hangzhi Yu committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Time period",
                "verbose_name_plural": "Time periods",
                "ordering": ["weekday", "period"],
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
Jonathan Weth's avatar
Jonathan Weth committed
            managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
Nik | Klampfradler's avatar
Nik | Klampfradler committed
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="SupervisionSubstitution",
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                ("date", models.DateField(verbose_name="Date")),
                (
                    "site",
                    models.ForeignKey(
                        default=1,
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="sites.Site",
                    ),
                ),
                (
                    "supervision",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="substitutions",
                        to="chronos.Supervision",
                        verbose_name="Supervision",
                    ),
                ),
                (
                    "teacher",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="substituted_supervisions",
                        to="core.Person",
                        verbose_name="Teacher",
                    ),
                ),
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Supervision substitution",
                "verbose_name_plural": "Supervision substitutions",
                "ordering": ["date", "supervision"],
Jonathan Weth's avatar
Jonathan Weth committed
            managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
Nik | Klampfradler's avatar
Nik | Klampfradler committed
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="SupervisionArea",
Nik | Klampfradler's avatar
Nik | Klampfradler committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                (
                    "short_name",
                    models.CharField(max_length=255, verbose_name="Short name"),
                ),
                ("name", models.CharField(max_length=255, verbose_name="Long name")),
                (
                    "colour_fg",
                    colorfield.fields.ColorField(default="#000000", max_length=18),
                ),
                (
                    "colour_bg",
                    colorfield.fields.ColorField(default="#FFFFFF", max_length=18),
                ),
                (
                    "site",
                    models.ForeignKey(
                        default=1,
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="sites.Site",
                    ),
                ),
Nik | Klampfradler's avatar
Nik | Klampfradler committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Supervision area",
                "verbose_name_plural": "Supervision areas",
                "ordering": ["name"],
Jonathan Weth's avatar
Jonathan Weth committed
            managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="supervision",
            name="area",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="supervisions",
                to="chronos.SupervisionArea",
                verbose_name="Supervision area",
            ),
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="supervision",
            name="break_item",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="supervisions",
                to="chronos.Break",
                verbose_name="Break",
            ),
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="supervision",
            name="site",
            field=models.ForeignKey(
                default=1,
                editable=False,
                on_delete=django.db.models.deletion.CASCADE,
                to="sites.Site",
            ),
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="supervision",
            name="teacher",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="supervisions",
                to="core.Person",
                verbose_name="Teacher",
            ),
Nik | Klampfradler's avatar
Nik | Klampfradler committed
        ),
Jonathan Weth's avatar
Jonathan Weth committed
            name="Subject",
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                (
                    "short_name",
                    models.CharField(
                        max_length=255, unique=True, verbose_name="Short name"
                    ),
                ),
                (
                    "name",
                    models.CharField(
                        max_length=255, unique=True, verbose_name="Long name"
                    ),
                ),
                (
                    "colour_fg",
                    colorfield.fields.ColorField(
                        blank=True,
                        default="",
                        max_length=18,
                        verbose_name="Foreground colour",
                    ),
                ),
                (
                    "colour_bg",
                    colorfield.fields.ColorField(
                        blank=True,
                        default="",
                        max_length=18,
                        verbose_name="Background colour",
                    ),
                ),
                (
                    "site",
                    models.ForeignKey(
                        default=1,
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="sites.Site",
                    ),
                ),
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Subject",
                "verbose_name_plural": "Subjects",
                "ordering": ["name", "short_name"],
Jonathan Weth's avatar
Jonathan Weth committed
            managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="Room",
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                (
                    "short_name",
                    models.CharField(
                        max_length=255, unique=True, verbose_name="Short name"
                    ),
                ),
                ("name", models.CharField(max_length=255, verbose_name="Long name")),
                (
                    "site",
                    models.ForeignKey(
                        default=1,
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="sites.Site",
                    ),
                ),
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Room",
                "verbose_name_plural": "Rooms",
                "ordering": ["name", "short_name"],
Jonathan Weth's avatar
Jonathan Weth committed
            managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="LessonSubstitution",
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                (
                    "week",
                    models.IntegerField(
                        default=calendarweek.calendarweek.CalendarWeek.current_week,
                        verbose_name="Week",
                    ),
                ),
                (
                    "cancelled",
                    models.BooleanField(default=False, verbose_name="Cancelled?"),
                ),
                (
                    "cancelled_for_teachers",
                    models.BooleanField(
                        default=False, verbose_name="Cancelled for teachers?"
                    ),
                ),
                (
                    "comment",
                    models.TextField(blank=True, null=True, verbose_name="Comment"),
                ),
                (
                    "lesson_period",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="substitutions",
                        to="chronos.LessonPeriod",
                        verbose_name="Lesson period",
                    ),
                ),
                (
                    "room",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="chronos.Room",
                        verbose_name="Room",
                    ),
                ),
                (
                    "site",
                    models.ForeignKey(
                        default=1,
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="sites.Site",
                    ),
                ),
                (
                    "subject",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="lesson_substitutions",
                        to="chronos.Subject",
                        verbose_name="Subject",
                    ),
                ),
                (
                    "teachers",
                    models.ManyToManyField(
                        blank=True,
                        related_name="lesson_substitutions",
                        to="core.Person",
                        verbose_name="Teachers",
                    ),
                ),
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Lesson substitution",
                "verbose_name_plural": "Lesson substitutions",
                "ordering": [
                    "lesson_period__lesson__date_start",
                    "week",
                    "lesson_period__period__weekday",
                    "lesson_period__period__period",
                ],
            },
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="lessonperiod",
            name="period",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="lesson_periods",
                to="chronos.TimePeriod",
                verbose_name="Time period",
            ),
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="lessonperiod",
            name="room",
            field=models.ForeignKey(
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name="lesson_periods",
                to="chronos.Room",
                verbose_name="Room",
            ),
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="lessonperiod",
            name="site",
            field=models.ForeignKey(
                default=1,
                editable=False,
                on_delete=django.db.models.deletion.CASCADE,
                to="sites.Site",
            ),
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="lesson",
            name="periods",
            field=models.ManyToManyField(
                related_name="lessons",
                through="chronos.LessonPeriod",
                to="chronos.TimePeriod",
                verbose_name="Periods",
            ),
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="lesson",
            name="site",
            field=models.ForeignKey(
                default=1,
                editable=False,
                on_delete=django.db.models.deletion.CASCADE,
                to="sites.Site",
            ),
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="lesson",
            name="subject",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="lessons",
                to="chronos.Subject",
                verbose_name="Subject",
            ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="lesson",
            name="teachers",
            field=models.ManyToManyField(
                related_name="lessons_as_teacher",
                to="core.Person",
                verbose_name="Teachers",
            ),
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="Holiday",
Hangzhi Yu's avatar
Hangzhi Yu committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                ("title", models.CharField(max_length=255, verbose_name="Title")),
                ("date_start", models.DateField(null=True, verbose_name="Start date")),
                ("date_end", models.DateField(null=True, verbose_name="End date")),
                (
                    "comments",
                    models.TextField(blank=True, null=True, verbose_name="Comments"),
                ),
                (
                    "site",
                    models.ForeignKey(
                        default=1,
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="sites.Site",
                    ),
                ),
Hangzhi Yu's avatar
Hangzhi Yu committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Holiday",
                "verbose_name_plural": "Holidays",
                "ordering": ["date_start"],
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="ExtraLesson",
Hangzhi Yu's avatar
Hangzhi Yu committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                (
                    "week",
                    models.IntegerField(
                        default=calendarweek.calendarweek.CalendarWeek.current_week,
                        verbose_name="Week",
                    ),
                ),
                (
                    "comment",
                    models.CharField(
                        blank=True, max_length=255, null=True, verbose_name="Comment"
                    ),
                ),
                (
                    "groups",
                    models.ManyToManyField(
                        related_name="extra_lessons",
                        to="core.Group",
                        verbose_name="Groups",
                    ),
                ),
                (
                    "period",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="extra_lessons",
                        to="chronos.TimePeriod",
                        verbose_name="Time period",
                    ),
                ),
                (
                    "room",
                    models.ForeignKey(
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="extra_lessons",
                        to="chronos.Room",
                        verbose_name="Room",
                    ),
                ),
                (
                    "site",
                    models.ForeignKey(
                        default=1,
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="sites.Site",
                    ),
                ),
                (
                    "subject",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="extra_lessons",
                        to="chronos.Subject",
                        verbose_name="Subject",
                    ),
                ),
                (
                    "teachers",
                    models.ManyToManyField(
                        related_name="extra_lessons_as_teacher",
                        to="core.Person",
                        verbose_name="Teachers",
                    ),
                ),
Hangzhi Yu's avatar
Hangzhi Yu committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Extra lesson",
                "verbose_name_plural": "Extra lessons",
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
            bases=(models.Model, aleksis.apps.chronos.managers.GroupPropertiesMixin),
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="Exam",
Hangzhi Yu's avatar
Hangzhi Yu committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                ("date", models.DateField(null=True, verbose_name="Date of exam")),
                ("title", models.CharField(max_length=255, verbose_name="Title")),
                (
                    "comment",
                    models.TextField(blank=True, null=True, verbose_name="Comment"),
                ),
                (
                    "lesson",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="exams",
                        to="chronos.Lesson",
                        verbose_name="Lesson",
                    ),
                ),
                (
                    "period_from",
                    models.ForeignKey(
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="+",
                        to="chronos.TimePeriod",
                        verbose_name="Start period",
                    ),
                ),
                (
                    "period_to",
                    models.ForeignKey(
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="+",
                        to="chronos.TimePeriod",
                        verbose_name="End period",
                    ),
                ),
                (
                    "site",
                    models.ForeignKey(
                        default=1,
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="sites.Site",
                    ),
                ),
Hangzhi Yu's avatar
Hangzhi Yu committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Exam",
                "verbose_name_plural": "Exams",
                "ordering": ["date"],
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
Jonathan Weth's avatar
Jonathan Weth committed
            managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="Event",
Hangzhi Yu's avatar
Hangzhi Yu committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "extended_data",
                    django.contrib.postgres.fields.jsonb.JSONField(
                        default=dict, editable=False
                    ),
                ),
                (
                    "title",
                    models.CharField(
                        blank=True, max_length=255, null=True, verbose_name="Title"
                    ),
                ),
                ("date_start", models.DateField(null=True, verbose_name="Start date")),
                ("date_end", models.DateField(null=True, verbose_name="End date")),
                (
                    "groups",
                    models.ManyToManyField(
                        related_name="events", to="core.Group", verbose_name="Groups"
                    ),
                ),
                (
                    "period_from",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="+",
                        to="chronos.TimePeriod",
                        verbose_name="Start time period",
                    ),
                ),
                (
                    "period_to",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="+",
                        to="chronos.TimePeriod",
                        verbose_name="End time period",
                    ),
                ),
                (
                    "rooms",
                    models.ManyToManyField(
                        related_name="events", to="chronos.Room", verbose_name="Rooms"
                    ),
                ),
                (
                    "site",
                    models.ForeignKey(
                        default=1,
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="sites.Site",
                    ),
                ),
                (
                    "teachers",
                    models.ManyToManyField(
                        related_name="events", to="core.Person", verbose_name="Teachers"
                    ),
                ),
Hangzhi Yu's avatar
Hangzhi Yu committed
            ],
            options={
Jonathan Weth's avatar
Jonathan Weth committed
                "verbose_name": "Event",
                "verbose_name_plural": "Events",
                "ordering": ["date_start"],
Hangzhi Yu's avatar
Hangzhi Yu committed
            },
Jonathan Weth's avatar
Jonathan Weth committed
            bases=(
                models.Model,
                aleksis.apps.chronos.managers.GroupPropertiesMixin,
                aleksis.apps.chronos.managers.TeacherPropertiesMixin,
            ),
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="break",
            name="after_period",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name="break_after",
                to="chronos.TimePeriod",
                verbose_name="Time period after break starts",
            ),
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="break",
            name="before_period",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name="break_before",
                to="chronos.TimePeriod",
                verbose_name="Time period before break ends",
            ),
        ),
        migrations.AddField(
Jonathan Weth's avatar
Jonathan Weth committed
            model_name="break",
            name="site",
            field=models.ForeignKey(
                default=1,
                editable=False,
                on_delete=django.db.models.deletion.CASCADE,
                to="sites.Site",
            ),
Hangzhi Yu's avatar
Hangzhi Yu committed
        ),
        migrations.CreateModel(
Jonathan Weth's avatar
Jonathan Weth committed
            name="AbsenceReason",
Hangzhi Yu's avatar
Hangzhi Yu committed
            fields=[
Jonathan Weth's avatar
Jonathan Weth committed
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,