Modélisation de données

This commit is contained in:
Etienne GILLE
2026-02-13 16:04:01 +01:00
parent a9a8256137
commit e3eb424290
19 changed files with 468 additions and 0 deletions

75
compterendu/models.py Normal file
View File

@@ -0,0 +1,75 @@
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