from django.conf import settings from django.db import models from core.models.base import BaseModel class DemoEnvironment(BaseModel): class Status(models.TextChoices): ACTIVE = "active", "Active" EXPIRED = "expired", "Expired" CLEANED = "cleaned", "Cleaned" owner_user = models.OneToOneField( settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="demo_environment", ) workspace = models.OneToOneField( "workspaces.Workspace", on_delete=models.CASCADE, related_name="demo_environment", ) expires_at = models.DateTimeField() status = models.CharField(max_length=16, choices=Status.choices, default=Status.ACTIVE) seed_version = models.CharField(max_length=32, default="v1") cleaned_at = models.DateTimeField(blank=True, null=True) cleanup_error = models.TextField(blank=True) class Meta: db_table = "demo_environment" ordering = ("-created_at",) indexes = [ models.Index(fields=["status", "expires_at"], name="demo_status_expires_idx"), models.Index(fields=["owner_user"], name="demo_owner_user_idx"), models.Index(fields=["workspace"], name="demo_workspace_idx"), ] def __str__(self): return f"Demo {self.workspace_id} for {self.owner_user_id}"