50 lines
1.6 KiB
Python
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)
|