from django.db import models import uuid class BaseModel(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) # Timestamps created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: abstract = True class EventQuerySet(models.QuerySet): def available_to(self, user): """Unavailable events are hidden from everyone but staff, so they can still be prepared before being opened up.""" if user is not None and user.is_staff: return self return self.filter(is_available=True) class Event(BaseModel): name = models.CharField(max_length=255) path = models.SlugField(max_length=100, unique=True) is_available = models.BooleanField(default=True) objects = EventQuerySet.as_manager() def __str__(self) -> str: return self.name