mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 16:03:21 +00:00
131 lines
5.4 KiB
Python
131 lines
5.4 KiB
Python
from django.http.response import JsonResponse
|
|
from drf_yasg.utils import swagger_auto_schema
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
from rest_framework import status
|
|
from rest_framework.decorators import action, api_view
|
|
from drf_yasg.utils import swagger_auto_schema
|
|
from drf_yasg import openapi
|
|
|
|
from Subscriptions.serializers import RegistrationFileGroupSerializer
|
|
from Subscriptions.models import RegistrationFileGroup, RegistrationSchoolFileMaster
|
|
from N3wtSchool import bdd
|
|
|
|
class RegistrationFileGroupView(APIView):
|
|
@swagger_auto_schema(
|
|
operation_description="Récupère tous les groupes de fichiers d'inscription",
|
|
responses={200: RegistrationFileGroupSerializer(many=True)}
|
|
)
|
|
def get(self, request):
|
|
"""
|
|
Récupère tous les groupes de fichiers d'inscription.
|
|
"""
|
|
establishment_id = request.GET.get('establishment_id', None)
|
|
if establishment_id is None:
|
|
return JsonResponse({'error': 'establishment_id est requis'}, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
groups = RegistrationFileGroup.objects.all()
|
|
if groups:
|
|
groups = groups.filter(establishment_id=establishment_id).distinct()
|
|
serializer = RegistrationFileGroupSerializer(groups, many=True)
|
|
return Response(serializer.data)
|
|
|
|
@swagger_auto_schema(
|
|
operation_description="Crée un nouveau groupe de fichiers d'inscription",
|
|
request_body=RegistrationFileGroupSerializer,
|
|
responses={
|
|
201: RegistrationFileGroupSerializer,
|
|
400: "Données invalides"
|
|
}
|
|
)
|
|
def post(self, request):
|
|
"""
|
|
Crée un nouveau groupe de fichiers d'inscription.
|
|
"""
|
|
serializer = RegistrationFileGroupSerializer(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 RegistrationFileGroupSimpleView(APIView):
|
|
@swagger_auto_schema(
|
|
operation_description="Récupère un groupe de fichiers d'inscription spécifique",
|
|
responses={
|
|
200: RegistrationFileGroupSerializer,
|
|
404: "Groupe non trouvé"
|
|
}
|
|
)
|
|
def get(self, request, id):
|
|
"""
|
|
Récupère un groupe de fichiers d'inscription spécifique.
|
|
"""
|
|
group = bdd.getObject(_objectName=RegistrationFileGroup, _columnName='id', _value=id)
|
|
if group is None:
|
|
return JsonResponse({"errorMessage": "Le groupe de fichiers n'a pas été trouvé"},
|
|
status=status.HTTP_404_NOT_FOUND)
|
|
serializer = RegistrationFileGroupSerializer(group)
|
|
return JsonResponse(serializer.data)
|
|
|
|
@swagger_auto_schema(
|
|
operation_description="Met à jour un groupe de fichiers d'inscription",
|
|
request_body=RegistrationFileGroupSerializer,
|
|
responses={
|
|
200: RegistrationFileGroupSerializer,
|
|
400: "Données invalides",
|
|
404: "Groupe non trouvé"
|
|
}
|
|
)
|
|
def put(self, request, id):
|
|
"""
|
|
Met à jour un groupe de fichiers d'inscription existant.
|
|
"""
|
|
group = bdd.getObject(_objectName=RegistrationFileGroup, _columnName='id', _value=id)
|
|
if group is None:
|
|
return JsonResponse({'erreur': "Le groupe de fichiers n'a pas été trouvé"},
|
|
status=status.HTTP_404_NOT_FOUND)
|
|
serializer = RegistrationFileGroupSerializer(group, data=request.data)
|
|
if serializer.is_valid():
|
|
serializer.save()
|
|
return Response(serializer.data)
|
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
@swagger_auto_schema(
|
|
operation_description="Supprime un groupe de fichiers d'inscription",
|
|
responses={
|
|
204: "Suppression réussie",
|
|
404: "Groupe non trouvé"
|
|
}
|
|
)
|
|
def delete(self, request, id):
|
|
"""
|
|
Supprime un groupe de fichiers d'inscription.
|
|
"""
|
|
group = bdd.getObject(_objectName=RegistrationFileGroup, _columnName='id', _value=id)
|
|
if group is not None:
|
|
group.delete()
|
|
return JsonResponse({'message': 'La suppression du groupe a été effectuée avec succès'},
|
|
status=status.HTTP_204_NO_CONTENT)
|
|
return JsonResponse({'erreur': "Le groupe de fichiers n'a pas été trouvé"},
|
|
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 fichiers d'inscription d'un groupe donné",
|
|
operation_summary="Récupèrer les fichiers d'inscription d'un groupe donné"
|
|
)
|
|
@api_view(['GET'])
|
|
def get_registration_files_by_group(request, id):
|
|
try:
|
|
group = RegistrationFileGroup.objects.get(id=id)
|
|
templateMasters = RegistrationSchoolFileMaster.objects.filter(groups=group)
|
|
templates_data = list(templateMasters.values())
|
|
return JsonResponse(templates_data, safe=False)
|
|
except RegistrationFileGroup.DoesNotExist:
|
|
return JsonResponse({'error': 'Le groupe de fichiers n\'a pas été trouvé'}, status=404) |