khana/khana/communication/models.py

50 lines
1.6 KiB
Python

"""Modelisation de tout ce qui touche à la communication entre utilisateurs.
Cette application gère:
* Les messages
* Ah, c'est tout en fait :-)
"""
from datetime import datetime
from django.db import models
from django.contrib.auth import get_user_model
from khana.base.models import Markdownizable
User = get_user_model()
class Message(Markdownizable):
"""Représente un message échangé entre deux utilisateurs.
Attributes:
sender (User): Association à l'utilisateur qui a écrit le message.
recipient (User): Association au destinataire du message.
written_at (datetime): Date à laquelle le message a été enregistré.
read_at (datetime): Date à laquelle le message a été lu par son destinataire.
title (str): Titre ou sujet du message.
body (text): Contenu du message.
"""
sender = models.ForeignKey(
User, on_delete=models.CASCADE, related_name="sent_messages"
)
written_at = models.DateTimeField(auto_now_add=True, verbose_name="Date of writing")
recipient = models.ForeignKey(
User, on_delete=models.CASCADE, related_name="received_messages"
)
read_at = models.DateTimeField(auto_now=True, verbose_name="Date of reading")
title = models.CharField(max_length=255, verbose_name="Title")
body = models.TextField(null=True, blank=True, verbose_name="Message")
@property
def is_read(self):
return self.read_at is not None or self.read_at <= datetime.today()
def __str__(self):
return "%s - %s : %s" % (self.sender, self.written_at, self.title)