from django.conf import settings 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="Venue", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("name", models.CharField(max_length=80)), ("code", models.SlugField(unique=True)), ]), migrations.CreateModel(name="Workshop", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("title", models.CharField(max_length=100)), ("slug", models.SlugField(unique=True)), ("starts_at", models.DateTimeField()), ("capacity", models.PositiveIntegerField()), ("remaining", models.PositiveIntegerField()), ("published", models.BooleanField(default=False)), ("venue", models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name="workshops", to="workshops.venue")), ], options={"ordering": ["starts_at", "pk"], "constraints": [ models.CheckConstraint(condition=models.Q(capacity__gte=1), name="capacity_positive"), models.CheckConstraint(condition=models.Q(remaining__lte=models.F("capacity")), name="remaining_within_capacity"), ]}), migrations.CreateModel(name="Reservation", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("seats", models.PositiveSmallIntegerField()), ("created_at", models.DateTimeField(auto_now_add=True)), ("user", models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), ("workshop", models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name="reservations", to="workshops.workshop")), ], options={"constraints": [ models.UniqueConstraint(fields=("workshop", "user"), name="one_reservation_per_user"), models.CheckConstraint(condition=models.Q(seats__gte=1, seats__lte=4), name="seats_one_to_four"), ]}), ]