feat: Configuration des compétences par cycle [#16]

This commit is contained in:
N3WT DE COMPET
2025-05-18 00:45:49 +02:00
parent 2888f8dcce
commit 4e5aab6db7
29 changed files with 1001 additions and 82 deletions

View File

@ -165,31 +165,24 @@ class Competency(models.Model):
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.
Peut référencer une compétence de référence OU une compétence custom propre à l'établissement.
"""
establishment = models.ForeignKey('Establishment.Establishment', on_delete=models.CASCADE)
competency = models.ForeignKey(Competency, on_delete=models.CASCADE)
is_selected = models.BooleanField(default=False)
competency = models.ForeignKey(
Competency, on_delete=models.CASCADE, null=True, blank=True,
help_text="Compétence de référence (optionnelle si custom)"
)
custom_name = models.TextField(null=True, blank=True, help_text="Nom de la compétence custom")
custom_category = models.ForeignKey(
Category, on_delete=models.CASCADE, null=True, blank=True,
help_text="Catégorie de la compétence custom"
)
is_required = models.BooleanField(default=True)
class Meta:
unique_together = ('establishment', 'competency')
unique_together = ('establishment', 'competency', 'custom_name', 'custom_category')
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}"
if self.competency:
return f"{self.establishment.name} - {self.competency.name}"
return f"{self.establishment.name} - {self.custom_name} (custom)"