feat: Ajout de la photo pour le dossier de l'élève + correction

sauvegarde des datas des responsables
This commit is contained in:
N3WT DE COMPET
2025-05-01 14:59:19 +02:00
parent d37e6c384d
commit 5851341235
12 changed files with 187 additions and 86 deletions

View File

@ -229,25 +229,37 @@ class RegisterFormWithIdView(APIView):
"""
Modifie un dossier d'inscription donné.
"""
# Récupérer les données de la requête
studentForm_data = request.data.copy()
logger.info(f"Mise à jour du dossier d'inscription {studentForm_data}")
studentForm_data = request.data.get('data', '{}')
try:
data = json.loads(studentForm_data)
except json.JSONDecodeError:
return JsonResponse({"error": "Invalid JSON format in 'data'"}, status=status.HTTP_400_BAD_REQUEST)
_status = studentForm_data.pop('status', 0)
if isinstance(_status, list): # Cas Multipart/data, les données sont envoyées sous forme de liste, c'est nul
_status = int(_status[0])
else:
_status = int(_status)
# Extraire le fichier photo
photo_file = request.FILES.get('photo')
# Ajouter la photo aux données de l'étudiant
if photo_file:
data['student']['photo'] = photo_file
# Gérer le champ `_status`
_status = data.pop('status', 0)
_status = int(_status)
# Récupérer le dossier d'inscription
registerForm = bdd.getObject(_objectName=RegistrationForm, _columnName='student__id', _value=id)
if not registerForm:
return JsonResponse({"error": "Dossier d'inscription introuvable"}, status=status.HTTP_404_NOT_FOUND)
studentForm_serializer = RegistrationFormSerializer(registerForm, data=studentForm_data, partial=True)
studentForm_serializer = RegistrationFormSerializer(registerForm, data=data, partial=True)
if studentForm_serializer.is_valid():
studentForm_serializer.save()
# Sauvegarder la photo si elle est présente dans la requête
if photo_file:
student = registerForm.student
student.photo.save(photo_file.name, photo_file, save=True)
else:
return JsonResponse(studentForm_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)