# Generated by Django 4.2.7 on 2026-05-15 11:08

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='AcademicDebt',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('debt_type', models.CharField(choices=[('exam', 'Экзамен'), ('coursework', 'Курсовая работа'), ('lab', 'Лабораторная работа'), ('test', 'Зачёт')], max_length=20, verbose_name='Тип задолженности')),
                ('assigned_date', models.DateField(auto_now_add=True, verbose_name='Дата возникновения')),
                ('due_date', models.DateField(blank=True, null=True, verbose_name='Срок ликвидации')),
                ('is_resolved', models.BooleanField(default=False, verbose_name='Ликвидирована')),
                ('resolved_date', models.DateField(blank=True, null=True, verbose_name='Дата ликвидации')),
            ],
            options={
                'verbose_name': 'Академическая задолженность',
                'verbose_name_plural': 'Академические задолженности',
            },
        ),
        migrations.CreateModel(
            name='Attendance',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('status', models.CharField(choices=[('present', 'Присутствовал'), ('absent', 'Отсутствовал (неуважительная)'), ('late', 'Опоздал'), ('excused', 'Отсутствовал (уважительная)')], default='present', max_length=20, verbose_name='Статус')),
                ('late_minutes', models.IntegerField(default=0, verbose_name='Минуты опоздания')),
            ],
            options={
                'verbose_name': 'Посещаемость',
                'verbose_name_plural': 'Посещаемость',
            },
        ),
        migrations.CreateModel(
            name='Group',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=50, verbose_name='Название группы')),
                ('academic_year', models.IntegerField(verbose_name='Учебный год')),
                ('course_num', models.SmallIntegerField(verbose_name='Курс')),
                ('study_form', models.CharField(choices=[('full_time', 'Очная'), ('part_time', 'Заочная'), ('evening', 'Вечерняя')], default='full_time', max_length=20, verbose_name='Форма обучения')),
                ('budget_form', models.CharField(choices=[('budget', 'Бюджет'), ('contract', 'Платное')], default='budget', max_length=20, verbose_name='Форма оплаты')),
                ('speciality_code', models.CharField(blank=True, max_length=20, verbose_name='Код специальности')),
                ('speciality_name', models.CharField(blank=True, max_length=255, verbose_name='Специальность')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')),
            ],
            options={
                'verbose_name': 'Группа',
                'verbose_name_plural': 'Группы',
            },
        ),
        migrations.CreateModel(
            name='Olympiad',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=255, verbose_name='Название')),
                ('level', models.CharField(choices=[('college', 'Колледж'), ('city', 'Городской'), ('regional', 'Региональный'), ('national', 'Всероссийский'), ('international', 'Международный')], max_length=20, verbose_name='Уровень')),
                ('result', models.CharField(choices=[('participant', 'Участник'), ('prize', 'Призёр'), ('winner', 'Победитель')], max_length=20, verbose_name='Результат')),
                ('year', models.IntegerField(verbose_name='Год')),
            ],
            options={
                'verbose_name': 'Олимпиада',
                'verbose_name_plural': 'Олимпиады',
            },
        ),
        migrations.CreateModel(
            name='Room',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('number', models.CharField(max_length=20, verbose_name='Номер аудитории')),
                ('name', models.CharField(blank=True, max_length=100, verbose_name='Название')),
                ('room_type', models.CharField(choices=[('classroom', 'Аудитория'), ('lab', 'Лаборатория'), ('computer', 'Компьютерный класс'), ('sport', 'Спортивный зал'), ('distance', 'Дистанционное обучение')], default='classroom', max_length=20, verbose_name='Тип')),
                ('capacity', models.IntegerField(default=0, verbose_name='Вместимость')),
                ('is_distance', models.BooleanField(default=False, verbose_name='Дистанционное обучение')),
            ],
            options={
                'verbose_name': 'Аудитория',
                'verbose_name_plural': 'Аудитории',
            },
        ),
        migrations.CreateModel(
            name='Subject',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('code', models.CharField(max_length=50, unique=True, verbose_name='Код предмета')),
                ('name', models.CharField(max_length=255, verbose_name='Название')),
                ('short_name', models.CharField(blank=True, max_length=50, verbose_name='Краткое название')),
            ],
            options={
                'verbose_name': 'Предмет',
                'verbose_name_plural': 'Предметы',
            },
        ),
        migrations.CreateModel(
            name='ScheduleItem',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('date', models.DateField(verbose_name='Дата занятия')),
                ('weekday', models.IntegerField(blank=True, null=True, verbose_name='День недели')),
                ('start_time', models.TimeField(verbose_name='Время начала')),
                ('end_time', models.TimeField(verbose_name='Время окончания')),
                ('topic', models.CharField(blank=True, max_length=255, verbose_name='Тема занятия')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True)),
                ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='schedule_items', to='core.group', verbose_name='Группа')),
                ('room', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='core.room', verbose_name='Аудитория')),
                ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.subject', verbose_name='Предмет')),
            ],
            options={
                'verbose_name': 'Занятие',
                'verbose_name_plural': 'Занятия',
                'ordering': ['date', 'start_time'],
            },
        ),
    ]
