# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

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

    operations = [
        migrations.CreateModel(
            name="BroadcastFormat",
            fields=[
                (
                    "id",
                    models.AutoField(
                        verbose_name="ID",
                        serialize=False,
                        auto_created=True,
                        primary_key=True,
                    ),
                ),
                ("format", models.CharField(max_length=32, verbose_name="Format")),
                (
                    "slug",
                    models.SlugField(unique=True, max_length=32, verbose_name="Slug"),
                ),
                (
                    "color",
                    models.CharField(
                        default=b"#ffffff", max_length=7, verbose_name="Color"
                    ),
                ),
                (
                    "text_color",
                    models.CharField(
                        default=b"#000000", max_length=7, verbose_name="Text color"
                    ),
                ),
                ("enabled", models.BooleanField(default=True, verbose_name="Enabled")),
            ],
            options={
                "ordering": ("format",),
                "verbose_name": "Broadcast format",
                "verbose_name_plural": "Broadcast formats",
            },
        ),
        migrations.CreateModel(
            name="Host",
            fields=[
                (
                    "id",
                    models.AutoField(
                        verbose_name="ID",
                        serialize=False,
                        auto_created=True,
                        primary_key=True,
                    ),
                ),
                ("name", models.CharField(max_length=128, verbose_name="Name")),
                (
                    "email",
                    models.EmailField(
                        max_length=254, verbose_name="E-Mail", blank=True
                    ),
                ),
                ("website", models.URLField(verbose_name="Website", blank=True)),
            ],
            options={
                "ordering": ("name",),
                "verbose_name": "Host",
                "verbose_name_plural": "Hosts",
            },
        ),
        migrations.CreateModel(
            name="MusicFocus",
            fields=[
                (
                    "id",
                    models.AutoField(
                        verbose_name="ID",
                        serialize=False,
                        auto_created=True,
                        primary_key=True,
                    ),
                ),
                ("focus", models.CharField(max_length=32, verbose_name="Focus")),
                (
                    "abbrev",
                    models.CharField(
                        unique=True, max_length=4, verbose_name="Abbreviation"
                    ),
                ),
                (
                    "slug",
                    models.SlugField(unique=True, max_length=32, verbose_name="Slug"),
                ),
                (
                    "button",
                    models.ImageField(
                        upload_to=b"buttons",
                        null=True,
                        verbose_name="Button image",
                        blank=True,
                    ),
                ),
                (
                    "button_hover",
                    models.ImageField(
                        upload_to=b"buttons",
                        null=True,
                        verbose_name="Button image (hover)",
                        blank=True,
                    ),
                ),
                (
                    "big_button",
                    models.ImageField(
                        upload_to=b"buttons",
                        null=True,
                        verbose_name="Big button image",
                        blank=True,
                    ),
                ),
            ],
            options={
                "ordering": ("focus",),
                "verbose_name": "Music focus",
                "verbose_name_plural": "Music focus",
            },
        ),
        migrations.CreateModel(
            name="Note",
            fields=[
                (
                    "id",
                    models.AutoField(
                        verbose_name="ID",
                        serialize=False,
                        auto_created=True,
                        primary_key=True,
                    ),
                ),
                ("title", models.CharField(max_length=128, verbose_name="Title")),
                ("content", models.TextField(verbose_name="Content")),
                (
                    "status",
                    models.IntegerField(
                        default=1,
                        verbose_name="Status",
                        choices=[
                            (0, "Cancellation"),
                            (1, "Recommendation"),
                            (2, "Repetition"),
                        ],
                    ),
                ),
                (
                    "cba_entry_id",
                    models.IntegerField(
                        null=True, verbose_name="CBA entry ID", blank=True
                    ),
                ),
                ("start", models.DateTimeField(editable=False)),
                ("created", models.DateTimeField(auto_now_add=True)),
                ("last_updated", models.DateTimeField(auto_now=True)),
            ],
            options={
                "ordering": ("timeslot",),
                "verbose_name": "Note",
                "verbose_name_plural": "Notes",
            },
        ),
        migrations.CreateModel(
            name="ProgramSlot",
            fields=[
                (
                    "id",
                    models.AutoField(
                        verbose_name="ID",
                        serialize=False,
                        auto_created=True,
                        primary_key=True,
                    ),
                ),
                (
                    "byweekday",
                    models.IntegerField(
                        verbose_name="Weekday",
                        choices=[
                            (0, "Monday"),
                            (1, "Tuesday"),
                            (2, "Wednesday"),
                            (3, "Thursday"),
                            (4, "Friday"),
                            (5, "Saturday"),
                            (6, "Sunday"),
                        ],
                    ),
                ),
                ("dstart", models.DateField(verbose_name="First date")),
                ("tstart", models.TimeField(verbose_name="Start time")),
                ("tend", models.TimeField(verbose_name="End time")),
                ("until", models.DateField(verbose_name="Last date")),
                (
                    "is_repetition",
                    models.BooleanField(default=False, verbose_name="Is repetition"),
                ),
                (
                    "automation_id",
                    models.IntegerField(
                        blank=True, null=True, verbose_name="Automation ID", choices=[]
                    ),
                ),
                ("created", models.DateTimeField(auto_now_add=True)),
                ("last_updated", models.DateTimeField(auto_now=True)),
            ],
            options={
                "ordering": ("dstart", "tstart"),
                "verbose_name": "Program slot",
                "verbose_name_plural": "Program slots",
            },
        ),
        migrations.CreateModel(
            name="RRule",
            fields=[
                (
                    "id",
                    models.AutoField(
                        verbose_name="ID",
                        serialize=False,
                        auto_created=True,
                        primary_key=True,
                    ),
                ),
                (
                    "name",
                    models.CharField(unique=True, max_length=32, verbose_name="Name"),
                ),
                (
                    "freq",
                    models.IntegerField(
                        verbose_name="Frequency",
                        choices=[(1, "Monthly"), (2, "Weekly"), (3, "Daily")],
                    ),
                ),
                ("interval", models.IntegerField(default=1, verbose_name="Interval")),
                (
                    "bysetpos",
                    models.IntegerField(
                        blank=True,
                        null=True,
                        verbose_name="Set position",
                        choices=[
                            (1, "First"),
                            (2, "Second"),
                            (3, "Third"),
                            (4, "Fourth"),
                            (5, "Fifth"),
                            (-1, "Last"),
                        ],
                    ),
                ),
                (
                    "count",
                    models.IntegerField(null=True, verbose_name="Count", blank=True),
                ),
            ],
            options={
                "ordering": ("-freq", "interval", "bysetpos"),
                "verbose_name": "Recurrence rule",
                "verbose_name_plural": "Recurrence rules",
            },
        ),
        migrations.CreateModel(
            name="Show",
            fields=[
                (
                    "id",
                    models.AutoField(
                        verbose_name="ID",
                        serialize=False,
                        auto_created=True,
                        primary_key=True,
                    ),
                ),
                ("name", models.CharField(max_length=255, verbose_name="Name")),
                (
                    "slug",
                    models.CharField(unique=True, max_length=255, verbose_name="Slug"),
                ),
                (
                    "image",
                    models.ImageField(
                        upload_to=b"show_images",
                        null=True,
                        verbose_name="Image",
                        blank=True,
                    ),
                ),
                (
                    "image_enabled",
                    models.BooleanField(default=True, verbose_name="show Image"),
                ),
                (
                    "short_description",
                    models.CharField(max_length=64, verbose_name="Short description"),
                ),
                (
                    "description",
                    models.TextField(null=True, verbose_name="Description", blank=True),
                ),
                (
                    "email",
                    models.EmailField(
                        max_length=254, null=True, verbose_name="E-Mail", blank=True
                    ),
                ),
                (
                    "website",
                    models.URLField(null=True, verbose_name="Website", blank=True),
                ),
                (
                    "cba_series_id",
                    models.IntegerField(
                        null=True, verbose_name="CBA series ID", blank=True
                    ),
                ),
                (
                    "automation_id",
                    models.IntegerField(
                        blank=True, null=True, verbose_name="Automation ID", choices=[]
                    ),
                ),
                ("created", models.DateTimeField(auto_now_add=True)),
                ("last_updated", models.DateTimeField(auto_now=True)),
                (
                    "broadcastformat",
                    models.ForeignKey(
                        related_name="shows",
                        on_delete=models.CASCADE,
                        verbose_name="Broadcast format",
                        to="program.BroadcastFormat",
                    ),
                ),
                (
                    "hosts",
                    models.ManyToManyField(
                        related_name="shows",
                        verbose_name="Hosts",
                        to="program.Host",
                        blank=True,
                    ),
                ),
                (
                    "musicfocus",
                    models.ManyToManyField(
                        related_name="shows",
                        verbose_name="Music focus",
                        to="program.MusicFocus",
                        blank=True,
                    ),
                ),
                (
                    "owners",
                    models.ManyToManyField(
                        related_name="shows",
                        verbose_name="Owners",
                        to=settings.AUTH_USER_MODEL,
                        blank=True,
                    ),
                ),
                (
                    "predecessor",
                    models.ForeignKey(
                        related_name="successors",
                        on_delete=models.CASCADE,
                        verbose_name="Predecessor",
                        blank=True,
                        to="program.Show",
                        null=True,
                    ),
                ),
            ],
            options={
                "ordering": ("slug",),
                "verbose_name": "Show",
                "verbose_name_plural": "Shows",
            },
        ),
        migrations.CreateModel(
            name="ShowInformation",
            fields=[
                (
                    "id",
                    models.AutoField(
                        verbose_name="ID",
                        serialize=False,
                        auto_created=True,
                        primary_key=True,
                    ),
                ),
                (
                    "information",
                    models.CharField(max_length=32, verbose_name="Information"),
                ),
                (
                    "abbrev",
                    models.CharField(
                        unique=True, max_length=4, verbose_name="Abbreviation"
                    ),
                ),
                (
                    "slug",
                    models.SlugField(unique=True, max_length=32, verbose_name="Slug"),
                ),
                (
                    "button",
                    models.ImageField(
                        upload_to=b"buttons",
                        null=True,
                        verbose_name="Button image",
                        blank=True,
                    ),
                ),
                (
                    "button_hover",
                    models.ImageField(
                        upload_to=b"buttons",
                        null=True,
                        verbose_name="Button image (hover)",
                        blank=True,
                    ),
                ),
                (
                    "big_button",
                    models.ImageField(
                        upload_to=b"buttons",
                        null=True,
                        verbose_name="Big button image",
                        blank=True,
                    ),
                ),
            ],
            options={
                "ordering": ("information",),
                "verbose_name": "Show information",
                "verbose_name_plural": "Show information",
            },
        ),
        migrations.CreateModel(
            name="ShowTopic",
            fields=[
                (
                    "id",
                    models.AutoField(
                        verbose_name="ID",
                        serialize=False,
                        auto_created=True,
                        primary_key=True,
                    ),
                ),
                ("topic", models.CharField(max_length=32, verbose_name="Show topic")),
                (
                    "abbrev",
                    models.CharField(
                        unique=True, max_length=4, verbose_name="Abbreviation"
                    ),
                ),
                (
                    "slug",
                    models.SlugField(unique=True, max_length=32, verbose_name="Slug"),
                ),
                (
                    "button",
                    models.ImageField(
                        upload_to=b"buttons",
                        null=True,
                        verbose_name="Button image",
                        blank=True,
                    ),
                ),
                (
                    "button_hover",
                    models.ImageField(
                        upload_to=b"buttons",
                        null=True,
                        verbose_name="Button image (hover)",
                        blank=True,
                    ),
                ),
                (
                    "big_button",
                    models.ImageField(
                        upload_to=b"buttons",
                        null=True,
                        verbose_name="Big button image",
                        blank=True,
                    ),
                ),
            ],
            options={
                "ordering": ("topic",),
                "verbose_name": "Show topic",
                "verbose_name_plural": "Show topics",
            },
        ),
        migrations.CreateModel(
            name="TimeSlot",
            fields=[
                (
                    "id",
                    models.AutoField(
                        verbose_name="ID",
                        serialize=False,
                        auto_created=True,
                        primary_key=True,
                    ),
                ),
                ("start", models.DateTimeField(unique=True, verbose_name="Start time")),
                ("end", models.DateTimeField(verbose_name="End time")),
                (
                    "programslot",
                    models.ForeignKey(
                        related_name="timeslots",
                        on_delete=models.CASCADE,
                        verbose_name="Program slot",
                        to="program.ProgramSlot",
                    ),
                ),
                (
                    "show",
                    models.ForeignKey(
                        related_name="timeslots",
                        on_delete=models.CASCADE,
                        editable=False,
                        to="program.Show",
                    ),
                ),
            ],
            options={
                "ordering": ("start", "end"),
                "verbose_name": "Time slot",
                "verbose_name_plural": "Time slots",
            },
        ),
        migrations.AddField(
            model_name="show",
            name="showinformation",
            field=models.ManyToManyField(
                related_name="shows",
                verbose_name="Show information",
                to="program.ShowInformation",
                blank=True,
            ),
        ),
        migrations.AddField(
            model_name="show",
            name="showtopic",
            field=models.ManyToManyField(
                related_name="shows",
                verbose_name="Show topic",
                to="program.ShowTopic",
                blank=True,
            ),
        ),
        migrations.AddField(
            model_name="programslot",
            name="rrule",
            field=models.ForeignKey(
                related_name="programslots",
                on_delete=models.CASCADE,
                verbose_name="Recurrence rule",
                to="program.RRule",
            ),
        ),
        migrations.AddField(
            model_name="programslot",
            name="show",
            field=models.ForeignKey(
                related_name="programslots",
                on_delete=models.CASCADE,
                verbose_name="Show",
                to="program.Show",
            ),
        ),
        migrations.AddField(
            model_name="note",
            name="show",
            field=models.ForeignKey(
                related_name="notes",
                on_delete=models.CASCADE,
                editable=False,
                to="program.Show",
            ),
        ),
        migrations.AddField(
            model_name="note",
            name="timeslot",
            field=models.OneToOneField(
                verbose_name="Time slot",
                on_delete=models.CASCADE,
                to="program.TimeSlot",
            ),
        ),
        migrations.AlterUniqueTogether(
            name="programslot",
            unique_together=set([("rrule", "byweekday", "dstart", "tstart")]),
        ),
    ]