# Generated by Django 6.1.1 on 2026-11-03 16:56

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('clubs', '0012_clubdefaultlineup_tactical_plan_and_more'),
        ('players', '0008_freeze_retired_player_cards'),
        ('training', '0007_remove_matchexperiencedevelopmentresult_match_exp_progress_monotonic_and_more'),
    ]

    operations = [
        migrations.CreateModel(
            name='FormationTrainingProgress',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('formation_key', models.CharField(max_length=100)),
                ('points', models.DecimalField(decimal_places=6, default='0', max_digits=9)),
                ('updated_at', models.DateTimeField(auto_now=True)),
            ],
        ),
        migrations.AddField(
            model_name='trainingparticipant',
            name='checked_in_at',
            field=models.DateTimeField(blank=True, null=True),
        ),
        migrations.AddField(
            model_name='trainingparticipant',
            name='evidence',
            field=models.JSONField(blank=True, default=dict),
        ),
        migrations.AddField(
            model_name='trainingsession',
            name='ends_at',
            field=models.DateTimeField(blank=True, null=True),
        ),
        migrations.AddField(
            model_name='trainingsession',
            name='formation',
            field=models.CharField(blank=True, default='', max_length=24),
        ),
        migrations.AddField(
            model_name='trainingsession',
            name='formation_key',
            field=models.CharField(blank=True, default='', max_length=100),
        ),
        migrations.AddField(
            model_name='trainingsession',
            name='formation_slots',
            field=models.JSONField(blank=True, default=list),
        ),
        migrations.AddField(
            model_name='trainingsession',
            name='slot_number',
            field=models.PositiveSmallIntegerField(blank=True, null=True),
        ),
        migrations.AddField(
            model_name='trainingsession',
            name='starts_at',
            field=models.DateTimeField(blank=True, null=True),
        ),
        migrations.AlterField(
            model_name='trainingdevelopmentresult',
            name='participant',
            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='development_results', to='training.trainingparticipant'),
        ),
        migrations.AddConstraint(
            model_name='trainingdevelopmentresult',
            constraint=models.UniqueConstraint(fields=('participant', 'attribute_name'), name='training_result_part_attribute'),
        ),
        migrations.AddConstraint(
            model_name='trainingsession',
            constraint=models.UniqueConstraint(condition=models.Q(('slot_number__isnull', False), ('status', 'SCHEDULED')), fields=('club', 'training_date', 'slot_number'), name='training_active_team_slot'),
        ),
        migrations.AddConstraint(
            model_name='trainingsession',
            constraint=models.CheckConstraint(condition=models.Q(models.Q(('ends_at__isnull', True), ('slot_number__isnull', True), ('starts_at__isnull', True)), models.Q(('ends_at__gt', models.F('starts_at')), ('session_type', 'TEAM'), ('slot_number__in', [1, 2]), ('starts_at__isnull', False)), _connector='OR'), name='training_timed_slot_valid'),
        ),
        migrations.AddField(
            model_name='formationtrainingprogress',
            name='club',
            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='clubs.club'),
        ),
        migrations.AddField(
            model_name='formationtrainingprogress',
            name='player',
            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='players.player'),
        ),
        migrations.AddConstraint(
            model_name='formationtrainingprogress',
            constraint=models.UniqueConstraint(fields=('club', 'player', 'formation_key'), name='training_player_club_formation'),
        ),
        migrations.AddConstraint(
            model_name='formationtrainingprogress',
            constraint=models.CheckConstraint(condition=models.Q(('points__gte', 0), ('points__lte', 100)), name='training_formation_points_range'),
        ),
    ]
