from django.db import models from django.contrib.auth import get_user_model import uuid import secrets User = get_user_model() class MasterKey(models.Model): key_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) key_value = models.CharField(max_length=255, unique=True) description = models.CharField(max_length=255, blank=True) created_at = models.DateTimeField(auto_now_add=True) last_used = models.DateTimeField(null=True, blank=True) is_active = models.BooleanField(default=True) permissions = models.JSONField(default=list) def __str__(self): return f"Master Key: {self.key_id}" @classmethod def generate_key(cls, description="", permissions=None): """Generate a new secure master key""" if permissions is None: permissions = [] # Generate a secure random token key_value = secrets.token_urlsafe(64) return cls.objects.create( key_value=key_value, description=description, permissions=permissions ) class AiModel(models.Model): name = models.CharField(max_length=255) class Conversation(models.Model): title = models.CharField(max_length=255) user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="conversations") class Message(models.Model): content = models.TextField() role = models.CharField(max_length=255) conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE, related_name="messages")