mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
feat: Rattachement d'un dossier de compétences à une période scolaire
(configuration dans l'établissement) [#16]
This commit is contained in:
@ -56,7 +56,23 @@ def registration_photo_upload_to(instance, filename):
|
||||
return f"registration_files/dossier_rf_{instance.pk}/parent/{filename}"
|
||||
|
||||
def registration_bilan_form_upload_to(instance, filename):
|
||||
return f"registration_files/dossier_rf_{instance.pk}/bilan/{filename}"
|
||||
# On récupère le RegistrationForm lié à l'élève
|
||||
register_form = getattr(instance.student, 'registrationform', None)
|
||||
if register_form:
|
||||
pk = register_form.pk
|
||||
else:
|
||||
# fallback sur l'id de l'élève si pas de registrationform
|
||||
pk = instance.student.pk
|
||||
return f"registration_files/dossier_rf_{pk}/bilan/{filename}"
|
||||
|
||||
class BilanCompetence(models.Model):
|
||||
student = models.ForeignKey('Subscriptions.Student', on_delete=models.CASCADE, related_name='bilans')
|
||||
file = models.FileField(upload_to=registration_bilan_form_upload_to, null=True, blank=True)
|
||||
period = models.CharField(max_length=20, help_text="Période ex: T1-2024_2025, S1-2024_2025, A-2024_2025")
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.student} - {self.period}"
|
||||
|
||||
class Student(models.Model):
|
||||
"""
|
||||
@ -94,7 +110,6 @@ class Student(models.Model):
|
||||
birth_place = models.CharField(max_length=200, default="", blank=True)
|
||||
birth_postal_code = models.IntegerField(default=0, blank=True)
|
||||
attending_physician = models.CharField(max_length=200, default="", blank=True)
|
||||
bilan_form = models.FileField(null=True,blank=True, upload_to=registration_bilan_form_upload_to)
|
||||
|
||||
# Many-to-Many Relationship
|
||||
profiles = models.ManyToManyField('Auth.Profile', blank=True)
|
||||
@ -187,6 +202,15 @@ class Student(models.Model):
|
||||
return self.birth_date.strftime('%d-%m-%Y')
|
||||
return None
|
||||
|
||||
class BilanCompetence(models.Model):
|
||||
student = models.ForeignKey('Subscriptions.Student', on_delete=models.CASCADE, related_name='bilans')
|
||||
file = models.FileField(upload_to=registration_bilan_form_upload_to, null=True, blank=True)
|
||||
period = models.CharField(max_length=20, help_text="Période ex: T1-2024_2025, S1-2024_2025, A-2024_2025")
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.student} - {self.period}"
|
||||
|
||||
class RegistrationFileGroup(models.Model):
|
||||
name = models.CharField(max_length=255, default="")
|
||||
description = models.TextField(blank=True, null=True)
|
||||
@ -331,16 +355,22 @@ class StudentCompetency(models.Model):
|
||||
establishment_competency = models.ForeignKey('School.EstablishmentCompetency', on_delete=models.CASCADE, related_name='student_scores')
|
||||
score = models.IntegerField(null=True, blank=True)
|
||||
comment = models.TextField(blank=True, null=True)
|
||||
period = models.CharField(
|
||||
max_length=20,
|
||||
help_text="Période d'évaluation ex: T1-2024_2025, S1-2024_2025, A-2024_2025",
|
||||
default="",
|
||||
blank=True
|
||||
)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('student', 'establishment_competency')
|
||||
unique_together = ('student', 'establishment_competency', 'period')
|
||||
|
||||
indexes = [
|
||||
models.Index(fields=['student', 'establishment_competency']),
|
||||
models.Index(fields=['student', 'establishment_competency', 'period']),
|
||||
]
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.student} - {self.establishment_competency} - Score: {self.score}"
|
||||
return f"{self.student} - {self.establishment_competency} - Score: {self.score} - Period: {self.period}"
|
||||
|
||||
####### Parent files templates (par dossier d'inscription) #######
|
||||
class RegistrationParentFileTemplate(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user