from django.db import models from djrichtextfield.models import RichTextField # Create your models here. class PostesBureau(models.Model): nom = models.CharField(max_length=255) def __str__(self): return self.nom class Assemblee(models.Model): nom = models.CharField(max_length=255) def __str__(self): return self.name class MembreAssemblee(models.Model): nom = models.CharField(max_length=255) prenom = models.CharField(max_length=255) assemblee = models.ForeignKey(Assemblee, on_delete=models.PROTECT, related_name="membres") poste_bureau = models.ForeignKey(PostesBureau, on_delete=models.SET_NULL, blank=True, null=True, related_name="+") @property def est_au_bureau(self): return self.poste_bureau is not None def __str__(self): return f"{self.prenom} {self.prenom} - {self.assemblee}" class Reunion(models.Model): nom = models.CharField(max_length=255) debut = models.DateTimeField() assemblee = models.ForeignKey(Assemblee, on_delete=models.CASCADE, related_name="reunions") def __str__(self): return f"{self.nom} de {self.assemblee} - {self.debut}" class Meta: ordering = ['assemblee', 'debut'] class PresenceReunion(models.Model): class TypePresence(models.IntegerChoices): PRESENT = 1, "Présent" EXCUSE = 2, "Excusé" ABSENT = 3, "Absent" reunion = models.ForeignKey(Reunion, on_delete=models.CASCADE, related_name="presences") membre = models.ForeignKey(Reunion, on_delete=models.CASCADE, related_name="presences_reunions") presence = models.PositiveSmallIntegerField(choices=TypePresence) def __str__(self): return f"{self.membre} - {self.reunion} - {self.presence.label}" class PointOrdreDuJour(models.Model): reunion = models.ForeignKey(Reunion, on_delete=models.CASCADE, related_name="points_ordre_du_jour") ordre = models.PositiveSmallIntegerField() titre = models.CharField(max_length=512) texte = RichTextField() def __str__(self): return f'{self.reunion} - {self.titre}' class Meta: ordering = ['reunion', 'ordre'] class DiscussionPointOrdreDuJour(models.Model): point = models.OneToOneField(PointOrdreDuJour, on_delete=models.PROTECT) texte = RichTextField() def __str__(self): return self.point