mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
feat: Signatures électroniques docuseal [#22]
This commit is contained in:
@ -89,7 +89,7 @@ class Student(models.Model):
|
||||
siblings = models.ManyToManyField(Sibling, blank=True)
|
||||
|
||||
# Many-to-Many Relationship
|
||||
registration_files = models.ManyToManyField('RegistrationFile', blank=True, related_name='students')
|
||||
registration_files = models.ManyToManyField('RegistrationTemplate', blank=True, related_name='students')
|
||||
|
||||
# Many-to-Many Relationship
|
||||
spoken_languages = models.ManyToManyField(Language, blank=True)
|
||||
@ -162,7 +162,7 @@ class Student(models.Model):
|
||||
return None
|
||||
|
||||
class RegistrationFileGroup(models.Model):
|
||||
name = models.CharField(max_length=255)
|
||||
name = models.CharField(max_length=255, default="")
|
||||
description = models.TextField(blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
@ -172,10 +172,35 @@ def registration_file_path(instance, filename):
|
||||
# Génère le chemin : registration_files/dossier_rf_{student_id}/filename
|
||||
return f'registration_files/dossier_rf_{instance.student_id}/{filename}'
|
||||
|
||||
class RegistrationTemplateMaster(models.Model):
|
||||
groups = models.ManyToManyField(RegistrationFileGroup, related_name='template_masters')
|
||||
template_id = models.IntegerField(primary_key=True)
|
||||
name = models.CharField(max_length=255, default="")
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.group.name} - {self.template_id}'
|
||||
|
||||
class RegistrationTemplate(models.Model):
|
||||
master = models.ForeignKey(RegistrationTemplateMaster, on_delete=models.CASCADE, related_name='templates')
|
||||
template_id = models.IntegerField(primary_key=True)
|
||||
name = models.CharField(max_length=255, default="")
|
||||
registration_form = models.ForeignKey('RegistrationForm', on_delete=models.CASCADE, related_name='templates')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
@staticmethod
|
||||
def get_files_from_rf(register_form_id):
|
||||
"""
|
||||
Récupère tous les fichiers liés à un dossier d’inscription donné.
|
||||
"""
|
||||
registration_files = RegistrationTemplate.objects.filter(register_form_id=register_form_id).order_by('template__order')
|
||||
filenames = []
|
||||
for reg_file in registration_files:
|
||||
filenames.append(reg_file.file.path)
|
||||
return filenames
|
||||
|
||||
class RegistrationForm(models.Model):
|
||||
"""
|
||||
Gère le dossier d’inscription lié à un élève donné.
|
||||
"""
|
||||
class RegistrationFormStatus(models.IntegerChoices):
|
||||
RF_ABSENT = 0, _('Pas de dossier d\'inscription')
|
||||
RF_CREATED = 1, _('Dossier d\'inscription créé')
|
||||
@ -205,7 +230,7 @@ class RegistrationForm(models.Model):
|
||||
discounts = models.ManyToManyField(Discount, blank=True, related_name='register_forms')
|
||||
fileGroup = models.ForeignKey(RegistrationFileGroup,
|
||||
on_delete=models.CASCADE,
|
||||
related_name='file_group',
|
||||
related_name='register_forms',
|
||||
null=True,
|
||||
blank=True)
|
||||
|
||||
@ -213,56 +238,3 @@ class RegistrationForm(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return "RF_" + self.student.last_name + "_" + self.student.first_name
|
||||
|
||||
class RegistrationFileTemplate(models.Model):
|
||||
"""
|
||||
Modèle pour stocker les fichiers "templates" d’inscription.
|
||||
"""
|
||||
name = models.CharField(max_length=255)
|
||||
file = models.FileField(upload_to='templates_files/', blank=True, null=True)
|
||||
order = models.PositiveIntegerField(default=0) # Ajout du champ order
|
||||
date_added = models.DateTimeField(auto_now_add=True)
|
||||
is_required = models.BooleanField(default=False)
|
||||
group = models.ForeignKey(RegistrationFileGroup, on_delete=models.CASCADE, related_name='file_templates', null=True, blank=True)
|
||||
|
||||
@property
|
||||
def formatted_date_added(self):
|
||||
if self.date_added:
|
||||
return self.date_added.strftime('%d-%m-%Y')
|
||||
return None
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def registration_file_upload_to(instance, filename):
|
||||
return f"registration_files/dossier_rf_{instance.register_form.pk}/{filename}"
|
||||
|
||||
class RegistrationFile(models.Model):
|
||||
"""
|
||||
Fichier lié à un dossier d’inscription particulier.
|
||||
"""
|
||||
name = models.CharField(max_length=255)
|
||||
file = models.FileField(upload_to=registration_file_upload_to)
|
||||
date_added = models.DateTimeField(auto_now_add=True)
|
||||
template = models.OneToOneField(RegistrationFileTemplate, on_delete=models.CASCADE)
|
||||
register_form = models.ForeignKey('RegistrationForm', on_delete=models.CASCADE, related_name='registration_files')
|
||||
|
||||
@property
|
||||
def formatted_date_added(self):
|
||||
if self.date_added:
|
||||
return self.date_added.strftime('%d-%m-%Y')
|
||||
return None
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
@staticmethod
|
||||
def get_files_from_rf(register_form_id):
|
||||
"""
|
||||
Récupère tous les fichiers liés à un dossier d’inscription donné.
|
||||
"""
|
||||
registration_files = RegistrationFile.objects.filter(register_form_id=register_form_id).order_by('template__order')
|
||||
filenames = []
|
||||
for reg_file in registration_files:
|
||||
filenames.append(reg_file.file.path)
|
||||
return filenames
|
||||
|
||||
Reference in New Issue
Block a user