# Generated by Django 3.2.25 on 2026-09-28 17:49

from django.conf import settings
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='ConfiguracaoTime',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('total_minimo', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1)], verbose_name='quantidade total mínima de integrantes')),
                ('total_maximo', models.PositiveSmallIntegerField(default=18, verbose_name='quantidade total máxima de integrantes')),
                ('feminino_minimo', models.PositiveSmallIntegerField(default=0, verbose_name='quantidade mínima de integrantes mulheres')),
                ('feminino_maximo', models.PositiveSmallIntegerField(default=18, verbose_name='quantidade máxima de integrantes mulheres')),
                ('masculino_minimo', models.PositiveSmallIntegerField(default=0, verbose_name='quantidade mínima de integrantes homens')),
                ('masculino_maximo', models.PositiveSmallIntegerField(default=18, verbose_name='quantidade máxima de integrantes homens')),
                ('obs', models.CharField(blank=True, max_length=200, verbose_name='Observação')),
            ],
            options={
                'verbose_name_plural': 'ConfiguraçõesTime',
            },
        ),
        migrations.CreateModel(
            name='Edicao',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('nome', models.CharField(max_length=200, verbose_name='nome')),
                ('icone', models.CharField(blank=True, max_length=200, verbose_name='ícone')),
                ('descricao', models.CharField(blank=True, max_length=200, verbose_name='descrição')),
                ('inscricao_inicio', models.DateTimeField(verbose_name='início das inscrições')),
                ('inscricao_fim', models.DateTimeField(verbose_name='fim das inscrições')),
                ('inicio_data', models.DateField(verbose_name='início do evento')),
                ('fim_data', models.DateField(verbose_name='fim do evento')),
                ('criado_em', models.DateTimeField(auto_now_add=True, verbose_name='data de criação')),
            ],
            options={
                'verbose_name': 'Edição',
                'verbose_name_plural': 'Edições',
            },
        ),
        migrations.CreateModel(
            name='Esporte',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('nome', models.CharField(max_length=200, verbose_name='nome')),
                ('icone', models.CharField(blank=True, max_length=200, verbose_name='ícone')),
                ('descricao', models.CharField(blank=True, max_length=200, verbose_name='descrição')),
                ('criado_em', models.DateTimeField(auto_now_add=True, verbose_name='data de criação')),
            ],
        ),
        migrations.CreateModel(
            name='Evento',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('nome', models.CharField(max_length=200, verbose_name='nome')),
                ('icone', models.CharField(blank=True, max_length=200, verbose_name='índice')),
                ('descricao', models.CharField(blank=True, max_length=200, verbose_name='descrição')),
                ('criado_em', models.DateTimeField(auto_now_add=True, verbose_name='data de criação')),
            ],
        ),
        migrations.CreateModel(
            name='Partida',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('numero', models.PositiveSmallIntegerField(verbose_name='número da partida')),
                ('grupo', models.CharField(max_length=1, verbose_name='grupo')),
                ('numero_time1', models.PositiveSmallIntegerField(default=0, verbose_name='número do time 1')),
                ('numero_time2', models.PositiveSmallIntegerField(default=0, verbose_name='número do time 2')),
                ('horario', models.DateTimeField(null=True, verbose_name='horário da partida')),
                ('local', models.CharField(blank=True, max_length=30, verbose_name='local')),
                ('arbitro', models.CharField(blank=True, max_length=30, verbose_name='árbitro')),
                ('proxima_partida_vencedor_indice', models.PositiveSmallIntegerField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(2)], verbose_name='posição na próxima partida para o vencedor')),
                ('proxima_partida_perdedor_indice', models.PositiveSmallIntegerField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(2)], verbose_name='posição na próxima partida para o perdedor')),
                ('resultado_time1', models.IntegerField(default=-1000, verbose_name='pontuação do time 1')),
                ('resultado_time2', models.IntegerField(default=-1000, verbose_name='pontuação do time 2')),
                ('wo', models.BooleanField(default=False, verbose_name='WO')),
                ('vencedor', models.SmallIntegerField(default=-1, validators=[django.core.validators.MinValueValidator(-1), django.core.validators.MaxValueValidator(2)], verbose_name='vencedor')),
                ('criado_em', models.DateTimeField(auto_now_add=True, verbose_name='data de criação')),
                ('atualizado_em', models.DateTimeField(auto_now=True, verbose_name='data de atualização')),
                ('proxima_partida_perdedor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='filhos_perdedores', to='torneio.partida', verbose_name='próxima partida para o perdedor')),
                ('proxima_partida_vencedor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='filhos_vencedores', to='torneio.partida', verbose_name='próxima partida para o vencedor')),
            ],
            options={
                'permissions': [('can_definir_resultado_partida', 'Definir resultado da partida e sua pontuação')],
            },
        ),
        migrations.CreateModel(
            name='Torneio',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('nome', models.CharField(max_length=200, verbose_name='nome')),
                ('naipe', models.CharField(choices=[('M', 'masculino'), ('F', 'feminino'), ('T', 'misto')], max_length=1, verbose_name='naipe')),
                ('times_minimo', models.PositiveSmallIntegerField(default=6, verbose_name='quantidade mínima de times')),
                ('times_maximo', models.PositiveSmallIntegerField(default=18, verbose_name='quantidade máxima de times')),
                ('slug', models.SlugField(default='', null=True, unique=True, verbose_name='slug')),
                ('descricao', models.CharField(blank=True, max_length=200, verbose_name='descrição')),
                ('criado_em', models.DateTimeField(auto_now_add=True, verbose_name='data de criação')),
                ('atualizado_em', models.DateTimeField(auto_now=True, verbose_name='data de atualização')),
                ('edicao', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='torneios', to='torneio.edicao', verbose_name='edição')),
                ('esporte', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='torneios', to='torneio.esporte', verbose_name='esporte')),
            ],
        ),
        migrations.CreateModel(
            name='Time',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('nome', models.CharField(max_length=50, verbose_name='nome')),
                ('cor1', models.CharField(blank=True, max_length=7, verbose_name='cor 1')),
                ('cor2', models.CharField(blank=True, max_length=7, verbose_name='cor 2')),
                ('aprovado', models.BooleanField(blank=True, default=None, null=True, verbose_name='homologado')),
                ('numero', models.PositiveSmallIntegerField(default=0, verbose_name='número do time')),
                ('criado_em', models.DateTimeField(auto_now_add=True, verbose_name='data de criação')),
                ('aprovacao_por', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Homologação por')),
                ('configuracao', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='times', to='torneio.configuracaotime', verbose_name='Configuração dos times')),
            ],
            options={
                'permissions': [('can_definir_numero_time', 'Definir posição do time no chaveamento')],
            },
        ),
        migrations.CreateModel(
            name='Pontuacao',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('set', models.PositiveSmallIntegerField(default=0, validators=[django.core.validators.MinValueValidator(0)], verbose_name='Set')),
                ('pontos_time1', models.SmallIntegerField(default=0, verbose_name='Pontuação do time 1')),
                ('pontos_time2', models.SmallIntegerField(default=0, verbose_name='Pontuação do time 2')),
                ('partida', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='torneio.partida', verbose_name='Partida')),
            ],
            options={
                'verbose_name_plural': 'Pontuações',
            },
        ),
        migrations.AddField(
            model_name='partida',
            name='torneio',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='partidas', to='torneio.torneio', verbose_name='torneio'),
        ),
        migrations.CreateModel(
            name='Integrante',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('nome', models.CharField(max_length=200, verbose_name='nome')),
                ('genero', models.CharField(choices=[('M', 'masculino'), ('F', 'feminino'), ('O', 'outro')], max_length=1, verbose_name='gênero')),
                ('criado_em', models.DateTimeField(auto_now_add=True, verbose_name='data de criação')),
                ('atualizado_em', models.DateTimeField(auto_now=True, verbose_name='data de atualização')),
                ('time', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='integrantes', to='torneio.time', verbose_name='time')),
            ],
        ),
        migrations.AddField(
            model_name='edicao',
            name='evento',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='edicoes', to='torneio.evento', verbose_name='evento'),
        ),
        migrations.AddField(
            model_name='configuracaotime',
            name='torneio',
            field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='torneio.torneio', verbose_name='torneio'),
        ),
        migrations.CreateModel(
            name='ChaveInscricao',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('codigo', models.CharField(max_length=128, unique=True, verbose_name='código')),
                ('ativa', models.BooleanField(default=True, verbose_name='ativa')),
                ('time', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='torneio.time', verbose_name='time')),
            ],
            options={
                'verbose_name_plural': 'ChavesInscrição',
            },
        ),
        migrations.CreateModel(
            name='AcessoChaveInscricao',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('horario', models.DateTimeField(verbose_name='horário de acesso')),
                ('ip', models.GenericIPAddressField()),
                ('chave_inscricao', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='acessos', to='torneio.chaveinscricao', verbose_name='Chave de inscrição')),
            ],
            options={
                'verbose_name_plural': 'AcessosChaveInscrição',
            },
        ),
    ]
