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

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [("subscription", "0001_initial"), ("counter", "0001_initial")]

    operations = [
        migrations.CreateModel(
            name="Launderette",
            fields=[
                (
                    "id",
                    models.AutoField(
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                        auto_created=True,
                    ),
                ),
                ("name", models.CharField(max_length=30, verbose_name="name")),
                (
                    "counter",
                    models.OneToOneField(
                        related_name="launderette",
                        verbose_name="counter",
                        to="counter.Counter",
                    ),
                ),
            ],
            options={"verbose_name": "Launderette"},
        ),
        migrations.CreateModel(
            name="Machine",
            fields=[
                (
                    "id",
                    models.AutoField(
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                        auto_created=True,
                    ),
                ),
                ("name", models.CharField(max_length=30, verbose_name="name")),
                (
                    "type",
                    models.CharField(
                        choices=[("WASHING", "Washing"), ("DRYING", "Drying")],
                        max_length=10,
                        verbose_name="type",
                    ),
                ),
                (
                    "is_working",
                    models.BooleanField(verbose_name="is working", default=True),
                ),
                (
                    "launderette",
                    models.ForeignKey(
                        verbose_name="launderette",
                        to="launderette.Launderette",
                        related_name="machines",
                    ),
                ),
            ],
            options={"verbose_name": "Machine"},
        ),
        migrations.CreateModel(
            name="Slot",
            fields=[
                (
                    "id",
                    models.AutoField(
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                        auto_created=True,
                    ),
                ),
                ("start_date", models.DateTimeField(verbose_name="start date")),
                (
                    "type",
                    models.CharField(
                        choices=[("WASHING", "Washing"), ("DRYING", "Drying")],
                        max_length=10,
                        verbose_name="type",
                    ),
                ),
                (
                    "machine",
                    models.ForeignKey(
                        verbose_name="machine",
                        to="launderette.Machine",
                        related_name="slots",
                    ),
                ),
            ],
            options={"verbose_name": "Slot", "ordering": ["start_date"]},
        ),
        migrations.CreateModel(
            name="Token",
            fields=[
                (
                    "id",
                    models.AutoField(
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                        auto_created=True,
                    ),
                ),
                ("name", models.CharField(max_length=5, verbose_name="name")),
                (
                    "type",
                    models.CharField(
                        choices=[("WASHING", "Washing"), ("DRYING", "Drying")],
                        max_length=10,
                        verbose_name="type",
                    ),
                ),
                (
                    "borrow_date",
                    models.DateTimeField(
                        null=True, verbose_name="borrow date", blank=True
                    ),
                ),
                (
                    "launderette",
                    models.ForeignKey(
                        verbose_name="launderette",
                        to="launderette.Launderette",
                        related_name="tokens",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        null=True,
                        related_name="tokens",
                        verbose_name="user",
                        to="core.User",
                        blank=True,
                    ),
                ),
            ],
            options={"verbose_name": "Token", "ordering": ["type", "name"]},
        ),
        migrations.AddField(
            model_name="slot",
            name="token",
            field=models.ForeignKey(
                null=True,
                related_name="slots",
                verbose_name="token",
                to="launderette.Token",
                blank=True,
            ),
        ),
        migrations.AddField(
            model_name="slot",
            name="user",
            field=models.ForeignKey(
                verbose_name="user", to="core.User", related_name="slots"
            ),
        ),
        migrations.AlterUniqueTogether(
            name="token", unique_together=set([("name", "launderette", "type")])
        ),
    ]