mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
212 lines
8.8 KiB
Python
212 lines
8.8 KiB
Python
from django.http.response import JsonResponse
|
||
from django.core.files import File
|
||
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
|
||
|
||
import os
|
||
|
||
from Subscriptions.serializers import RegistrationFileTemplateSerializer, RegistrationFileSerializer
|
||
from Subscriptions.models import RegistrationFileTemplate, RegistrationFile
|
||
from N3wtSchool import bdd
|
||
|
||
|
||
class RegistrationFileTemplateView(APIView):
|
||
@swagger_auto_schema(
|
||
operation_description="Récupère tous les fichiers templates pour les dossiers d'inscription",
|
||
responses={200: RegistrationFileTemplateSerializer(many=True)}
|
||
)
|
||
def get(self, request):
|
||
"""
|
||
Récupère les fichiers templates pour les dossiers d’inscription.
|
||
"""
|
||
files = RegistrationFileTemplate.objects.all()
|
||
serializer = RegistrationFileTemplateSerializer(files, many=True)
|
||
return Response(serializer.data)
|
||
|
||
@swagger_auto_schema(
|
||
operation_description="Crée un nouveau fichier template pour les dossiers d'inscription",
|
||
request_body=RegistrationFileTemplateSerializer,
|
||
responses={
|
||
201: RegistrationFileTemplateSerializer,
|
||
400: "Données invalides"
|
||
}
|
||
)
|
||
def post(self, request):
|
||
"""
|
||
Crée un fichier template pour les dossiers d’inscription.
|
||
"""
|
||
serializer = RegistrationFileTemplateSerializer(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 RegistrationFileTemplateSimpleView(APIView):
|
||
"""
|
||
Gère les fichiers templates pour les dossiers d’inscription.
|
||
"""
|
||
parser_classes = (MultiPartParser, FormParser)
|
||
|
||
@swagger_auto_schema(
|
||
operation_description="Récupère un fichier template spécifique",
|
||
responses={
|
||
200: RegistrationFileTemplateSerializer,
|
||
404: "Fichier template non trouvé"
|
||
}
|
||
)
|
||
def get(self, request, id):
|
||
"""
|
||
Récupère les fichiers templates pour les dossiers d’inscription.
|
||
"""
|
||
registationFileTemplate = bdd.getObject(_objectName=RegistrationFileTemplate, _columnName='id', _value=id)
|
||
if registationFileTemplate is None:
|
||
return JsonResponse({"errorMessage":'Le fichier d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
|
||
serializer = RegistrationFileTemplateSerializer(registationFileTemplate)
|
||
return JsonResponse(serializer.data, safe=False)
|
||
|
||
@swagger_auto_schema(
|
||
operation_description="Met à jour un fichier template existant",
|
||
request_body=RegistrationFileTemplateSerializer,
|
||
responses={
|
||
201: RegistrationFileTemplateSerializer,
|
||
400: "Données invalides",
|
||
404: "Fichier template non trouvé"
|
||
}
|
||
)
|
||
def put(self, request, id):
|
||
"""
|
||
Met à jour un fichier template existant.
|
||
"""
|
||
registationFileTemplate = bdd.getObject(_objectName=RegistrationFileTemplate, _columnName='id', _value=id)
|
||
if registationFileTemplate is None:
|
||
return JsonResponse({'erreur': 'Le fichier d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
|
||
serializer = RegistrationFileTemplateSerializer(registationFileTemplate,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)
|
||
|
||
@swagger_auto_schema(
|
||
operation_description="Supprime un fichier template",
|
||
responses={
|
||
204: "Suppression réussie",
|
||
404: "Fichier template non trouvé"
|
||
}
|
||
)
|
||
def delete(self, request, id):
|
||
"""
|
||
Supprime un fichier template existant.
|
||
"""
|
||
registrationFileTemplate = bdd.getObject(_objectName=RegistrationFileTemplate, _columnName='id', _value=id)
|
||
if registrationFileTemplate is not None:
|
||
registrationFileTemplate.file.delete() # Supprimer le fichier uploadé
|
||
registrationFileTemplate.delete()
|
||
return JsonResponse({'message': 'La suppression du fichier d\'inscription a été effectuée avec succès'}, safe=False, status=status.HTTP_204_NO_CONTENT)
|
||
else:
|
||
return JsonResponse({'erreur': 'Le fichier d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
|
||
|
||
class RegistrationFileView(APIView):
|
||
@swagger_auto_schema(
|
||
operation_description="Récupère tous les fichiers d'inscription",
|
||
responses={200: RegistrationFileSerializer(many=True)}
|
||
)
|
||
def get(self, request):
|
||
"""
|
||
Récupère les fichiers liés à un dossier d’inscription donné.
|
||
"""
|
||
files = RegistrationFile.objects.all()
|
||
serializer = RegistrationFileSerializer(files, many=True)
|
||
return Response(serializer.data)
|
||
|
||
@swagger_auto_schema(
|
||
operation_description="Crée un nouveau fichier d'inscription",
|
||
request_body=RegistrationFileSerializer,
|
||
responses={
|
||
201: RegistrationFileSerializer,
|
||
400: "Données invalides"
|
||
}
|
||
)
|
||
def post(self, request):
|
||
"""
|
||
Crée un RegistrationFile pour le RegistrationForm associé.
|
||
"""
|
||
serializer = RegistrationFileSerializer(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 RegistrationFileSimpleView(APIView):
|
||
"""
|
||
Gère la création, mise à jour et suppression de fichiers liés à un dossier d’inscription.
|
||
"""
|
||
parser_classes = (MultiPartParser, FormParser)
|
||
|
||
@swagger_auto_schema(
|
||
operation_description="Récupère un fichier d'inscription spécifique",
|
||
responses={
|
||
200: RegistrationFileSerializer,
|
||
404: "Fichier non trouvé"
|
||
}
|
||
)
|
||
def get(self, request, id):
|
||
"""
|
||
Récupère les fichiers liés à un dossier d’inscription donné.
|
||
"""
|
||
registationFile = bdd.getObject(_objectName=RegistrationFile, _columnName='id', _value=id)
|
||
if registationFile is None:
|
||
return JsonResponse({"errorMessage":'Le fichier d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
|
||
serializer = RegistrationFileSerializer(registationFile)
|
||
return JsonResponse(serializer.data, safe=False)
|
||
|
||
@swagger_auto_schema(
|
||
operation_description="Met à jour un fichier d'inscription existant",
|
||
request_body=RegistrationFileSerializer,
|
||
responses={
|
||
200: openapi.Response(
|
||
description="Fichier mis à jour avec succès",
|
||
schema=RegistrationFileSerializer
|
||
),
|
||
400: "Données invalides",
|
||
404: "Fichier non trouvé"
|
||
}
|
||
)
|
||
def put(self, request, id):
|
||
"""
|
||
Met à jour un RegistrationFile existant.
|
||
"""
|
||
registrationFile = bdd.getObject(_objectName=RegistrationFile, _columnName='id', _value=id)
|
||
if registrationFile is None:
|
||
return JsonResponse({'erreur': 'Le fichier d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
|
||
serializer = RegistrationFileSerializer(registrationFile, data=request.data)
|
||
if serializer.is_valid():
|
||
serializer.save()
|
||
return Response({'message': 'Fichier 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 fichier d'inscription",
|
||
responses={
|
||
200: "Suppression réussie",
|
||
404: "Fichier non trouvé"
|
||
}
|
||
)
|
||
def delete(self, request, id):
|
||
"""
|
||
Supprime un RegistrationFile existant.
|
||
"""
|
||
registrationFile = bdd.getObject(_objectName=RegistrationFile, _columnName='id', _value=id)
|
||
if registrationFile is not None:
|
||
registrationFile.file.delete() # Supprimer le fichier uploadé
|
||
registrationFile.delete()
|
||
return JsonResponse({'message': 'La suppression du fichier a été effectuée avec succès'}, safe=False)
|
||
else:
|
||
return JsonResponse({'erreur': 'Le fichier n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
|