class UserProfile(models.Model):
username = models.CharField(
max_length=70,
unique=True,
)
email = models.EmailField(
unique=True,
)
bio = models.TextField(
null=True,
blank=True,
)
class Message(models.Model):
sender = models.ForeignKey(
to=UserProfile,
related_name="sent_messages",
on_delete=models.CASCADE,
)
receiver = models.ForeignKey(
to=UserProfile,
related_name="received_messages",
on_delete=models.CASCADE,
)
content = models.TextField()
timestamp = models.DateTimeField(
auto_now_add=True,
)
is_read = models.BooleanField(
default=False,
)
def mark_as_read(self) -> None:
self.is_read = True
def mark_as_unread(self) -> None:
self.is_read = False
def reply_to_message(self, reply_content: str, receiver: UserProfile) -> object:
return Message(
sender=self.receiver,
receiver=receiver,
content=reply_content
)
def forward_message(self, sender: UserProfile, receiver: UserProfile) -> object:
return Message(
sender=sender,
receiver=receiver,
content=self.content,
)