# Generated by Django 6.0 on 2026-02-15 07:36

import django.core.validators
import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('academics', '0001_initial'),
        ('people', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='WeekDay',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('day_code', models.CharField(blank=True, choices=[('MON', 'Monday'), ('TUE', 'Tuesday'), ('WED', 'Wednesday'), ('THU', 'Thursday'), ('FRI', 'Friday'), ('SAT', 'Saturday'), ('SUN', 'Sunday')], max_length=3, null=True, unique=True)),
                ('day_name', models.CharField(blank=True, max_length=20, null=True)),
                ('is_open', models.BooleanField(default=True)),
                ('start_time', models.TimeField(blank=True, null=True)),
                ('end_time', models.TimeField(blank=True, null=True)),
                ('default_period_duration', models.PositiveIntegerField(blank=True, help_text='Duration in minutes', null=True, validators=[django.core.validators.MinValueValidator(1)])),
                ('break_after_periods', models.PositiveIntegerField(blank=True, help_text='Break after every N periods', null=True)),
                ('break_duration', models.PositiveIntegerField(blank=True, help_text='Break duration in minutes', null=True)),
                ('auto_generate_periods', models.BooleanField(default=True)),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
        ),
        migrations.CreateModel(
            name='TimeTable',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('period_number', models.PositiveIntegerField(blank=True, null=True)),
                ('start_time', models.TimeField(blank=True, null=True)),
                ('end_time', models.TimeField(blank=True, null=True)),
                ('room_number', models.CharField(blank=True, max_length=20, null=True)),
                ('is_break', models.BooleanField(default=False)),
                ('is_substitution', models.BooleanField(default=False)),
                ('notes', models.TextField(blank=True, null=True)),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('academic_class', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='timetables', to='academics.academicclass')),
                ('subject', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='academics.subject')),
                ('subject_teacher', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='academics.subjectteacher')),
                ('substitute_teacher', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='substitute_periods', to='people.teacher')),
                ('weekday', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='timetable_entries', to='schedules.weekday')),
            ],
            options={
                'indexes': [models.Index(fields=['academic_class', 'weekday', 'period_number'], name='schedules_t_academi_54f664_idx'), models.Index(fields=['academic_class', 'weekday'], name='schedules_t_academi_407fad_idx'), models.Index(fields=['subject_teacher'], name='schedules_t_subject_d3bdb3_idx'), models.Index(fields=['substitute_teacher'], name='schedules_t_substit_ad01d3_idx')],
            },
        ),
    ]
