# Generated by Django 6.1.1 on 2026-11-02 20:31

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('federations', '0015_continentalallocation'),
        ('leagues', '0006_league_registration_fee_and_more'),
        ('seasons', '0005_remove_seasoncompetitioncalendarslot_season_cal_source_shape_and_more'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='SeasonAutomationPolicy',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('registration_opens_at', models.DateTimeField()),
                ('starts_at', models.DateTimeField()),
                ('midseason_opens_at', models.DateTimeField()),
                ('midseason_closes_at', models.DateTimeField()),
                ('round_gap_days', models.PositiveSmallIntegerField(default=6)),
                ('kickoff_time', models.TimeField(default='18:00')),
                ('enabled', models.BooleanField(default=True)),
                ('auto_successor', models.BooleanField(default=True)),
                ('last_checked_at', models.DateTimeField(blank=True, null=True)),
                ('last_result', models.JSONField(default=dict)),
                ('updated_at', models.DateTimeField(auto_now=True)),
            ],
        ),
        migrations.AlterField(
            model_name='seasoncompetitioncalendarslot',
            name='run',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='calendar_slots', to='seasons.seasonorchestrationrun'),
        ),
        migrations.AddConstraint(
            model_name='seasoncompetitioncalendarslot',
            constraint=models.UniqueConstraint(condition=models.Q(('league_competition__isnull', False)), fields=('season', 'league_competition', 'phase', 'sequence'), name='uq_season_league_calendar'),
        ),
        migrations.AddField(
            model_name='seasonautomationpolicy',
            name='operator',
            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
        ),
        migrations.AddField(
            model_name='seasonautomationpolicy',
            name='season',
            field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='automation', to='seasons.season'),
        ),
        migrations.AddConstraint(
            model_name='seasonautomationpolicy',
            constraint=models.CheckConstraint(condition=models.Q(('registration_opens_at__lt', models.F('starts_at'))), name='season_auto_preseason_order'),
        ),
        migrations.AddConstraint(
            model_name='seasonautomationpolicy',
            constraint=models.CheckConstraint(condition=models.Q(('starts_at__lt', models.F('midseason_opens_at'))), name='season_auto_mid_start_order'),
        ),
        migrations.AddConstraint(
            model_name='seasonautomationpolicy',
            constraint=models.CheckConstraint(condition=models.Q(('midseason_opens_at__lt', models.F('midseason_closes_at'))), name='season_auto_mid_end_order'),
        ),
        migrations.AddConstraint(
            model_name='seasonautomationpolicy',
            constraint=models.CheckConstraint(condition=models.Q(('round_gap_days__gte', 3), ('round_gap_days__lte', 30)), name='season_auto_gap_range'),
        ),
    ]
