You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

60 lines
1.8 KiB

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}"