mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
refactor: Document Ecole/Parent
This commit is contained in:
@ -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 (
|
||||||
|
|||||||
@ -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 d’inscription donné.
|
Récupère tous les fichiers liés à un dossier d’inscription 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 d’inscription 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
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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'),
|
||||||
|
|
||||||
|
|||||||
@ -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',
|
||||||
|
|||||||
@ -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)
|
||||||
@ -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:
|
||||||
|
|||||||
@ -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)
|
|
||||||
@ -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)
|
||||||
|
|||||||
@ -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)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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: {
|
||||||
|
|||||||
@ -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',
|
||||||
|
|||||||
@ -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}
|
||||||
@ -350,7 +350,7 @@ export default function InscriptionFormShared({
|
|||||||
downloadTemplate(requiredFileTemplates[currentPage - 2].slug)
|
downloadTemplate(requiredFileTemplates[currentPage - 2].slug)
|
||||||
.then((data) => fetch(data))
|
.then((data) => fetch(data))
|
||||||
.then((response) => response.blob())
|
.then((response) => response.blob())
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const file = new File([blob], `${requiredFileTemplates[currentPage - 2].name}.pdf`, { type: blob.type });
|
const file = new File([blob], `${requiredFileTemplates[currentPage - 2].name}.pdf`, { type: blob.type });
|
||||||
const updateData = new FormData();
|
const updateData = new FormData();
|
||||||
updateData.append('file', file);
|
updateData.append('file', 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,
|
||||||
|
|||||||
@ -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}
|
||||||
|
|||||||
@ -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`
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user