refactor: Document Ecole/Parent

This commit is contained in:
N3WT DE COMPET
2025-04-17 16:20:48 +02:00
parent a65bd47905
commit 7564865d8f
17 changed files with 280 additions and 357 deletions

View File

@ -6,8 +6,8 @@ from Subscriptions.models import (
Fee, Fee,
Discount, Discount,
RegistrationFileGroup, RegistrationFileGroup,
RegistrationTemplateMaster, RegistrationSchoolFileMaster,
RegistrationTemplate RegistrationSchoolFileTemplate
) )
from Auth.models import Profile, ProfileRole from Auth.models import Profile, ProfileRole
from School.models import ( from School.models import (

View File

@ -83,7 +83,7 @@ class Student(models.Model):
siblings = models.ManyToManyField(Sibling, blank=True) siblings = models.ManyToManyField(Sibling, blank=True)
# Many-to-Many Relationship # Many-to-Many Relationship
registration_files = models.ManyToManyField('RegistrationTemplate', blank=True, related_name='students') registration_files = models.ManyToManyField('RegistrationSchoolFileTemplate', blank=True, related_name='students')
# Many-to-Many Relationship # Many-to-Many Relationship
spoken_languages = models.ManyToManyField(Language, blank=True) spoken_languages = models.ManyToManyField(Language, blank=True)
@ -170,15 +170,6 @@ def registration_file_path(instance, filename):
# Génère le chemin : registration_files/dossier_rf_{student_id}/filename # Génère le chemin : registration_files/dossier_rf_{student_id}/filename
return f'registration_files/dossier_rf_{instance.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', blank=True)
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255, default="")
is_required = models.BooleanField(default=False)
def __str__(self):
return f'{self.group.name} - {self.id}'
class RegistrationForm(models.Model): class RegistrationForm(models.Model):
class RegistrationFormStatus(models.IntegerChoices): class RegistrationFormStatus(models.IntegerChoices):
RF_IDLE = 0, _('Pas de dossier d\'inscription') RF_IDLE = 0, _('Pas de dossier d\'inscription')
@ -243,12 +234,37 @@ class RegistrationForm(models.Model):
def registration_file_upload_to(instance, filename): def registration_file_upload_to(instance, filename):
return f"registration_files/dossier_rf_{instance.registration_form.pk}/{filename}" return f"registration_files/dossier_rf_{instance.registration_form.pk}/{filename}"
class RegistrationTemplate(models.Model): #############################################################
master = models.ForeignKey(RegistrationTemplateMaster, on_delete=models.CASCADE, related_name='templates', blank=True) ####################### MASTER FILES ########################
#############################################################
####### DocuSeal masters (documents école, à signer ou pas) #######
class RegistrationSchoolFileMaster(models.Model):
groups = models.ManyToManyField(RegistrationFileGroup, related_name='school_file_masters', blank=True)
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255, default="")
is_required = models.BooleanField(default=False)
def __str__(self):
return f'{self.group.name} - {self.id}'
####### Parent files masters (documents à fournir par les parents) #######
class RegistrationParentFileMaster(models.Model):
groups = models.ManyToManyField(RegistrationFileGroup, related_name='parent_file_masters', blank=True)
name = models.CharField(max_length=255, default="")
description = models.CharField(blank=True, null=True)
############################################################
####################### CLONE FILES ########################
############################################################
####### DocuSeal templates (par dossier d'inscription) #######
class RegistrationSchoolFileTemplate(models.Model):
master = models.ForeignKey(RegistrationSchoolFileMaster, on_delete=models.CASCADE, related_name='school_file_templates', blank=True)
id = models.IntegerField(primary_key=True) id = models.IntegerField(primary_key=True)
slug = models.CharField(max_length=255, default="") slug = models.CharField(max_length=255, default="")
name = models.CharField(max_length=255, default="") name = models.CharField(max_length=255, default="")
registration_form = models.ForeignKey(RegistrationForm, on_delete=models.CASCADE, related_name='templates', blank=True) registration_form = models.ForeignKey(RegistrationForm, on_delete=models.CASCADE, related_name='school_file_templates', blank=True)
file = models.FileField(null=True,blank=True, upload_to=registration_file_upload_to) file = models.FileField(null=True,blank=True, upload_to=registration_file_upload_to)
def __str__(self): def __str__(self):
@ -259,14 +275,29 @@ class RegistrationTemplate(models.Model):
""" """
Récupère tous les fichiers liés à un dossier dinscription donné. Récupère tous les fichiers liés à un dossier dinscription donné.
""" """
registration_files = RegistrationTemplate.objects.filter(registration_form=register_form_id) registration_files = RegistrationSchoolFileTemplate.objects.filter(registration_form=register_form_id)
filenames = [] filenames = []
for reg_file in registration_files: for reg_file in registration_files:
filenames.append(reg_file.file.path) filenames.append(reg_file.file.path)
return filenames return filenames
class RegistrationParentFile(models.Model): ####### Parent files templates (par dossier d'inscription) #######
groups = models.ManyToManyField(RegistrationFileGroup, related_name='parent_files', blank=True) class RegistrationParentFileTemplate(models.Model):
master = models.ForeignKey(RegistrationSchoolFileMaster, on_delete=models.CASCADE, related_name='parent_file_templates', blank=True)
name = models.CharField(max_length=255, default="") name = models.CharField(max_length=255, default="")
description = models.CharField(blank=True, null=True) registration_form = models.ForeignKey(RegistrationForm, on_delete=models.CASCADE, related_name='parent_file_templates', blank=True)
file = models.FileField(null=True,blank=True, upload_to=registration_file_upload_to) file = models.FileField(null=True,blank=True, upload_to=registration_file_upload_to)
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 dinscription donné.
"""
registration_files = RegistrationSchoolFileTemplate.objects.filter(registration_form=register_form_id)
filenames = []
for reg_file in registration_files:
filenames.append(reg_file.file.path)
return filenames

View File

@ -1,5 +1,5 @@
from rest_framework import serializers from rest_framework import serializers
from .models import RegistrationFileGroup, RegistrationForm, Student, Guardian, Sibling, Language, RegistrationTemplateMaster, RegistrationTemplate, RegistrationParentFile from .models import RegistrationFileGroup, RegistrationForm, Student, Guardian, Sibling, Language, RegistrationSchoolFileMaster, RegistrationSchoolFileTemplate, RegistrationParentFileMaster
from School.models import SchoolClass, Fee, Discount, FeeType from School.models import SchoolClass, Fee, Discount, FeeType
from School.serializers import FeeSerializer, DiscountSerializer from School.serializers import FeeSerializer, DiscountSerializer
from Auth.models import ProfileRole, Profile from Auth.models import ProfileRole, Profile
@ -12,24 +12,40 @@ import pytz
from datetime import datetime from datetime import datetime
import Subscriptions.util as util import Subscriptions.util as util
class RegistrationTemplateMasterSerializer(serializers.ModelSerializer): class RegistrationSchoolFileMasterSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(required=False) id = serializers.IntegerField(required=False)
class Meta: class Meta:
model = RegistrationTemplateMaster model = RegistrationSchoolFileMaster
fields = '__all__' fields = '__all__'
class RegistrationTemplateSerializer(serializers.ModelSerializer): class RegistrationParentFileMasterSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(required=False) id = serializers.IntegerField(required=False)
class Meta: class Meta:
model = RegistrationTemplate model = RegistrationParentFileMaster
fields = '__all__' fields = '__all__'
class RegistrationParentFileSerializer(serializers.ModelSerializer): class RegistrationSchoolFileTemplateSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(required=False) id = serializers.IntegerField(required=False)
file_url = serializers.SerializerMethodField()
class Meta: class Meta:
model = RegistrationParentFile model = RegistrationSchoolFileTemplate
fields = '__all__' fields = '__all__'
def get_file_url(self, obj):
# Retourne l'URL complète du fichier si disponible
return obj.file.url if obj.file else None
class RegistrationParentFileTemplateSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(required=False)
file = serializers.SerializerMethodField()
class Meta:
model = RegistrationParentFileMaster
fields = '__all__'
def get_file(self, obj):
# Retourne l'URL complète du fichier si disponible
return obj.file.url if obj.file else None
class GuardianSimpleSerializer(serializers.ModelSerializer): class GuardianSimpleSerializer(serializers.ModelSerializer):
associated_profile_email = serializers.SerializerMethodField() associated_profile_email = serializers.SerializerMethodField()
@ -205,7 +221,7 @@ class RegistrationFormSerializer(serializers.ModelSerializer):
sepa_file = serializers.FileField(required=False) sepa_file = serializers.FileField(required=False)
status_label = serializers.SerializerMethodField() status_label = serializers.SerializerMethodField()
formatted_last_update = serializers.SerializerMethodField() formatted_last_update = serializers.SerializerMethodField()
registration_files = RegistrationTemplateSerializer(many=True, required=False) registration_files = RegistrationSchoolFileTemplateSerializer(many=True, required=False)
fees = serializers.PrimaryKeyRelatedField(queryset=Fee.objects.all(), many=True, required=False) fees = serializers.PrimaryKeyRelatedField(queryset=Fee.objects.all(), many=True, required=False)
discounts = serializers.PrimaryKeyRelatedField(queryset=Discount.objects.all(), many=True, required=False) discounts = serializers.PrimaryKeyRelatedField(queryset=Discount.objects.all(), many=True, required=False)
totalRegistrationFees = serializers.SerializerMethodField() totalRegistrationFees = serializers.SerializerMethodField()

View File

@ -7,16 +7,17 @@ from .views import RegisterFormView, RegisterFormWithIdView, send, resend, archi
# SubClasses # SubClasses
from .views import StudentView, GuardianView, ChildrenListView, StudentListView, DissociateGuardianView from .views import StudentView, GuardianView, ChildrenListView, StudentListView, DissociateGuardianView
# Files # Files
from .views import RegistrationTemplateMasterView, RegistrationTemplateMasterSimpleView, RegistrationTemplateView, RegistrationTemplateSimpleView, RegistrationParentFileSimpleView, RegistrationParentFileView from .views import RegistrationSchoolFileMasterView, RegistrationSchoolFileMasterSimpleView, RegistrationSchoolFileTemplateView, RegistrationSchoolFileTemplateSimpleView, RegistrationParentFileMasterSimpleView, RegistrationParentFileMasterView
from .views import RegistrationFileGroupView, RegistrationFileGroupSimpleView, get_registration_files_by_group from .views import RegistrationFileGroupView, RegistrationFileGroupSimpleView, get_registration_files_by_group
from .views import registration_file_views, get_templates_by_rf from .views import registration_file_views, get_school_file_templates_by_rf, get_parent_file_templates_by_rf
urlpatterns = [ urlpatterns = [
re_path(r'^registerForms/(?P<id>[0-9]+)/archive$', archive, name="archive"), re_path(r'^registerForms/(?P<id>[0-9]+)/archive$', archive, name="archive"),
re_path(r'^registerForms/(?P<id>[0-9]+)/resend$', resend, name="resend"), re_path(r'^registerForms/(?P<id>[0-9]+)/resend$', resend, name="resend"),
re_path(r'^registerForms/(?P<id>[0-9]+)/send$', send, name="send"), re_path(r'^registerForms/(?P<id>[0-9]+)/send$', send, name="send"),
re_path(r'^registerForms/(?P<id>[0-9]+)$', RegisterFormWithIdView.as_view(), name="registerForm"), re_path(r'^registerForms/(?P<id>[0-9]+)$', RegisterFormWithIdView.as_view(), name="registerForm"),
re_path(r'^registerForms/(?P<id>[0-9]+)/templates$', get_templates_by_rf, name="get_templates_by_rf"), re_path(r'^registerForms/(?P<id>[0-9]+)/school_file_templates$', get_school_file_templates_by_rf, name="get_school_file_templates_by_rf"),
re_path(r'^registerForms/(?P<id>[0-9]+)/parent_file_templatess$', get_parent_file_templates_by_rf, name="get_parent_file_templates_by_rf"),
re_path(r'^registerForms$', RegisterFormView.as_view(), name="registerForms"), re_path(r'^registerForms$', RegisterFormView.as_view(), name="registerForms"),
# Page INSCRIPTION - Liste des élèves # Page INSCRIPTION - Liste des élèves
@ -33,14 +34,14 @@ urlpatterns = [
re_path(r'^registrationFileGroups/(?P<id>[0-9]+)/templates$', get_registration_files_by_group, name="get_registration_files_by_group"), re_path(r'^registrationFileGroups/(?P<id>[0-9]+)/templates$', get_registration_files_by_group, name="get_registration_files_by_group"),
re_path(r'^registrationFileGroups$', RegistrationFileGroupView.as_view(), name='registrationFileGroups'), re_path(r'^registrationFileGroups$', RegistrationFileGroupView.as_view(), name='registrationFileGroups'),
re_path(r'^registrationTemplateMasters/(?P<id>[0-9]+)$', RegistrationTemplateMasterSimpleView.as_view(), name='registrationTemplateMasters'), re_path(r'^registrationSchoolFileMasters/(?P<id>[0-9]+)$', RegistrationSchoolFileMasterSimpleView.as_view(), name='registrationSchoolFileMasters'),
re_path(r'^registrationTemplateMasters$', RegistrationTemplateMasterView.as_view(), name='registrationTemplateMasters'), re_path(r'^registrationSchoolFileMasters$', RegistrationSchoolFileMasterView.as_view(), name='registrationSchoolFileMasters'),
re_path(r'^registrationTemplates/(?P<id>[0-9]+)$', RegistrationTemplateSimpleView.as_view(), name='registrationTemplates'), re_path(r'^registrationParentFileMasters/(?P<id>[0-9]+)$', RegistrationParentFileMasterSimpleView.as_view(), name='registrationParentFileMasters'),
re_path(r'^registrationTemplates$', RegistrationTemplateView.as_view(), name="registrationTemplates"), re_path(r'^registrationParentFileMasters$', RegistrationParentFileMasterView.as_view(), name="registrationParentFileMasters"),
re_path(r'^registrationParentFiles/(?P<id>[0-9]+)$', RegistrationParentFileSimpleView.as_view(), name='registrationParentFiles'), re_path(r'^registrationSchoolFileTemplates/(?P<id>[0-9]+)$', RegistrationSchoolFileTemplateSimpleView.as_view(), name='registrationSchoolFileTemplates'),
re_path(r'^registrationParentFiles$', RegistrationParentFileView.as_view(), name="registrationParentFiles"), re_path(r'^registrationSchoolFileTemplates$', RegistrationSchoolFileTemplateView.as_view(), name="registrationSchoolFileTemplates"),
re_path(r'^students/(?P<student_id>[0-9]+)/guardians/(?P<guardian_id>[0-9]+)/dissociate', DissociateGuardianView.as_view(), name='dissociate-guardian'), re_path(r'^students/(?P<student_id>[0-9]+)/guardians/(?P<guardian_id>[0-9]+)/dissociate', DissociateGuardianView.as_view(), name='dissociate-guardian'),

View File

@ -1,5 +1,5 @@
from .register_form_views import RegisterFormView, RegisterFormWithIdView, send, resend, archive, get_templates_by_rf from .register_form_views import RegisterFormView, RegisterFormWithIdView, send, resend, archive, get_school_file_templates_by_rf, get_parent_file_templates_by_rf
from .registration_file_views import RegistrationTemplateMasterView, RegistrationTemplateMasterSimpleView, RegistrationTemplateView, RegistrationTemplateSimpleView, RegistrationParentFileView, RegistrationParentFileSimpleView from .registration_file_views import RegistrationSchoolFileMasterView, RegistrationSchoolFileMasterSimpleView, RegistrationSchoolFileTemplateView, RegistrationSchoolFileTemplateSimpleView, RegistrationParentFileMasterView, RegistrationParentFileMasterSimpleView
from .registration_file_group_views import RegistrationFileGroupView, RegistrationFileGroupSimpleView, get_registration_files_by_group from .registration_file_group_views import RegistrationFileGroupView, RegistrationFileGroupSimpleView, get_registration_files_by_group
from .student_views import StudentView, StudentListView, ChildrenListView from .student_views import StudentView, StudentListView, ChildrenListView
from .guardian_views import GuardianView, DissociateGuardianView from .guardian_views import GuardianView, DissociateGuardianView
@ -10,16 +10,17 @@ __all__ = [
'send', 'send',
'resend', 'resend',
'archive', 'archive',
'RegistrationTemplateView', 'RegistrationSchoolFileTemplateView',
'RegistrationTemplateSimpleView', 'RegistrationSchoolFileTemplateSimpleView',
'RegistrationParentFileSimpleView', 'RegistrationParentFileMasterSimpleView',
'RegistrationParentFileView', 'RegistrationParentFileMasterView',
'RegistrationTemplateMasterView', 'RegistrationSchoolFileMasterView',
'RegistrationTemplateMasterSimpleView', 'RegistrationSchoolFileMasterSimpleView',
'RegistrationFileGroupView', 'RegistrationFileGroupView',
'RegistrationFileGroupSimpleView', 'RegistrationFileGroupSimpleView',
'get_registration_files_by_group', 'get_registration_files_by_group',
'get_templates_by_rf', 'get_school_file_templates_by_rf',
'get_parent_file_templates_by_rf'
'StudentView', 'StudentView',
'StudentListView', 'StudentListView',
'ChildrenListView', 'ChildrenListView',

View File

@ -14,9 +14,9 @@ from django.core.files import File
import Subscriptions.mailManager as mailer import Subscriptions.mailManager as mailer
import Subscriptions.util as util import Subscriptions.util as util
from Subscriptions.serializers import RegistrationFormSerializer from Subscriptions.serializers import RegistrationFormSerializer, RegistrationSchoolFileTemplateSerializer, RegistrationParentFileMasterSerializer
from Subscriptions.pagination import CustomPagination from Subscriptions.pagination import CustomPagination
from Subscriptions.models import Student, Guardian, RegistrationForm, RegistrationTemplate, RegistrationFileGroup from Subscriptions.models import Student, Guardian, RegistrationForm, RegistrationSchoolFileTemplate, RegistrationFileGroup, RegistrationParentFileMaster
from Subscriptions.automate import updateStateMachine from Subscriptions.automate import updateStateMachine
from N3wtSchool import settings, bdd from N3wtSchool import settings, bdd
@ -263,7 +263,7 @@ class RegisterFormWithIdView(APIView):
registerForm.save() registerForm.save()
# Récupération des fichiers d'inscription # Récupération des fichiers d'inscription
fileNames = RegistrationTemplate.get_files_from_rf(registerForm.pk) fileNames = RegistrationSchoolFileTemplate.get_files_from_rf(registerForm.pk)
if registerForm.registration_file: if registerForm.registration_file:
fileNames.insert(0, registerForm.registration_file.path) fileNames.insert(0, registerForm.registration_file.path)
@ -413,10 +413,40 @@ def resend(request,id):
operation_summary="Récupérer les fichiers à signer d'un dossier d'inscription donné" operation_summary="Récupérer les fichiers à signer d'un dossier d'inscription donné"
) )
@api_view(['GET']) @api_view(['GET'])
def get_templates_by_rf(request, id): def get_school_file_templates_by_rf(request, id):
try: try:
templates = RegistrationTemplate.objects.filter(registration_form=id) # Récupérer les templates associés au RegistrationForm donné
templates_data = list(templates.values()) templates = RegistrationSchoolFileTemplate.objects.filter(registration_form=id)
return JsonResponse(templates_data, safe=False)
except RegistrationFileGroup.DoesNotExist: # Sérialiser les données
return JsonResponse({'error': 'Le groupe de fichiers n\'a pas été trouvé'}, status=404) serializer = RegistrationSchoolFileTemplateSerializer(templates, many=True)
# Retourner les données sérialisées
return JsonResponse(serializer.data, safe=False)
except RegistrationSchoolFileTemplate.DoesNotExist:
return JsonResponse({'error': 'Aucun template trouvé pour ce dossier d\'inscription'}, status=status.HTTP_404_NOT_FOUND)
@swagger_auto_schema(
method='get',
responses={200: openapi.Response('Success', schema=openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'message': openapi.Schema(type=openapi.TYPE_STRING)
}
))},
operation_description="Récupère les pièces à fournir d'un dossier d'inscription donné",
operation_summary="Récupérer les pièces à fournir d'un dossier d'inscription donné"
)
@api_view(['GET'])
def get_parent_file_templates_by_rf(request, id):
try:
# Récupérer les pièces à fournir associés au RegistrationForm donné
parent_files = RegistrationParentFileMaster.objects.filter(registration_form=id)
# Sérialiser les données
serializer = RegistrationParentFileMasterSerializer(parent_files, many=True)
# Retourner les données sérialisées
return JsonResponse(serializer.data, safe=False)
except RegistrationSchoolFileTemplate.DoesNotExist:
return JsonResponse({'error': 'Aucune pièce à fournir trouvée pour ce dossier d\'inscription'}, status=status.HTTP_404_NOT_FOUND)

View File

@ -8,7 +8,7 @@ from drf_yasg.utils import swagger_auto_schema
from drf_yasg import openapi from drf_yasg import openapi
from Subscriptions.serializers import RegistrationFileGroupSerializer from Subscriptions.serializers import RegistrationFileGroupSerializer
from Subscriptions.models import RegistrationFileGroup, RegistrationTemplateMaster from Subscriptions.models import RegistrationFileGroup, RegistrationSchoolFileMaster
from N3wtSchool import bdd from N3wtSchool import bdd
class RegistrationFileGroupView(APIView): class RegistrationFileGroupView(APIView):
@ -124,7 +124,7 @@ class RegistrationFileGroupSimpleView(APIView):
def get_registration_files_by_group(request, id): def get_registration_files_by_group(request, id):
try: try:
group = RegistrationFileGroup.objects.get(id=id) group = RegistrationFileGroup.objects.get(id=id)
templateMasters = RegistrationTemplateMaster.objects.filter(groups=group) templateMasters = RegistrationSchoolFileMaster.objects.filter(groups=group)
templates_data = list(templateMasters.values()) templates_data = list(templateMasters.values())
return JsonResponse(templates_data, safe=False) return JsonResponse(templates_data, safe=False)
except RegistrationFileGroup.DoesNotExist: except RegistrationFileGroup.DoesNotExist:

View File

@ -1,159 +0,0 @@
from django.http.response import JsonResponse
from drf_yasg.utils import swagger_auto_schema
from drf_yasg import openapi
from rest_framework.parsers import MultiPartParser, FormParser
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import status
from Subscriptions.serializers import RegistrationTemplateMasterSerializer, RegistrationTemplateSerializer
from Subscriptions.models import RegistrationTemplateMaster, RegistrationTemplate
from N3wtSchool import bdd
class RegistrationTemplateMasterView(APIView):
@swagger_auto_schema(
operation_description="Récupère tous les masters de templates d'inscription",
responses={200: RegistrationTemplateMasterSerializer(many=True)}
)
def get(self, request):
masters = RegistrationTemplateMaster.objects.all()
serializer = RegistrationTemplateMasterSerializer(masters, many=True)
return Response(serializer.data)
@swagger_auto_schema(
operation_description="Crée un nouveau master de template d'inscription",
request_body=RegistrationTemplateMasterSerializer,
responses={
201: RegistrationTemplateMasterSerializer,
400: "Données invalides"
}
)
def post(self, request):
serializer = RegistrationTemplateMasterSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class RegistrationTemplateMasterSimpleView(APIView):
@swagger_auto_schema(
operation_description="Récupère un master de template d'inscription spécifique",
responses={
200: RegistrationTemplateMasterSerializer,
404: "Master non trouvé"
}
)
def get(self, request, id):
master = bdd.getObject(_objectName=RegistrationTemplateMaster, _columnName='id', _value=id)
if master is None:
return JsonResponse({"errorMessage":'Le master de template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
serializer = RegistrationTemplateMasterSerializer(master)
return JsonResponse(serializer.data, safe=False)
@swagger_auto_schema(
operation_description="Met à jour un master de template d'inscription existant",
request_body=RegistrationTemplateMasterSerializer,
responses={
200: RegistrationTemplateMasterSerializer,
400: "Données invalides",
404: "Master non trouvé"
}
)
def put(self, request, id):
master = bdd.getObject(_objectName=RegistrationTemplateMaster, _columnName='id', _value=id)
if master is None:
return JsonResponse({'erreur': 'Le master de template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
serializer = RegistrationTemplateMasterSerializer(master, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@swagger_auto_schema(
operation_description="Supprime un master de template d'inscription",
responses={
204: "Suppression réussie",
404: "Master non trouvé"
}
)
def delete(self, request, id):
master = bdd.getObject(_objectName=RegistrationTemplateMaster, _columnName='id', _value=id)
if master is not None:
master.delete()
return JsonResponse({'message': 'La suppression du master de template a été effectuée avec succès'}, safe=False, status=status.HTTP_204_NO_CONTENT)
else:
return JsonResponse({'erreur': 'Le master de template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
class RegistrationTemplateView(APIView):
@swagger_auto_schema(
operation_description="Récupère tous les templates d'inscription",
responses={200: RegistrationTemplateSerializer(many=True)}
)
def get(self, request):
templates = RegistrationTemplate.objects.all()
serializer = RegistrationTemplateSerializer(templates, many=True)
return Response(serializer.data)
@swagger_auto_schema(
operation_description="Crée un nouveau template d'inscription",
request_body=RegistrationTemplateSerializer,
responses={
201: RegistrationTemplateSerializer,
400: "Données invalides"
}
)
def post(self, request):
serializer = RegistrationTemplateSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class RegistrationTemplateSimpleView(APIView):
@swagger_auto_schema(
operation_description="Récupère un template d'inscription spécifique",
responses={
200: RegistrationTemplateSerializer,
404: "Template non trouvé"
}
)
def get(self, request, id):
template = bdd.getObject(_objectName=RegistrationTemplate, _columnName='id', _value=id)
if template is None:
return JsonResponse({"errorMessage":'Le template d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
serializer = RegistrationTemplateSerializer(template)
return JsonResponse(serializer.data, safe=False)
@swagger_auto_schema(
operation_description="Met à jour un template d'inscription existant",
request_body=RegistrationTemplateSerializer,
responses={
200: RegistrationTemplateSerializer,
400: "Données invalides",
404: "Template non trouvé"
}
)
def put(self, request, id):
template = bdd.getObject(_objectName=RegistrationTemplate, _columnName='id', _value=id)
if template is None:
return JsonResponse({'erreur': 'Le template d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
serializer = RegistrationTemplateSerializer(template, data=request.data)
if serializer.is_valid():
serializer.save()
return Response({'message': 'Template mis à jour avec succès', 'data': serializer.data}, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@swagger_auto_schema(
operation_description="Supprime un template d'inscription",
responses={
204: "Suppression réussie",
404: "Template non trouvé"
}
)
def delete(self, request, id):
template = bdd.getObject(_objectName=RegistrationTemplate, _columnName='id', _value=id)
if template is not None:
template.delete()
return JsonResponse({'message': 'La suppression du template a été effectuée avec succès'}, safe=False, status=status.HTTP_204_NO_CONTENT)
else:
return JsonResponse({'erreur': 'Le template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)

View File

@ -6,64 +6,64 @@ from rest_framework.response import Response
from rest_framework.views import APIView from rest_framework.views import APIView
from rest_framework import status from rest_framework import status
from Subscriptions.serializers import RegistrationTemplateMasterSerializer, RegistrationTemplateSerializer, RegistrationParentFileSerializer from Subscriptions.serializers import RegistrationSchoolFileMasterSerializer, RegistrationSchoolFileTemplateSerializer, RegistrationParentFileMasterSerializer
from Subscriptions.models import RegistrationTemplateMaster, RegistrationTemplate, RegistrationParentFile from Subscriptions.models import RegistrationSchoolFileMaster, RegistrationSchoolFileTemplate, RegistrationParentFileMaster
from N3wtSchool import bdd from N3wtSchool import bdd
class RegistrationTemplateMasterView(APIView): class RegistrationSchoolFileMasterView(APIView):
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Récupère tous les masters de templates d'inscription", operation_description="Récupère tous les masters de templates d'inscription",
responses={200: RegistrationTemplateMasterSerializer(many=True)} responses={200: RegistrationSchoolFileMasterSerializer(many=True)}
) )
def get(self, request): def get(self, request):
masters = RegistrationTemplateMaster.objects.all() masters = RegistrationSchoolFileMaster.objects.all()
serializer = RegistrationTemplateMasterSerializer(masters, many=True) serializer = RegistrationSchoolFileMasterSerializer(masters, many=True)
return Response(serializer.data) return Response(serializer.data)
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Crée un nouveau master de template d'inscription", operation_description="Crée un nouveau master de template d'inscription",
request_body=RegistrationTemplateMasterSerializer, request_body=RegistrationSchoolFileMasterSerializer,
responses={ responses={
201: RegistrationTemplateMasterSerializer, 201: RegistrationSchoolFileMasterSerializer,
400: "Données invalides" 400: "Données invalides"
} }
) )
def post(self, request): def post(self, request):
serializer = RegistrationTemplateMasterSerializer(data=request.data) serializer = RegistrationSchoolFileMasterSerializer(data=request.data)
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class RegistrationTemplateMasterSimpleView(APIView): class RegistrationSchoolFileMasterSimpleView(APIView):
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Récupère un master de template d'inscription spécifique", operation_description="Récupère un master de template d'inscription spécifique",
responses={ responses={
200: RegistrationTemplateMasterSerializer, 200: RegistrationSchoolFileMasterSerializer,
404: "Master non trouvé" 404: "Master non trouvé"
} }
) )
def get(self, request, id): def get(self, request, id):
master = bdd.getObject(_objectName=RegistrationTemplateMaster, _columnName='id', _value=id) master = bdd.getObject(_objectName=RegistrationSchoolFileMaster, _columnName='id', _value=id)
if master is None: if master is None:
return JsonResponse({"errorMessage":'Le master de template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND) return JsonResponse({"errorMessage":'Le master de template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
serializer = RegistrationTemplateMasterSerializer(master) serializer = RegistrationSchoolFileMasterSerializer(master)
return JsonResponse(serializer.data, safe=False) return JsonResponse(serializer.data, safe=False)
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Met à jour un master de template d'inscription existant", operation_description="Met à jour un master de template d'inscription existant",
request_body=RegistrationTemplateMasterSerializer, request_body=RegistrationSchoolFileMasterSerializer,
responses={ responses={
200: RegistrationTemplateMasterSerializer, 200: RegistrationSchoolFileMasterSerializer,
400: "Données invalides", 400: "Données invalides",
404: "Master non trouvé" 404: "Master non trouvé"
} }
) )
def put(self, request, id): def put(self, request, id):
master = bdd.getObject(_objectName=RegistrationTemplateMaster, _columnName='id', _value=id) master = bdd.getObject(_objectName=RegistrationSchoolFileMaster, _columnName='id', _value=id)
if master is None: if master is None:
return JsonResponse({'erreur': 'Le master de template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND) return JsonResponse({'erreur': 'Le master de template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
serializer = RegistrationTemplateMasterSerializer(master, data=request.data) serializer = RegistrationSchoolFileMasterSerializer(master, data=request.data)
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK) return Response(serializer.data, status=status.HTTP_200_OK)
@ -77,67 +77,67 @@ class RegistrationTemplateMasterSimpleView(APIView):
} }
) )
def delete(self, request, id): def delete(self, request, id):
master = bdd.getObject(_objectName=RegistrationTemplateMaster, _columnName='id', _value=id) master = bdd.getObject(_objectName=RegistrationSchoolFileMaster, _columnName='id', _value=id)
if master is not None: if master is not None:
master.delete() master.delete()
return JsonResponse({'message': 'La suppression du master de template a été effectuée avec succès'}, safe=False, status=status.HTTP_204_NO_CONTENT) return JsonResponse({'message': 'La suppression du master de template a été effectuée avec succès'}, safe=False, status=status.HTTP_204_NO_CONTENT)
else: else:
return JsonResponse({'erreur': 'Le master de template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND) return JsonResponse({'erreur': 'Le master de template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
class RegistrationTemplateView(APIView): class RegistrationSchoolFileTemplateView(APIView):
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Récupère tous les templates d'inscription", operation_description="Récupère tous les templates d'inscription",
responses={200: RegistrationTemplateSerializer(many=True)} responses={200: RegistrationSchoolFileTemplateSerializer(many=True)}
) )
def get(self, request): def get(self, request):
templates = RegistrationTemplate.objects.all() templates = RegistrationSchoolFileTemplate.objects.all()
serializer = RegistrationTemplateSerializer(templates, many=True) serializer = RegistrationSchoolFileTemplateSerializer(templates, many=True)
return Response(serializer.data) return Response(serializer.data)
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Crée un nouveau template d'inscription", operation_description="Crée un nouveau template d'inscription",
request_body=RegistrationTemplateSerializer, request_body=RegistrationSchoolFileTemplateSerializer,
responses={ responses={
201: RegistrationTemplateSerializer, 201: RegistrationSchoolFileTemplateSerializer,
400: "Données invalides" 400: "Données invalides"
} }
) )
def post(self, request): def post(self, request):
serializer = RegistrationTemplateSerializer(data=request.data) serializer = RegistrationSchoolFileTemplateSerializer(data=request.data)
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class RegistrationTemplateSimpleView(APIView): class RegistrationSchoolFileTemplateSimpleView(APIView):
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Récupère un template d'inscription spécifique", operation_description="Récupère un template d'inscription spécifique",
responses={ responses={
200: RegistrationTemplateSerializer, 200: RegistrationSchoolFileTemplateSerializer,
404: "Template non trouvé" 404: "Template non trouvé"
} }
) )
def get(self, request, id): def get(self, request, id):
template = bdd.getObject(_objectName=RegistrationTemplate, _columnName='id', _value=id) template = bdd.getObject(_objectName=RegistrationSchoolFileTemplate, _columnName='id', _value=id)
if template is None: if template is None:
return JsonResponse({"errorMessage":'Le template d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND) return JsonResponse({"errorMessage":'Le template d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
serializer = RegistrationTemplateSerializer(template) serializer = RegistrationSchoolFileTemplateSerializer(template)
return JsonResponse(serializer.data, safe=False) return JsonResponse(serializer.data, safe=False)
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Met à jour un template d'inscription existant", operation_description="Met à jour un template d'inscription existant",
request_body=RegistrationTemplateSerializer, request_body=RegistrationSchoolFileTemplateSerializer,
responses={ responses={
200: RegistrationTemplateSerializer, 200: RegistrationSchoolFileTemplateSerializer,
400: "Données invalides", 400: "Données invalides",
404: "Template non trouvé" 404: "Template non trouvé"
} }
) )
def put(self, request, id): def put(self, request, id):
template = bdd.getObject(_objectName=RegistrationTemplate, _columnName='id', _value=id) template = bdd.getObject(_objectName=RegistrationSchoolFileTemplate, _columnName='id', _value=id)
if template is None: if template is None:
return JsonResponse({'erreur': 'Le template d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND) return JsonResponse({'erreur': 'Le template d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
serializer = RegistrationTemplateSerializer(template, data=request.data) serializer = RegistrationSchoolFileTemplateSerializer(template, data=request.data)
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save()
return Response({'message': 'Template mis à jour avec succès', 'data': serializer.data}, status=status.HTTP_200_OK) return Response({'message': 'Template mis à jour avec succès', 'data': serializer.data}, status=status.HTTP_200_OK)
@ -151,68 +151,68 @@ class RegistrationTemplateSimpleView(APIView):
} }
) )
def delete(self, request, id): def delete(self, request, id):
template = bdd.getObject(_objectName=RegistrationTemplate, _columnName='id', _value=id) template = bdd.getObject(_objectName=RegistrationSchoolFileTemplate, _columnName='id', _value=id)
if template is not None: if template is not None:
template.delete() template.delete()
return JsonResponse({'message': 'La suppression du template a été effectuée avec succès'}, safe=False, status=status.HTTP_204_NO_CONTENT) return JsonResponse({'message': 'La suppression du template a été effectuée avec succès'}, safe=False, status=status.HTTP_204_NO_CONTENT)
else: else:
return JsonResponse({'erreur': 'Le template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND) return JsonResponse({'erreur': 'Le template n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
class RegistrationParentFileView(APIView): class RegistrationParentFileMasterView(APIView):
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Récupère tous les fichiers parents", operation_description="Récupère tous les fichiers parents",
responses={200: RegistrationParentFileSerializer(many=True)} responses={200: RegistrationParentFileMasterSerializer(many=True)}
) )
def get(self, request): def get(self, request):
templates = RegistrationParentFile.objects.all() templates = RegistrationParentFileMaster.objects.all()
serializer = RegistrationParentFileSerializer(templates, many=True) serializer = RegistrationParentFileMasterSerializer(templates, many=True)
return Response(serializer.data) return Response(serializer.data)
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Crée un nouveau fichier parent", operation_description="Crée un nouveau fichier parent",
request_body=RegistrationParentFileSerializer, request_body=RegistrationParentFileMasterSerializer,
responses={ responses={
201: RegistrationParentFileSerializer, 201: RegistrationParentFileMasterSerializer,
400: "Données invalides" 400: "Données invalides"
} }
) )
def post(self, request): def post(self, request):
serializer = RegistrationParentFileSerializer(data=request.data) serializer = RegistrationParentFileMasterSerializer(data=request.data)
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class RegistrationParentFileSimpleView(APIView): class RegistrationParentFileMasterSimpleView(APIView):
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Récupère un fichier parent spécifique", operation_description="Récupère un fichier parent spécifique",
responses={ responses={
200: RegistrationParentFileSerializer, 200: RegistrationParentFileMasterSerializer,
404: "Fichier parent non trouvé" 404: "Fichier parent non trouvé"
} }
) )
def get(self, request, id): def get(self, request, id):
template = bdd.getObject(_objectName=RegistrationParentFile, _columnName='id', _value=id) template = bdd.getObject(_objectName=RegistrationParentFileMaster, _columnName='id', _value=id)
if template is None: if template is None:
return JsonResponse({"errorMessage":'Le fichier parent n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND) return JsonResponse({"errorMessage":'Le fichier parent n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
serializer = RegistrationParentFileSerializer(template) serializer = RegistrationParentFileMasterSerializer(template)
return JsonResponse(serializer.data, safe=False) return JsonResponse(serializer.data, safe=False)
@swagger_auto_schema( @swagger_auto_schema(
operation_description="Met à jour un fichier parent existant", operation_description="Met à jour un fichier parent existant",
request_body=RegistrationParentFileSerializer, request_body=RegistrationParentFileMasterSerializer,
responses={ responses={
200: RegistrationParentFileSerializer, 200: RegistrationParentFileMasterSerializer,
400: "Données invalides", 400: "Données invalides",
404: "Fichier parent non trouvé" 404: "Fichier parent non trouvé"
} }
) )
def put(self, request, id): def put(self, request, id):
template = bdd.getObject(_objectName=RegistrationParentFile, _columnName='id', _value=id) template = bdd.getObject(_objectName=RegistrationParentFileMaster, _columnName='id', _value=id)
if template is None: if template is None:
return JsonResponse({'erreur': 'Le fichier parent n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND) return JsonResponse({'erreur': 'Le fichier parent n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
serializer = RegistrationParentFileSerializer(template, data=request.data) serializer = RegistrationParentFileMasterSerializer(template, data=request.data)
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save()
return Response({'message': 'Fichier parent mis à jour avec succès', 'data': serializer.data}, status=status.HTTP_200_OK) return Response({'message': 'Fichier parent mis à jour avec succès', 'data': serializer.data}, status=status.HTTP_200_OK)
@ -226,7 +226,7 @@ class RegistrationParentFileSimpleView(APIView):
} }
) )
def delete(self, request, id): def delete(self, request, id):
template = bdd.getObject(_objectName=RegistrationParentFile, _columnName='id', _value=id) template = bdd.getObject(_objectName=RegistrationParentFileMaster, _columnName='id', _value=id)
if template is not None: if template is not None:
template.delete() template.delete()
return JsonResponse({'message': 'La suppression du fichier parent a été effectuée avec succès'}, safe=False, status=status.HTTP_204_NO_CONTENT) return JsonResponse({'message': 'La suppression du fichier parent a été effectuée avec succès'}, safe=False, status=status.HTTP_204_NO_CONTENT)

View File

@ -25,7 +25,7 @@ import {
import { fetchProfileRoles, fetchProfiles } from '@/app/actions/authAction'; import { fetchProfileRoles, fetchProfiles } from '@/app/actions/authAction';
import SidebarTabs from '@/components/SidebarTabs'; import SidebarTabs from '@/components/SidebarTabs';
import FilesGroupsManagement from '@/components/Structure/Files/FilesGroupsManagement'; import FilesGroupsManagement from '@/components/Structure/Files/FilesGroupsManagement';
import { fetchRegistrationTemplateMaster } from "@/app/actions/registerFileGroupAction"; import { fetchRegistrationSchoolFileMasters } from "@/app/actions/registerFileGroupAction";
import logger from '@/utils/logger'; import logger from '@/utils/logger';
import { useEstablishment } from '@/context/EstablishmentContext'; import { useEstablishment } from '@/context/EstablishmentContext';
@ -74,8 +74,8 @@ export default function Page() {
// Fetch data for tuition fees // Fetch data for tuition fees
handleTuitionFees(); handleTuitionFees();
// Fetch data for registration file templates // Fetch data for registration file schoolFileTemplates
fetchRegistrationTemplateMaster() fetchRegistrationSchoolFileMasters()
.then((data)=> { .then((data)=> {
setFichiers(data) setFichiers(data)
}) })

View File

@ -28,7 +28,7 @@ import {
editRegisterForm } from "@/app/actions/subscriptionAction" editRegisterForm } from "@/app/actions/subscriptionAction"
import { import {
fetchRegistrationTemplateMaster, fetchRegistrationSchoolFileMasters,
createRegistrationTemplates, createRegistrationTemplates,
fetchRegistrationFileGroups, fetchRegistrationFileGroups,
cloneTemplate cloneTemplate
@ -72,7 +72,7 @@ export default function Page({ params: { locale } }) {
const [totalArchives, setTotalArchives] = useState(0); const [totalArchives, setTotalArchives] = useState(0);
const [itemsPerPage, setItemsPerPage] = useState(10); // Définir le nombre d'éléments par page const [itemsPerPage, setItemsPerPage] = useState(10); // Définir le nombre d'éléments par page
const [templateMasters, setTemplateMasters] = useState([]); const [schoolFileMasters, setSchoolFileMasters] = useState([]);
const [isOpen, setIsOpen] = useState(false); const [isOpen, setIsOpen] = useState(false);
const [isOpenAffectationClasse, setIsOpenAffectationClasse] = useState(false); const [isOpenAffectationClasse, setIsOpenAffectationClasse] = useState(false);
const [student, setStudent] = useState(''); const [student, setStudent] = useState('');
@ -213,9 +213,9 @@ useEffect(() => {
fetchRegisterForms(selectedEstablishmentId, ARCHIVED) fetchRegisterForms(selectedEstablishmentId, ARCHIVED)
.then(registerFormArchivedDataHandler) .then(registerFormArchivedDataHandler)
.catch(requestErrorHandler), .catch(requestErrorHandler),
fetchRegistrationTemplateMaster() fetchRegistrationSchoolFileMasters()
.then(data => { .then(data => {
setTemplateMasters(data); setSchoolFileMasters(data);
}) })
.catch(err => { .catch(err => {
logger.debug(err.message); logger.debug(err.message);
@ -284,8 +284,8 @@ useEffect(() => {
fetchRegisterForms(selectedEstablishmentId, ARCHIVED) fetchRegisterForms(selectedEstablishmentId, ARCHIVED)
.then(registerFormArchivedDataHandler) .then(registerFormArchivedDataHandler)
.catch(requestErrorHandler) .catch(requestErrorHandler)
fetchRegistrationTemplateMaster() fetchRegistrationSchoolFileMasters()
.then((data)=> {setTemplateMasters(data)}) .then((data)=> {setSchoolFileMasters(data)})
.catch((err)=>{ err = err.message; logger.debug(err);}); .catch((err)=>{ err = err.message; logger.debug(err);});
setIsLoading(false); setIsLoading(false);
@ -460,12 +460,12 @@ useEffect(()=>{
createRegisterForm(data, csrfToken) createRegisterForm(data, csrfToken)
.then(data => { .then(data => {
// Cloner les templates pour chaque templateMaster du fileGroup // Cloner les schoolFileTemplates pour chaque templateMaster du fileGroup
const masters = templateMasters.filter(file => file.groups.includes(selectedFileGroup)); const masters = schoolFileMasters.filter(file => file.groups.includes(selectedFileGroup));
const clonePromises = masters.map((templateMaster, index) => { const clonePromises = masters.map((templateMaster, index) => {
return cloneTemplate(templateMaster.id, updatedData.guardianEmail, templateMaster.is_required) return cloneTemplate(templateMaster.id, updatedData.guardianEmail, templateMaster.is_required)
.then(clonedDocument => { .then(clonedDocument => {
// Sauvegarde des templates clonés dans la base de données // Sauvegarde des schoolFileTemplates clonés dans la base de données
const cloneData = { const cloneData = {
name: `${templateMaster.name}_${updatedData.guardianFirstName}_${updatedData.guardianLastName}`, name: `${templateMaster.name}_${updatedData.guardianFirstName}_${updatedData.guardianLastName}`,
slug: clonedDocument.slug, slug: clonedDocument.slug,

View File

@ -1,7 +1,7 @@
import { BE_SUBSCRIPTION_REGISTRATIONFILE_GROUPS_URL, import { BE_SUBSCRIPTION_REGISTRATIONFILE_GROUPS_URL,
BE_SUBSCRIPTION_REGISTRATION_TEMPLATES_URL, BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_TEMPLATES_URL,
BE_SUBSCRIPTION_REGISTRATION_TEMPLATE_MASTER_URL, BE_SUBSCRIPTION_REGISTRATIONSCHOOL_FILE_MASTERS_URL,
BE_SUBSCRIPTION_REGISTRATION_PARENT_FILES_URL, BE_SUBSCRIPTION_REGISTRATION_PARENT_FILE_MASTERS_URL,
FE_API_DOCUSEAL_CLONE_URL, FE_API_DOCUSEAL_CLONE_URL,
FE_API_DOCUSEAL_DOWNLOAD_URL, FE_API_DOCUSEAL_DOWNLOAD_URL,
FE_API_DOCUSEAL_GENERATE_TOKEN FE_API_DOCUSEAL_GENERATE_TOKEN
@ -80,7 +80,7 @@ export const editRegistrationFileGroup = async (groupId, groupData, csrfToken) =
}; };
export const fetchRegistrationFileFromGroup = async (groupId) => { export const fetchRegistrationFileFromGroup = async (groupId) => {
const response = await fetch(`${BE_SUBSCRIPTION_REGISTRATIONFILE_GROUPS_URL}/${groupId}/templates`, { const response = await fetch(`${BE_SUBSCRIPTION_REGISTRATIONFILE_GROUPS_URL}/${groupId}/schoolFileTemplates`, {
credentials: 'include', credentials: 'include',
headers: { headers: {
'Accept': 'application/json', 'Accept': 'application/json',
@ -92,10 +92,10 @@ export const fetchRegistrationFileFromGroup = async (groupId) => {
return response.json(); return response.json();
} }
export const fetchRegistrationParentFiles = (id = null) => { export const fetchRegistrationParentFileMasters = (id = null) => {
let url = `${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILES_URL}` let url = `${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILE_MASTERS_URL}`
if (id) { if (id) {
url = `${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILES_URL}/${id}`; url = `${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILE_MASTERS_URL}/${id}`;
} }
const request = new Request( const request = new Request(
`${url}`, `${url}`,
@ -109,9 +109,9 @@ export const fetchRegistrationParentFiles = (id = null) => {
return fetch(request).then(requestResponseHandler) return fetch(request).then(requestResponseHandler)
}; };
export const createRegistrationParentFiles = (data,csrfToken) => { export const createRegistrationParentFileMaster = (data,csrfToken) => {
return fetch(`${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILES_URL}`, { return fetch(`${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILE_MASTERS_URL}`, {
method: 'POST', method: 'POST',
body: JSON.stringify(data), body: JSON.stringify(data),
headers: { headers: {
@ -123,8 +123,8 @@ export const createRegistrationParentFiles = (data,csrfToken) => {
.then(requestResponseHandler) .then(requestResponseHandler)
} }
export const editRegistrationParentFiles = (id, data, csrfToken) => { export const editRegistrationParentFileMaster = (id, data, csrfToken) => {
return fetch(`${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILES_URL}/${id}`, { return fetch(`${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILE_MASTERS_URL}/${id}`, {
method: 'PUT', method: 'PUT',
body: JSON.stringify(data), body: JSON.stringify(data),
headers: { headers: {
@ -136,8 +136,8 @@ export const editRegistrationParentFiles = (id, data, csrfToken) => {
.then(requestResponseHandler) .then(requestResponseHandler)
} }
export const deleteRegistrationParentFiles = (id, csrfToken) => { export const deleteRegistrationParentFileMaster = (id, csrfToken) => {
return fetch(`${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILES_URL}/${id}`, { return fetch(`${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILE_MASTERS_URL}/${id}`, {
method: 'DELETE', method: 'DELETE',
headers: { headers: {
'X-CSRFToken': csrfToken, 'X-CSRFToken': csrfToken,
@ -146,10 +146,10 @@ export const deleteRegistrationParentFiles = (id, csrfToken) => {
}) })
} }
export const fetchRegistrationTemplates = (id = null) => { export const fetchRegistrationSchoolFileTemplates = (id = null) => {
let url = `${BE_SUBSCRIPTION_REGISTRATION_TEMPLATES_URL}` let url = `${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_TEMPLATES_URL}`
if (id) { if (id) {
url = `${BE_SUBSCRIPTION_REGISTRATION_TEMPLATES_URL}/${id}`; url = `${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_TEMPLATES_URL}/${id}`;
} }
const request = new Request( const request = new Request(
`${url}`, `${url}`,
@ -164,7 +164,7 @@ export const fetchRegistrationTemplates = (id = null) => {
}; };
export const editRegistrationTemplates = (fileId, data, csrfToken) => { export const editRegistrationTemplates = (fileId, data, csrfToken) => {
return fetch(`${BE_SUBSCRIPTION_REGISTRATION_TEMPLATES_URL}/${fileId}`, { return fetch(`${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_TEMPLATES_URL}/${fileId}`, {
method: 'PUT', method: 'PUT',
body: data, body: data,
headers: { headers: {
@ -177,7 +177,7 @@ export const editRegistrationTemplates = (fileId, data, csrfToken) => {
export const createRegistrationTemplates = (data,csrfToken) => { export const createRegistrationTemplates = (data,csrfToken) => {
return fetch(`${BE_SUBSCRIPTION_REGISTRATION_TEMPLATES_URL}`, { return fetch(`${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_TEMPLATES_URL}`, {
method: 'POST', method: 'POST',
body: JSON.stringify(data), body: JSON.stringify(data),
headers: { headers: {
@ -190,7 +190,7 @@ export const createRegistrationTemplates = (data,csrfToken) => {
} }
export const deleteRegistrationTemplates = (fileId,csrfToken) => { export const deleteRegistrationTemplates = (fileId,csrfToken) => {
return fetch(`${BE_SUBSCRIPTION_REGISTRATION_TEMPLATES_URL}/${fileId}`, { return fetch(`${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_TEMPLATES_URL}/${fileId}`, {
method: 'DELETE', method: 'DELETE',
headers: { headers: {
'X-CSRFToken': csrfToken, 'X-CSRFToken': csrfToken,
@ -199,10 +199,10 @@ export const deleteRegistrationTemplates = (fileId,csrfToken) => {
}) })
} }
export const fetchRegistrationTemplateMaster = (id = null) => { export const fetchRegistrationSchoolFileMasters = (id = null) => {
let url = `${BE_SUBSCRIPTION_REGISTRATION_TEMPLATE_MASTER_URL}`; let url = `${BE_SUBSCRIPTION_REGISTRATIONSCHOOL_FILE_MASTERS_URL}`;
if(id){ if(id){
url = `${BE_SUBSCRIPTION_REGISTRATION_TEMPLATE_MASTER_URL}/${id}`; url = `${BE_SUBSCRIPTION_REGISTRATIONSCHOOL_FILE_MASTERS_URL}/${id}`;
} }
const request = new Request( const request = new Request(
`${url}`, `${url}`,
@ -216,9 +216,9 @@ export const fetchRegistrationTemplateMaster = (id = null) => {
return fetch(request).then(requestResponseHandler) return fetch(request).then(requestResponseHandler)
}; };
export const createRegistrationTemplateMaster = (data,csrfToken) => { export const createRegistrationSchoolFileMaster = (data,csrfToken) => {
return fetch(`${BE_SUBSCRIPTION_REGISTRATION_TEMPLATE_MASTER_URL}`, { return fetch(`${BE_SUBSCRIPTION_REGISTRATIONSCHOOL_FILE_MASTERS_URL}`, {
method: 'POST', method: 'POST',
body: JSON.stringify(data), body: JSON.stringify(data),
headers: { headers: {
@ -230,8 +230,8 @@ export const createRegistrationTemplateMaster = (data,csrfToken) => {
.then(requestResponseHandler) .then(requestResponseHandler)
} }
export const deleteRegistrationTemplateMaster = (fileId,csrfToken) => { export const deleteRegistrationSchoolFileMaster = (fileId,csrfToken) => {
return fetch(`${BE_SUBSCRIPTION_REGISTRATION_TEMPLATE_MASTER_URL}/${fileId}`, { return fetch(`${BE_SUBSCRIPTION_REGISTRATIONSCHOOL_FILE_MASTERS_URL}/${fileId}`, {
method: 'DELETE', method: 'DELETE',
headers: { headers: {
'X-CSRFToken': csrfToken, 'X-CSRFToken': csrfToken,
@ -240,8 +240,8 @@ export const deleteRegistrationTemplateMaster = (fileId,csrfToken) => {
}) })
} }
export const editRegistrationTemplateMaster = (fileId, data, csrfToken) => { export const editRegistrationSchoolFileMaster = (fileId, data, csrfToken) => {
return fetch(`${BE_SUBSCRIPTION_REGISTRATION_TEMPLATE_MASTER_URL}/${fileId}`, { return fetch(`${BE_SUBSCRIPTION_REGISTRATIONSCHOOL_FILE_MASTERS_URL}/${fileId}`, {
method: 'PUT', method: 'PUT',
body: JSON.stringify(data), body: JSON.stringify(data),
headers: { headers: {

View File

@ -151,8 +151,8 @@ export async function getRegisterFormFileTemplate(fileId) {
return response.json(); return response.json();
} }
export const fetchTemplatesFromRegistrationFiles = async (id) => { export const fetchSchoolFileTemplatesFromRegistrationFiles = async (id) => {
const response = await fetch(`${BE_SUBSCRIPTION_REGISTERFORMS_URL}/${id}/templates`, { const response = await fetch(`${BE_SUBSCRIPTION_REGISTERFORMS_URL}/${id}/school_file_templates`, {
credentials: 'include', credentials: 'include',
headers: { headers: {
'Accept': 'application/json', 'Accept': 'application/json',

View File

@ -3,7 +3,7 @@ import React, { useState, useEffect } from 'react';
import Loader from '@/components/Loader'; import Loader from '@/components/Loader';
import Button from '@/components/Button'; import Button from '@/components/Button';
import DjangoCSRFToken from '@/components/DjangoCSRFToken'; import DjangoCSRFToken from '@/components/DjangoCSRFToken';
import { fetchRegisterForm, fetchTemplatesFromRegistrationFiles } from '@/app/actions/subscriptionAction'; import { fetchRegisterForm, fetchSchoolFileTemplatesFromRegistrationFiles } from '@/app/actions/subscriptionAction';
import { downloadTemplate, import { downloadTemplate,
createRegistrationTemplates, createRegistrationTemplates,
editRegistrationTemplates, editRegistrationTemplates,
@ -112,7 +112,7 @@ export default function InscriptionFormShared({
}, [studentId]); }, [studentId]);
useEffect(() => { useEffect(() => {
fetchTemplatesFromRegistrationFiles(studentId).then((data) => { fetchSchoolFileTemplatesFromRegistrationFiles(studentId).then((data) => {
setFileTemplates(data); setFileTemplates(data);
}) })
}, []); }, []);
@ -341,7 +341,7 @@ export default function InscriptionFormShared({
</div> </div>
{/* Affichage du formulaire ou du document */} {/* Affichage du formulaire ou du document */}
{requiredFileTemplates[currentPage - 2].file === "" ? ( {requiredFileTemplates[currentPage - 2].file === null ? (
<DocusealForm <DocusealForm
id="docusealForm" id="docusealForm"
src={"https://docuseal.com/s/" + requiredFileTemplates[currentPage - 2].slug} src={"https://docuseal.com/s/" + requiredFileTemplates[currentPage - 2].slug}

View File

@ -102,7 +102,7 @@ export default function FileUploadDocuSeal({ handleCreateTemplateMaster, handleE
logger.debug('creation du clone avec required : ', is_required) logger.debug('creation du clone avec required : ', is_required)
cloneTemplate(templateMaster?.id, guardian.email, is_required) cloneTemplate(templateMaster?.id, guardian.email, is_required)
.then(clonedDocument => { .then(clonedDocument => {
// Sauvegarde des templates clonés dans la base de données // Sauvegarde des schoolFileTemplates clonés dans la base de données
const data = { const data = {
name: `${uploadedFileName}_${guardian.first_name}_${guardian.last_name}`, name: `${uploadedFileName}_${guardian.first_name}_${guardian.last_name}`,
slug: clonedDocument.slug, slug: clonedDocument.slug,

View File

@ -5,27 +5,32 @@ import Table from '@/components/Table';
import FileUploadDocuSeal from '@/components/Structure/Files/FileUploadDocuSeal'; import FileUploadDocuSeal from '@/components/Structure/Files/FileUploadDocuSeal';
import { BASE_URL } from '@/utils/Url'; import { BASE_URL } from '@/utils/Url';
import { import {
// GET
fetchRegistrationFileGroups, fetchRegistrationFileGroups,
fetchRegistrationSchoolFileMasters,
fetchRegistrationSchoolFileTemplates,
fetchRegistrationParentFileMasters,
// POST
createRegistrationFileGroup, createRegistrationFileGroup,
deleteRegistrationFileGroup, createRegistrationSchoolFileMaster,
createRegistrationParentFileMaster,
// PUT
editRegistrationFileGroup, editRegistrationFileGroup,
fetchRegistrationTemplateMaster, editRegistrationSchoolFileMaster,
createRegistrationTemplateMaster, editRegistrationParentFileMaster,
editRegistrationTemplateMaster, // DELETE
deleteRegistrationTemplateMaster, deleteRegistrationFileGroup,
fetchRegistrationTemplates, deleteRegistrationSchoolFileMaster,
fetchRegistrationParentFiles, deleteRegistrationParentFileMaster,
createRegistrationParentFiles,
editRegistrationParentFiles,
deleteRegistrationParentFiles
} from '@/app/actions/registerFileGroupAction'; } from '@/app/actions/registerFileGroupAction';
import RegistrationFileGroupForm from '@/components/Structure/Files/RegistrationFileGroupForm'; import RegistrationFileGroupForm from '@/components/Structure/Files/RegistrationFileGroupForm';
import logger from '@/utils/logger'; import logger from '@/utils/logger';
import ParentFilesSection from '@/components/Structure/Files/ParentFilesSection'; import ParentFilesSection from '@/components/Structure/Files/ParentFilesSection';
export default function FilesGroupsManagement({ csrfToken, selectedEstablishmentId }) { export default function FilesGroupsManagement({ csrfToken, selectedEstablishmentId }) {
const [templateMasters, setTemplateMasters] = useState([]); const [schoolFileMasters, setSchoolFileMasters] = useState([]);
const [templates, setTemplates] = useState([]); const [schoolFileTemplates, setSchoolFileTemplates] = useState([]);
const [parentFiles, setParentFileMasters] = useState([]);
const [groups, setGroups] = useState([]); const [groups, setGroups] = useState([]);
const [selectedGroup, setSelectedGroup] = useState(null); const [selectedGroup, setSelectedGroup] = useState(null);
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
@ -37,8 +42,6 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
const [editingDocumentId, setEditingDocumentId] = useState(null); const [editingDocumentId, setEditingDocumentId] = useState(null);
const [formData, setFormData] = useState({}); const [formData, setFormData] = useState({});
const [parentFiles, setParentFiles] = useState([]);
const handleReloadTemplates = () => { const handleReloadTemplates = () => {
setReloadTemplates(true); setReloadTemplates(true);
} }
@ -54,17 +57,17 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
useEffect(() => { useEffect(() => {
if (selectedEstablishmentId) { if (selectedEstablishmentId) {
Promise.all([ Promise.all([
fetchRegistrationTemplateMaster(), fetchRegistrationSchoolFileMasters(),
fetchRegistrationFileGroups(selectedEstablishmentId), fetchRegistrationFileGroups(selectedEstablishmentId),
fetchRegistrationTemplates(), fetchRegistrationSchoolFileTemplates(),
fetchRegistrationParentFiles() fetchRegistrationParentFileMasters()
]).then(([filesTemplateMasters, groupsData, filesTemplates, filesParentFiles]) => { ]).then(([dataSchoolFileMasters, groupsData, dataSchoolFileTemplates, dataParentFileMasters]) => {
setGroups(groupsData); setGroups(groupsData);
setTemplates(filesTemplates); setSchoolFileTemplates(dataSchoolFileTemplates);
setParentFiles(filesParentFiles); setParentFileMasters(dataParentFileMasters);
// Transformer chaque fichier pour inclure les informations complètes du groupe // Transformer chaque fichier pour inclure les informations complètes du groupe
const transformedFiles = filesTemplateMasters.map(file => transformFileData(file, groupsData)); const transformedFiles = dataSchoolFileMasters.map(file => transformFileData(file, groupsData));
setTemplateMasters(transformedFiles); setSchoolFileMasters(transformedFiles);
}).catch(err => { }).catch(err => {
console.log(err.message); console.log(err.message);
}).finally(() => { }).finally(() => {
@ -75,7 +78,7 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
const deleteTemplateMaster = (templateMaster) => { const deleteTemplateMaster = (templateMaster) => {
// Supprimer les clones associés via l'API DocuSeal // Supprimer les clones associés via l'API DocuSeal
const removeClonesPromises = templates const removeClonesPromises = schoolFileTemplates
.filter(template => template.master === templateMaster.id) .filter(template => template.master === templateMaster.id)
.map(template => removeTemplate(template.id)); .map(template => removeTemplate(template.id));
@ -90,10 +93,10 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
logger.debug('Master et clones supprimés avec succès de DocuSeal.'); logger.debug('Master et clones supprimés avec succès de DocuSeal.');
// Supprimer le template master de la base de données // Supprimer le template master de la base de données
deleteRegistrationTemplateMaster(templateMaster.id, csrfToken) deleteRegistrationSchoolFileMaster(templateMaster.id, csrfToken)
.then(response => { .then(response => {
if (response.ok) { if (response.ok) {
setTemplateMasters(templateMasters.filter(fichier => fichier.id !== templateMaster.id)); setSchoolFileMasters(schoolFileMasters.filter(fichier => fichier.id !== templateMaster.id));
alert('Fichier supprimé avec succès.'); alert('Fichier supprimé avec succès.');
} else { } else {
alert('Erreur lors de la suppression du fichier dans la base de données.'); alert('Erreur lors de la suppression du fichier dans la base de données.');
@ -151,11 +154,11 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
}; };
logger.debug(data); logger.debug(data);
createRegistrationTemplateMaster(data, csrfToken) createRegistrationSchoolFileMaster(data, csrfToken)
.then(data => { .then(data => {
// Transformer le nouveau fichier avec les informations du groupe // Transformer le nouveau fichier avec les informations du groupe
const transformedFile = transformFileData(data, groups); const transformedFile = transformFileData(data, groups);
setTemplateMasters(prevFiles => [...prevFiles, transformedFile]); setSchoolFileMasters(prevFiles => [...prevFiles, transformedFile]);
setIsModalOpen(false); setIsModalOpen(false);
}) })
.catch(error => { .catch(error => {
@ -172,11 +175,11 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
}; };
logger.debug(data); logger.debug(data);
editRegistrationTemplateMaster(id, data, csrfToken) editRegistrationSchoolFileMaster(id, data, csrfToken)
.then(data => { .then(data => {
// Transformer le fichier mis à jour avec les informations du groupe // Transformer le fichier mis à jour avec les informations du groupe
const transformedFile = transformFileData(data, groups); const transformedFile = transformFileData(data, groups);
setTemplateMasters(prevFichiers => setSchoolFileMasters(prevFichiers =>
prevFichiers.map(f => f.id === id ? transformedFile : f) prevFichiers.map(f => f.id === id ? transformedFile : f)
); );
setIsModalOpen(false); setIsModalOpen(false);
@ -224,10 +227,10 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
}; };
const handleGroupDelete = (groupId) => { const handleGroupDelete = (groupId) => {
// Vérifier si des templateMasters utilisent ce groupe // Vérifier si des schoolFileMasters utilisent ce groupe
const filesInGroup = templateMasters.filter(file => file.group && file.group.id === groupId); const filesInGroup = schoolFileMasters.filter(file => file.group && file.group.id === groupId);
if (filesInGroup.length > 0) { if (filesInGroup.length > 0) {
alert('Impossible de supprimer ce groupe car il contient des templateMasters. Veuillez d\'abord retirer tous les templateMasters de ce groupe.'); alert('Impossible de supprimer ce groupe car il contient des schoolFileMasters. Veuillez d\'abord retirer tous les schoolFileMasters de ce groupe.');
return; return;
} }
@ -329,10 +332,10 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
}; };
const handleCreate = (newParentFile) => { const handleCreate = (newParentFile) => {
return createRegistrationParentFiles(newParentFile, csrfToken) return createRegistrationParentFileMaster(newParentFile, csrfToken)
.then((createdFile) => { .then((createdFile) => {
// Ajouter le nouveau fichier parent à la liste existante // Ajouter le nouveau fichier parent à la liste existante
setParentFiles((prevFiles) => [...prevFiles, createdFile]); setParentFileMasters((prevFiles) => [...prevFiles, createdFile]);
logger.debug('Document parent créé avec succès:', createdFile); logger.debug('Document parent créé avec succès:', createdFile);
}) })
.catch((error) => { .catch((error) => {
@ -342,11 +345,11 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
}; };
const handleEdit = (id, updatedFile) => { const handleEdit = (id, updatedFile) => {
return editRegistrationParentFiles(id, updatedFile, csrfToken) return editRegistrationParentFileMaster(id, updatedFile, csrfToken)
.then((response) => { .then((response) => {
const modifiedFile = response.data; // Extraire les données mises à jour const modifiedFile = response.data; // Extraire les données mises à jour
// Mettre à jour la liste des fichiers parents // Mettre à jour la liste des fichiers parents
setParentFiles((prevFiles) => setParentFileMasters((prevFiles) =>
prevFiles.map((file) => (file.id === id ? modifiedFile : file)) prevFiles.map((file) => (file.id === id ? modifiedFile : file))
); );
logger.debug('Document parent mis à jour avec succès:', modifiedFile); logger.debug('Document parent mis à jour avec succès:', modifiedFile);
@ -360,10 +363,10 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
}; };
const handleDelete = (id) => { const handleDelete = (id) => {
return deleteRegistrationParentFiles(id, csrfToken) return deleteRegistrationParentFileMaster(id, csrfToken)
.then(() => { .then(() => {
// Mettre à jour la liste des fichiers parents en supprimant l'élément correspondant // Mettre à jour la liste des fichiers parents en supprimant l'élément correspondant
setParentFiles((prevFiles) => prevFiles.filter((file) => file.id !== id)); setParentFileMasters((prevFiles) => prevFiles.filter((file) => file.id !== id));
logger.debug('Document parent supprimé avec succès:', id); logger.debug('Document parent supprimé avec succès:', id);
}) })
.catch((error) => { .catch((error) => {
@ -371,7 +374,7 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
}); });
}; };
const filteredFiles = templateMasters.filter(file => { const filteredFiles = schoolFileMasters.filter(file => {
if (!selectedGroup) return true; if (!selectedGroup) return true;
return file.groups && file.groups.some(group => group.id === parseInt(selectedGroup)); return file.groups && file.groups.some(group => group.id === parseInt(selectedGroup));
}); });
@ -444,7 +447,7 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
<Modal <Modal
isOpen={isGroupModalOpen} isOpen={isGroupModalOpen}
setIsOpen={setIsGroupModalOpen} setIsOpen={setIsGroupModalOpen}
title={groupToEdit ? 'Modifier le groupe' : 'Ajouter un groupe de templateMasters'} title={groupToEdit ? 'Modifier le groupe' : 'Ajouter un groupe de schoolFileMasters'}
ContentComponent={() => ( ContentComponent={() => (
<RegistrationFileGroupForm <RegistrationFileGroupForm
onSubmit={handleGroupSubmit} onSubmit={handleGroupSubmit}
@ -513,7 +516,7 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
{/* Section Pièces à fournir */} {/* Section Pièces à fournir */}
<ParentFilesSection <ParentFilesSection
parentFiles={parentFiles} parentFiles={parentFiles}
setParentFiles={setParentFiles} setParentFileMasters={setParentFileMasters}
groups={groups} groups={groups}
handleCreate={handleCreate} handleCreate={handleCreate}
handleEdit={handleEdit} handleEdit={handleEdit}

View File

@ -26,10 +26,10 @@ export const BE_AUTH_INFO_SESSION = `${BASE_URL}/Auth/infoSession`
export const BE_SUBSCRIPTION_STUDENTS_URL = `${BASE_URL}/Subscriptions/students` // Récupère la liste des élèves inscrits ou en cours d'inscriptions export const BE_SUBSCRIPTION_STUDENTS_URL = `${BASE_URL}/Subscriptions/students` // Récupère la liste des élèves inscrits ou en cours d'inscriptions
export const BE_SUBSCRIPTION_CHILDRENS_URL = `${BASE_URL}/Subscriptions/children` // Récupère la liste des élèves d'un profil export const BE_SUBSCRIPTION_CHILDRENS_URL = `${BASE_URL}/Subscriptions/children` // Récupère la liste des élèves d'un profil
export const BE_SUBSCRIPTION_REGISTERFORMS_URL = `${BASE_URL}/Subscriptions/registerForms` export const BE_SUBSCRIPTION_REGISTERFORMS_URL = `${BASE_URL}/Subscriptions/registerForms`
export const BE_SUBSCRIPTION_REGISTRATION_TEMPLATE_MASTER_URL = `${BASE_URL}/Subscriptions/registrationTemplateMasters` export const BE_SUBSCRIPTION_REGISTRATIONSCHOOL_FILE_MASTERS_URL = `${BASE_URL}/Subscriptions/registrationSchoolFileMasters`
export const BE_SUBSCRIPTION_REGISTRATION_TEMPLATES_URL = `${BASE_URL}/Subscriptions/registrationTemplates` export const BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_TEMPLATES_URL = `${BASE_URL}/Subscriptions/registrationSchoolFileTemplates`
export const BE_SUBSCRIPTION_REGISTRATIONFILE_GROUPS_URL = `${BASE_URL}/Subscriptions/registrationFileGroups` export const BE_SUBSCRIPTION_REGISTRATIONFILE_GROUPS_URL = `${BASE_URL}/Subscriptions/registrationFileGroups`
export const BE_SUBSCRIPTION_REGISTRATION_PARENT_FILES_URL = `${BASE_URL}/Subscriptions/registrationParentFiles` export const BE_SUBSCRIPTION_REGISTRATION_PARENT_FILE_MASTERS_URL = `${BASE_URL}/Subscriptions/registrationParentFileMasters`
export const BE_SUBSCRIPTION_LAST_GUARDIAN_ID_URL = `${BASE_URL}/Subscriptions/lastGuardianId` export const BE_SUBSCRIPTION_LAST_GUARDIAN_ID_URL = `${BASE_URL}/Subscriptions/lastGuardianId`