feat: Ajout des Bundles de fichiers [#24]

This commit is contained in:
Luc SORIGNET
2025-02-10 18:35:24 +01:00
parent fb7fbaf839
commit ffc6ce8de8
25 changed files with 1736 additions and 743 deletions

View File

@ -0,0 +1,125 @@
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, RegistrationFileTemplate
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.
"""
groups = RegistrationFileGroup.objects.all()
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)
templates = RegistrationFileTemplate.objects.filter(group=group)
templates_data = list(templates.values())
return JsonResponse(templates_data, safe=False)
except RegistrationFileGroup.DoesNotExist:
return JsonResponse({'error': 'Le groupe de fichiers n\'a pas été trouvé'}, status=404)