updated to selfdelete inheritance
This commit is contained in:
@@ -3,8 +3,21 @@ from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils import timezone
|
||||
from vontor_cz.custom_fields import WebPImageField
|
||||
from vontor_cz.models import SoftDeleteModel
|
||||
|
||||
class Chat(SoftDeleteModel):
|
||||
AUTHOR_FIELD = 'owner'
|
||||
|
||||
class ChatType(models.TextChoices):
|
||||
DM = 'DM', 'Direct Message'
|
||||
GROUP = 'GROUP', 'Group'
|
||||
|
||||
chat_type = models.CharField(
|
||||
max_length=10,
|
||||
choices=ChatType.choices,
|
||||
default=ChatType.GROUP,
|
||||
)
|
||||
|
||||
class Chat(models.Model):
|
||||
owner = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
on_delete=models.SET_NULL,
|
||||
@@ -50,11 +63,19 @@ class Chat(models.Model):
|
||||
self.members.add(self.owner)
|
||||
self.moderators.add(self.owner)
|
||||
|
||||
def clean(self):
|
||||
if self.chat_type == self.ChatType.DM:
|
||||
member_count = self.members.count() if self.pk else 0
|
||||
if member_count > 2:
|
||||
raise ValidationError("A DM chat cannot have more than 2 members.")
|
||||
|
||||
def __str__(self):
|
||||
return f"Chat {self.id}"
|
||||
|
||||
|
||||
class Message(models.Model):
|
||||
class Message(SoftDeleteModel):
|
||||
AUTHOR_FIELD = 'sender'
|
||||
|
||||
chat = models.ForeignKey(Chat, related_name='messages', on_delete=models.CASCADE)
|
||||
|
||||
sender = models.ForeignKey(
|
||||
@@ -145,7 +166,7 @@ class Message(models.Model):
|
||||
return f"Message {self.id} from {self.sender}"
|
||||
|
||||
|
||||
class MessageHistory(models.Model):
|
||||
class MessageHistory(SoftDeleteModel):
|
||||
message = models.ForeignKey(
|
||||
Message,
|
||||
on_delete=models.CASCADE,
|
||||
@@ -158,7 +179,7 @@ class MessageHistory(models.Model):
|
||||
ordering = ['-archived_at']
|
||||
|
||||
|
||||
class MessageReaction(models.Model):
|
||||
class MessageReaction(SoftDeleteModel):
|
||||
message = models.ForeignKey(
|
||||
Message,
|
||||
on_delete=models.CASCADE,
|
||||
@@ -175,7 +196,7 @@ class MessageReaction(models.Model):
|
||||
return f"{self.user} reacted {self.emoji}"
|
||||
|
||||
|
||||
class MessageFile(models.Model):
|
||||
class MessageFile(SoftDeleteModel):
|
||||
message = models.ForeignKey(
|
||||
Message,
|
||||
on_delete=models.CASCADE,
|
||||
|
||||
Reference in New Issue
Block a user