mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
feat: Peuplement de la BDD avec les JSON d'entrée [#16]
This commit is contained in:
@ -130,4 +130,68 @@ class PaymentMode(models.Model):
|
||||
establishment = models.ForeignKey(Establishment, on_delete=models.CASCADE, related_name='payment_modes')
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.get_mode_display()} - {self.get_type_display()}"
|
||||
return f"{self.get_mode_display()} - {self.get_type_display()}"
|
||||
|
||||
class Domain(models.Model):
|
||||
name = models.CharField(max_length=255)
|
||||
cycle = models.IntegerField(choices=[(1, 'Cycle 1'), (2, 'Cycle 2'), (3, 'Cycle 3'), (4, 'Cycle 4')])
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name} (Cycle {self.cycle})"
|
||||
|
||||
|
||||
class Category(models.Model):
|
||||
name = models.CharField(max_length=255)
|
||||
domain = models.ForeignKey(Domain, on_delete=models.CASCADE, related_name='categories')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Competency(models.Model):
|
||||
name = models.TextField()
|
||||
end_of_cycle = models.BooleanField(default=False, null=True, blank=True)
|
||||
level = models.CharField(max_length=50, null=True, blank=True)
|
||||
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='competencies')
|
||||
|
||||
establishments = models.ManyToManyField(
|
||||
Establishment,
|
||||
through='EstablishmentCompetency',
|
||||
related_name='competencies',
|
||||
blank=True
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class EstablishmentCompetency(models.Model):
|
||||
"""
|
||||
Relation entre un établissement et une compétence.
|
||||
Permet de définir quelles compétences sont sélectionnées par un établissement.
|
||||
"""
|
||||
establishment = models.ForeignKey(Establishment, on_delete=models.CASCADE)
|
||||
competency = models.ForeignKey(Competency, on_delete=models.CASCADE)
|
||||
is_selected = models.BooleanField(default=False)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('establishment', 'competency')
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.establishment.name} - {self.competency.name}"
|
||||
|
||||
|
||||
class StudentCompetency(models.Model):
|
||||
"""
|
||||
Relation entre un élève et une compétence.
|
||||
Permet d'attribuer une note à un élève pour une compétence.
|
||||
"""
|
||||
student = models.ForeignKey('Subscriptions.Student', on_delete=models.CASCADE, related_name='competency_scores')
|
||||
competency = models.ForeignKey(Competency, on_delete=models.CASCADE, related_name='student_scores')
|
||||
score = models.DecimalField(max_digits=5, decimal_places=2, null=True, blank=True) # Note attribuée
|
||||
comment = models.TextField(blank=True, null=True) # Commentaire facultatif
|
||||
|
||||
class Meta:
|
||||
unique_together = ('student', 'competency')
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.student} - {self.competency.name} - Score: {self.score}"
|
||||
Reference in New Issue
Block a user