import uuid from django.db import models class ScheduleEntry(models.Model): STATUS_CHOICES = [("busy", "Occupé"), ("free", "Disponible"), ("unavailable", "Indisponible")] title = models.CharField(max_length=120, blank=True) description = models.TextField(blank=True) start_date = models.DateField() end_date = models.DateField() start_time = models.TimeField() end_time = models.TimeField() status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="busy") color = models.CharField(max_length=16, blank=True, default="") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: ordering = ["start_date", "start_time"] indexes = [models.Index(fields=["start_date", "end_date"], name="core_sched_dates_idx")] class AvailabilityRequest(models.Model): STATUS_CHOICES = [("pending", "En attente"), ("accepted", "Acceptée"), ("refused", "Refusée")] public_token = models.UUIDField(default=uuid.uuid4, unique=True, editable=False) guest_name = models.CharField(max_length=80) message = models.CharField(max_length=500, blank=True) status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="pending") duration_minutes = models.PositiveIntegerField(null=True, blank=True) available_until = models.DateTimeField(null=True, blank=True) response_message = models.CharField(max_length=500, blank=True) requested_at = models.DateTimeField(auto_now_add=True) responded_at = models.DateTimeField(null=True, blank=True) requester_ip = models.GenericIPAddressField(null=True, blank=True) class Meta: ordering = ["-requested_at"] indexes = [models.Index(fields=["status", "requested_at"], name="core_req_status_idx")]