# Generated by Django 4.2 on 2023-04-04 17:54

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


class Migration(migrations.Migration):
    initial = True

    dependencies = [
        ("participation", "0005_alter_team_options"),
    ]

    operations = [
        migrations.CreateModel(
            name="Draw",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "last_message",
                    models.TextField(
                        blank=True,
                        default="",
                        help_text="The last message that is displayed on the drawing interface.",
                        verbose_name="last message",
                    ),
                ),
            ],
            options={
                "verbose_name": "draw",
                "verbose_name_plural": "draws",
            },
        ),
        migrations.CreateModel(
            name="Pool",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "letter",
                    models.PositiveSmallIntegerField(
                        choices=[(1, "A"), (2, "B"), (3, "C"), (4, "D")],
                        help_text="The letter of the pool: A, B, C or D.",
                        verbose_name="letter",
                    ),
                ),
                (
                    "size",
                    models.PositiveSmallIntegerField(
                        help_text="The number of teams in this pool, between 3 and 5.",
                        validators=[
                            django.core.validators.MinValueValidator(3),
                            django.core.validators.MaxValueValidator(5),
                        ],
                        verbose_name="size",
                    ),
                ),
                (
                    "associated_pool",
                    models.OneToOneField(
                        default=None,
                        help_text="The full pool instance.",
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="draw_pool",
                        to="participation.pool",
                        verbose_name="associated pool",
                    ),
                ),
            ],
            options={
                "verbose_name": "pool",
                "verbose_name_plural": "pools",
                "ordering": (
                    "round__draw__tournament__name",
                    "round__number",
                    "letter",
                ),
            },
        ),
        migrations.CreateModel(
            name="Round",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "number",
                    models.PositiveSmallIntegerField(
                        choices=[(1, "Round 1"), (2, "Round 2")],
                        help_text="The number of the round, 1 or 2",
                        validators=[
                            django.core.validators.MinValueValidator(1),
                            django.core.validators.MaxValueValidator(2),
                        ],
                        verbose_name="number",
                    ),
                ),
                (
                    "current_pool",
                    models.ForeignKey(
                        default=None,
                        help_text="The current pool where teams select their problems.",
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="+",
                        to="draw.pool",
                        verbose_name="current pool",
                    ),
                ),
                (
                    "draw",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="draw.draw",
                        verbose_name="draw",
                    ),
                ),
            ],
            options={
                "verbose_name": "round",
                "verbose_name_plural": "rounds",
                "ordering": ("draw__tournament__name", "number"),
            },
        ),
        migrations.CreateModel(
            name="TeamDraw",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "passage_index",
                    models.PositiveSmallIntegerField(
                        choices=[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)],
                        default=None,
                        help_text="The passage order in the pool, between 0 and the size of the pool minus 1.",
                        null=True,
                        validators=[
                            django.core.validators.MinValueValidator(0),
                            django.core.validators.MaxValueValidator(4),
                        ],
                        verbose_name="passage index",
                    ),
                ),
                (
                    "choose_index",
                    models.PositiveSmallIntegerField(
                        choices=[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)],
                        default=None,
                        help_text="The choice order in the pool, between 0 and the size of the pool minus 1.",
                        null=True,
                        validators=[
                            django.core.validators.MinValueValidator(0),
                            django.core.validators.MaxValueValidator(4),
                        ],
                        verbose_name="choose index",
                    ),
                ),
                (
                    "accepted",
                    models.PositiveSmallIntegerField(
                        choices=[
                            (1, "Problem #1"),
                            (2, "Problem #2"),
                            (3, "Problem #3"),
                            (4, "Problem #4"),
                            (5, "Problem #5"),
                            (6, "Problem #6"),
                            (7, "Problem #7"),
                            (8, "Problem #8"),
                        ],
                        default=None,
                        null=True,
                        verbose_name="accepted problem",
                    ),
                ),
                (
                    "passage_dice",
                    models.PositiveSmallIntegerField(
                        choices=[
                            (1, 1),
                            (2, 2),
                            (3, 3),
                            (4, 4),
                            (5, 5),
                            (6, 6),
                            (7, 7),
                            (8, 8),
                            (9, 9),
                            (10, 10),
                            (11, 11),
                            (12, 12),
                            (13, 13),
                            (14, 14),
                            (15, 15),
                            (16, 16),
                            (17, 17),
                            (18, 18),
                            (19, 19),
                            (20, 20),
                            (21, 21),
                            (22, 22),
                            (23, 23),
                            (24, 24),
                            (25, 25),
                            (26, 26),
                            (27, 27),
                            (28, 28),
                            (29, 29),
                            (30, 30),
                            (31, 31),
                            (32, 32),
                            (33, 33),
                            (34, 34),
                            (35, 35),
                            (36, 36),
                            (37, 37),
                            (38, 38),
                            (39, 39),
                            (40, 40),
                            (41, 41),
                            (42, 42),
                            (43, 43),
                            (44, 44),
                            (45, 45),
                            (46, 46),
                            (47, 47),
                            (48, 48),
                            (49, 49),
                            (50, 50),
                            (51, 51),
                            (52, 52),
                            (53, 53),
                            (54, 54),
                            (55, 55),
                            (56, 56),
                            (57, 57),
                            (58, 58),
                            (59, 59),
                            (60, 60),
                            (61, 61),
                            (62, 62),
                            (63, 63),
                            (64, 64),
                            (65, 65),
                            (66, 66),
                            (67, 67),
                            (68, 68),
                            (69, 69),
                            (70, 70),
                            (71, 71),
                            (72, 72),
                            (73, 73),
                            (74, 74),
                            (75, 75),
                            (76, 76),
                            (77, 77),
                            (78, 78),
                            (79, 79),
                            (80, 80),
                            (81, 81),
                            (82, 82),
                            (83, 83),
                            (84, 84),
                            (85, 85),
                            (86, 86),
                            (87, 87),
                            (88, 88),
                            (89, 89),
                            (90, 90),
                            (91, 91),
                            (92, 92),
                            (93, 93),
                            (94, 94),
                            (95, 95),
                            (96, 96),
                            (97, 97),
                            (98, 98),
                            (99, 99),
                            (100, 100),
                        ],
                        default=None,
                        null=True,
                        verbose_name="passage dice",
                    ),
                ),
                (
                    "choice_dice",
                    models.PositiveSmallIntegerField(
                        choices=[
                            (1, 1),
                            (2, 2),
                            (3, 3),
                            (4, 4),
                            (5, 5),
                            (6, 6),
                            (7, 7),
                            (8, 8),
                            (9, 9),
                            (10, 10),
                            (11, 11),
                            (12, 12),
                            (13, 13),
                            (14, 14),
                            (15, 15),
                            (16, 16),
                            (17, 17),
                            (18, 18),
                            (19, 19),
                            (20, 20),
                            (21, 21),
                            (22, 22),
                            (23, 23),
                            (24, 24),
                            (25, 25),
                            (26, 26),
                            (27, 27),
                            (28, 28),
                            (29, 29),
                            (30, 30),
                            (31, 31),
                            (32, 32),
                            (33, 33),
                            (34, 34),
                            (35, 35),
                            (36, 36),
                            (37, 37),
                            (38, 38),
                            (39, 39),
                            (40, 40),
                            (41, 41),
                            (42, 42),
                            (43, 43),
                            (44, 44),
                            (45, 45),
                            (46, 46),
                            (47, 47),
                            (48, 48),
                            (49, 49),
                            (50, 50),
                            (51, 51),
                            (52, 52),
                            (53, 53),
                            (54, 54),
                            (55, 55),
                            (56, 56),
                            (57, 57),
                            (58, 58),
                            (59, 59),
                            (60, 60),
                            (61, 61),
                            (62, 62),
                            (63, 63),
                            (64, 64),
                            (65, 65),
                            (66, 66),
                            (67, 67),
                            (68, 68),
                            (69, 69),
                            (70, 70),
                            (71, 71),
                            (72, 72),
                            (73, 73),
                            (74, 74),
                            (75, 75),
                            (76, 76),
                            (77, 77),
                            (78, 78),
                            (79, 79),
                            (80, 80),
                            (81, 81),
                            (82, 82),
                            (83, 83),
                            (84, 84),
                            (85, 85),
                            (86, 86),
                            (87, 87),
                            (88, 88),
                            (89, 89),
                            (90, 90),
                            (91, 91),
                            (92, 92),
                            (93, 93),
                            (94, 94),
                            (95, 95),
                            (96, 96),
                            (97, 97),
                            (98, 98),
                            (99, 99),
                            (100, 100),
                        ],
                        default=None,
                        null=True,
                        verbose_name="choice dice",
                    ),
                ),
                (
                    "purposed",
                    models.PositiveSmallIntegerField(
                        choices=[
                            (1, "Problem #1"),
                            (2, "Problem #2"),
                            (3, "Problem #3"),
                            (4, "Problem #4"),
                            (5, "Problem #5"),
                            (6, "Problem #6"),
                            (7, "Problem #7"),
                            (8, "Problem #8"),
                        ],
                        default=None,
                        null=True,
                        verbose_name="accepted problem",
                    ),
                ),
                (
                    "rejected",
                    models.JSONField(default=list, verbose_name="rejected problems"),
                ),
                (
                    "participation",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="participation.participation",
                        verbose_name="participation",
                    ),
                ),
                (
                    "pool",
                    models.ForeignKey(
                        default=None,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="draw.pool",
                        verbose_name="pool",
                    ),
                ),
                (
                    "round",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="draw.round",
                        verbose_name="round",
                    ),
                ),
            ],
            options={
                "verbose_name": "team draw",
                "verbose_name_plural": "team draws",
                "ordering": (
                    "round__draw__tournament__name",
                    "round__number",
                    "pool__letter",
                    "passage_index",
                ),
            },
        ),
        migrations.AddField(
            model_name="pool",
            name="current_team",
            field=models.ForeignKey(
                default=None,
                help_text="The current team that is selecting its problem.",
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name="+",
                to="draw.teamdraw",
                verbose_name="current team",
            ),
        ),
        migrations.AddField(
            model_name="pool",
            name="round",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE, to="draw.round"
            ),
        ),
        migrations.AddField(
            model_name="draw",
            name="current_round",
            field=models.ForeignKey(
                default=None,
                help_text="The current round where teams select their problems.",
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name="+",
                to="draw.round",
                verbose_name="current round",
            ),
        ),
        migrations.AddField(
            model_name="draw",
            name="tournament",
            field=models.OneToOneField(
                help_text="The associated tournament.",
                on_delete=django.db.models.deletion.CASCADE,
                to="participation.tournament",
                verbose_name="tournament",
            ),
        ),
    ]