# Generated by Django 3.2.16 on 2023-01-31 15:49

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


class Migration(migrations.Migration):

    dependencies = [
        ("judge", "0147_alter_profile_timezone"),
    ]

    operations = [
        migrations.CreateModel(
            name="Course",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("name", models.CharField(max_length=128, verbose_name="course name")),
                ("about", models.TextField(verbose_name="organization description")),
                ("ending_time", models.DateTimeField(verbose_name="ending time")),
                (
                    "is_public",
                    models.BooleanField(default=False, verbose_name="publicly visible"),
                ),
                (
                    "slug",
                    models.SlugField(
                        help_text="Course name shown in URL",
                        max_length=128,
                        unique=True,
                        validators=[
                            django.core.validators.RegexValidator(
                                "^[-a-zA-Z0-9]+$", "Only alphanumeric and hyphens"
                            )
                        ],
                        verbose_name="course slug",
                    ),
                ),
                (
                    "is_open",
                    models.BooleanField(
                        default=False, verbose_name="public registration"
                    ),
                ),
                (
                    "image_url",
                    models.CharField(
                        blank=True,
                        default="",
                        max_length=150,
                        verbose_name="course image",
                    ),
                ),
                (
                    "organizations",
                    models.ManyToManyField(
                        blank=True,
                        help_text="If private, only these organizations may see the course",
                        to="judge.Organization",
                        verbose_name="organizations",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="CourseRole",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "role",
                    models.CharField(
                        choices=[
                            ("ST", "Student"),
                            ("AS", "Assistant"),
                            ("TE", "Teacher"),
                        ],
                        default="ST",
                        max_length=2,
                    ),
                ),
                (
                    "course",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="judge.course",
                        verbose_name="course",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="user_of_course",
                        to="judge.profile",
                        verbose_name="user",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="CourseResource",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "files",
                    models.FileField(
                        blank=True, null=True, upload_to="", verbose_name="course files"
                    ),
                ),
                (
                    "description",
                    models.CharField(
                        blank=True, max_length=150, verbose_name="description"
                    ),
                ),
                ("order", models.IntegerField(default=None, null=True)),
                (
                    "is_public",
                    models.BooleanField(default=False, verbose_name="publicly visible"),
                ),
                (
                    "course",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="judge.course",
                        verbose_name="course",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="CourseAssignment",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("points", models.FloatField(verbose_name="points")),
                (
                    "contest",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="judge.contest",
                        verbose_name="contest",
                    ),
                ),
                (
                    "course",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="judge.course",
                        verbose_name="course",
                    ),
                ),
            ],
        ),
    ]
