from django.db import models from apps.account.models import User, ProfessorUser from apps.course.models import Course class ChatMessage(models.Model): class ChatTypeChoices(models.TextChoices): TEXT = 'text', 'Text' FILE = 'file', 'File' AUDIO = 'audio', 'Audio' IMAGE = 'image', 'Image' course = models.ForeignKey( Course, on_delete=models.CASCADE, related_name="messages", verbose_name="Course" ) sender = models.ForeignKey( User, on_delete=models.CASCADE, related_name="messages_sent", verbose_name="Sender" ) recipient = models.ForeignKey( User, on_delete=models.CASCADE, related_name="messages_received", verbose_name="Recipient", null=True, blank=True ) content = models.TextField(verbose_name="Message Content") content_type = models.CharField( max_length=10, choices=ChatTypeChoices.choices, default=ChatTypeChoices.TEXT, verbose_name="Chat Type" ) content_size = models.PositiveIntegerField( verbose_name="Content Size (bytes)", blank=True, null=True ) is_to_professor = models.BooleanField(default=False, verbose_name="Is to Professor") sent_at = models.DateTimeField(auto_now_add=True, verbose_name="Sent At") updated_at = models.DateTimeField(auto_now=True, verbose_name="Updated At") deleted_at = models.DateTimeField(null=True, blank=True, verbose_name="Deleted At") is_deleted = models.BooleanField(default=False, verbose_name="Is deleted") def __str__(self): return f"Message from {self.sender} to {self.recipient or 'Group'} in {self.course.title}"