|
|
@ -1,7 +1,7 @@ |
|
|
|
|
|
|
|
|
from django.db import models |
|
|
from django.db import models |
|
|
|
|
|
|
|
|
from apps.account.models import User, ProfessorUser |
|
|
|
|
|
|
|
|
from apps.account.models import User, User |
|
|
from apps.course.models import Course |
|
|
from apps.course.models import Course |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -85,6 +85,7 @@ class ChatMessage(models.Model): |
|
|
blank=True, |
|
|
blank=True, |
|
|
null=True |
|
|
null=True |
|
|
) |
|
|
) |
|
|
|
|
|
is_read = models.BooleanField(default=False, verbose_name="Is Read") |
|
|
|
|
|
|
|
|
sent_at = models.DateTimeField(auto_now_add=True, verbose_name="Sent At") |
|
|
sent_at = models.DateTimeField(auto_now_add=True, verbose_name="Sent At") |
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="Updated At") |
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="Updated At") |
|
|
@ -95,4 +96,25 @@ class ChatMessage(models.Model): |
|
|
return f"Message from {self.sender} in {self.room}" |
|
|
return f"Message from {self.sender} in {self.room}" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MessageReadStatus(models.Model): |
|
|
|
|
|
user = models.ForeignKey( |
|
|
|
|
|
User, |
|
|
|
|
|
on_delete=models.CASCADE, |
|
|
|
|
|
related_name="read_statuses", |
|
|
|
|
|
verbose_name="User" |
|
|
|
|
|
) |
|
|
|
|
|
message = models.ForeignKey( |
|
|
|
|
|
ChatMessage, |
|
|
|
|
|
on_delete=models.CASCADE, |
|
|
|
|
|
related_name="read_statuses", |
|
|
|
|
|
verbose_name="Message" |
|
|
|
|
|
) |
|
|
|
|
|
is_read = models.BooleanField(default=False, verbose_name="Is Read") |
|
|
|
|
|
read_at = models.DateTimeField(null=True, blank=True, verbose_name="Read At") |
|
|
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
|
|
unique_together = ("user", "message") # جلوگیری از ثبت تکراری |
|
|
|
|
|
|
|
|
|
|
|
def __str__(self): |
|
|
|
|
|
return f"User {self.user.fullname} read Message {self.message.id}: {self.is_read}" |
|
|
|
|
|
|