from django.db import models from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver class Organization(models.Model): name = models.CharField(max_length=255) slug = models.SlugField(unique=True) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.name class Profile(models.Model): ROLE_CHOICES = ( ('SUPER_ADMIN', 'Super Admin'), ('ORG_ADMIN', 'Organization Admin'), ('USER', 'User'), ) user = models.OneToOneField(User, on_delete=models.CASCADE) organization = models.ForeignKey(Organization, on_delete=models.SET_NULL, null=True, blank=True, related_name='members') role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='USER') def __str__(self): return f"{self.user.username} - {self.role}" @receiver(post_save, sender=User) def create_user_profile(sender, instance, created, **kwargs): if created: Profile.objects.create(user=instance) @receiver(post_save, sender=User) def save_user_profile(sender, instance, **kwargs): instance.profile.save() class ChatMessage(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) message = models.TextField() response = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return f"Chat at {self.created_at}"