# Generated by Django 3.0.5 on 2020-05-04 14:16 import aleksis.apps.chronos.managers import calendarweek.calendarweek import colorfield.fields import django.contrib.postgres.fields.jsonb import django.contrib.sites.managers from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [ ('core', '0001_initial'), ('sites', '0002_alter_domain_unique'), ] operations = [ migrations.CreateModel( name='ChronosGlobalPermissions', fields=[ ('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)), ], options={ '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, }, managers=[ ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), migrations.CreateModel( name='Break', fields=[ ('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')), ], options={ 'verbose_name': 'Break', 'verbose_name_plural': 'Breaks', 'ordering': ['after_period'], }, managers=[ ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), migrations.CreateModel( name='Lesson', fields=[ ('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')), ], options={ 'verbose_name': 'Lesson', 'verbose_name_plural': 'Lessons', 'ordering': ['date_start', 'subject'], }, bases=(models.Model, aleksis.apps.chronos.managers.GroupPropertiesMixin, aleksis.apps.chronos.managers.TeacherPropertiesMixin), managers=[ ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), migrations.CreateModel( name='LessonPeriod', fields=[ ('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')), ], options={ 'verbose_name': 'Lesson period', 'verbose_name_plural': 'Lesson periods', 'ordering': ['lesson__date_start', 'period__weekday', 'period__period', 'lesson__subject'], }, ), migrations.CreateModel( name='Supervision', fields=[ ('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)), ], options={ 'verbose_name': 'Supervision', 'verbose_name_plural': 'Supervisions', 'ordering': ['area', 'break_item'], }, ), migrations.CreateModel( name='TimetableWidget', fields=[ ], options={ 'verbose_name': 'Timetable widget', 'verbose_name_plural': 'Timetable widgets', 'proxy': True, 'indexes': [], 'constraints': [], }, bases=('core.dashboardwidget',), ), migrations.CreateModel( name='TimePeriod', fields=[ ('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')), ], options={ 'verbose_name': 'Time period', 'verbose_name_plural': 'Time periods', 'ordering': ['weekday', 'period'], }, managers=[ ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), migrations.CreateModel( name='SupervisionSubstitution', fields=[ ('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={ 'verbose_name': 'Supervision substitution', 'verbose_name_plural': 'Supervision substitutions', 'ordering': ['date', 'supervision'], }, managers=[ ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), migrations.CreateModel( name='SupervisionArea', fields=[ ('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')), ], options={ 'verbose_name': 'Supervision area', 'verbose_name_plural': 'Supervision areas', 'ordering': ['name'], }, managers=[ ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), migrations.AddField( 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'), ), migrations.AddField( 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'), ), migrations.AddField( model_name='supervision', name='site', field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'), ), migrations.AddField( model_name='supervision', name='teacher', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='supervisions', to='core.Person', verbose_name='Teacher'), ), migrations.CreateModel( name='Subject', fields=[ ('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='#FFFFFF', max_length=18, verbose_name='Foreground colour')), ('colour_bg', colorfield.fields.ColorField(blank=True, default='#FFFFFF', 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={ 'verbose_name': 'Subject', 'verbose_name_plural': 'Subjects', 'ordering': ['name', 'short_name'], }, managers=[ ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), migrations.CreateModel( name='Room', fields=[ ('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')), ], options={ 'verbose_name': 'Room', 'verbose_name_plural': 'Rooms', 'ordering': ['name', 'short_name'], }, managers=[ ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), migrations.CreateModel( name='LessonSubstitution', fields=[ ('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')), ], options={ '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( 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'), ), migrations.AddField( 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'), ), migrations.AddField( model_name='lessonperiod', name='site', field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'), ), migrations.AddField( model_name='lesson', name='periods', field=models.ManyToManyField(related_name='lessons', through='chronos.LessonPeriod', to='chronos.TimePeriod', verbose_name='Periods'), ), migrations.AddField( model_name='lesson', name='site', field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'), ), migrations.AddField( 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( model_name='lesson', name='teachers', field=models.ManyToManyField(related_name='lessons_as_teacher', to='core.Person', verbose_name='Teachers'), ), migrations.CreateModel( name='Holiday', fields=[ ('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')), ], options={ 'verbose_name': 'Holiday', 'verbose_name_plural': 'Holidays', 'ordering': ['date_start'], }, ), migrations.CreateModel( name='ExtraLesson', fields=[ ('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')), ], options={ 'verbose_name': 'Extra lesson', 'verbose_name_plural': 'Extra lessons', }, bases=(models.Model, aleksis.apps.chronos.managers.GroupPropertiesMixin), ), migrations.CreateModel( name='Exam', fields=[ ('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')), ], options={ 'verbose_name': 'Exam', 'verbose_name_plural': 'Exams', 'ordering': ['date'], }, managers=[ ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), migrations.CreateModel( name='Event', fields=[ ('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')), ], options={ 'verbose_name': 'Event', 'verbose_name_plural': 'Events', 'ordering': ['date_start'], }, bases=(models.Model, aleksis.apps.chronos.managers.GroupPropertiesMixin, aleksis.apps.chronos.managers.TeacherPropertiesMixin), ), migrations.AddField( 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( 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( model_name='break', name='site', field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'), ), migrations.CreateModel( name='AbsenceReason', fields=[ ('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(blank=True, max_length=255, null=True, verbose_name='Name')), ('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')), ], options={ 'verbose_name': 'Absence reason', 'verbose_name_plural': 'Absence reasons', }, managers=[ ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), migrations.CreateModel( name='Absence', fields=[ ('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')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='absences', to='core.Group', verbose_name='Group')), ('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')), ('reason', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='absences', to='chronos.AbsenceReason', verbose_name='Absence reason')), ('room', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='absences', to='chronos.Room', verbose_name='Room')), ('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')), ('teacher', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='absences', to='core.Person', verbose_name='Teacher')), ], options={ 'verbose_name': 'Absence', 'verbose_name_plural': 'Absences', 'ordering': ['date_start'], }, ), migrations.AddIndex( model_name='timeperiod', index=models.Index(fields=['time_start', 'time_end'], name='chronos_tim_time_st_491e4c_idx'), ), migrations.AlterUniqueTogether( name='timeperiod', unique_together={('weekday', 'period')}, ), migrations.AddConstraint( model_name='lessonsubstitution', constraint=models.CheckConstraint(check=models.Q(('cancelled', True), ('subject__isnull', False), _negated=True), name='either_substituted_or_cancelled'), ), migrations.AlterUniqueTogether( name='lessonsubstitution', unique_together={('lesson_period', 'week')}, ), migrations.AddIndex( model_name='lessonperiod', index=models.Index(fields=['lesson', 'period'], name='chronos_les_lesson__05250e_idx'), ), migrations.AddIndex( model_name='lesson', index=models.Index(fields=['date_start', 'date_end'], name='chronos_les_date_st_5ecc62_idx'), ), migrations.AddIndex( model_name='holiday', index=models.Index(fields=['date_start', 'date_end'], name='chronos_hol_date_st_a47004_idx'), ), migrations.AddIndex( model_name='exam', index=models.Index(fields=['date'], name='chronos_exa_date_5ba442_idx'), ), migrations.AddIndex( model_name='event', index=models.Index(fields=['period_from', 'period_to', 'date_start', 'date_end'], name='chronos_eve_period__c7ec33_idx'), ), migrations.AddIndex( model_name='break', index=models.Index(fields=['after_period', 'before_period'], name='chronos_bre_after_p_0f28d3_idx'), ), migrations.AddIndex( model_name='absence', index=models.Index(fields=['date_start', 'date_end'], name='chronos_abs_date_st_337ff5_idx'), ), ]