feat: Sauvegarde des compétences d'un élève [#16]

This commit is contained in:
N3WT DE COMPET
2025-05-20 17:31:50 +02:00
parent c9c7e7715e
commit 05136035ab
19 changed files with 269 additions and 137 deletions

View File

@ -17,7 +17,6 @@ import Subscriptions.util as util
from Subscriptions.serializers import RegistrationFormSerializer, RegistrationSchoolFileTemplateSerializer, RegistrationParentFileTemplateSerializer
from Subscriptions.pagination import CustomSubscriptionPagination
from Subscriptions.models import (
Student,
Guardian,
RegistrationForm,
RegistrationSchoolFileTemplate,
@ -26,7 +25,7 @@ from Subscriptions.models import (
StudentCompetency
)
from Subscriptions.automate import updateStateMachine
from Common.models import Competency
from School.models import EstablishmentCompetency
from N3wtSchool import settings, bdd
from django.db.models import Q
@ -246,6 +245,7 @@ class RegisterFormWithIdView(APIView):
"""
studentForm_data = request.data.get('data', '{}')
try:
data = json.loads(studentForm_data)
except json.JSONDecodeError:
@ -306,13 +306,13 @@ class RegisterFormWithIdView(APIView):
# L'école doit désormais valider le dossier d'inscription
try:
# Génération de la fiche d'inscription au format PDF
base_dir = os.path.join(settings.MEDIA_ROOT, f"registration_files/dossier_rf_{registerForm.pk}")
os.makedirs(base_dir, exist_ok=True)
# base_dir = os.path.join(settings.MEDIA_ROOT, f"registration_files/dossier_rf_{registerForm.pk}")
# os.makedirs(base_dir, exist_ok=True)
# Fichier PDF initial
initial_pdf = f"{base_dir}/Inscription_{registerForm.student.last_name}_{registerForm.student.first_name}.pdf"
registerForm.registration_file = util.rfToPDF(registerForm, initial_pdf)
registerForm.save()
# # Fichier PDF initial
# initial_pdf = f"{base_dir}/Inscription_{registerForm.student.last_name}_{registerForm.student.first_name}.pdf"
# registerForm.registration_file = util.rfToPDF(registerForm, initial_pdf)
# registerForm.save()
# Mise à jour de l'automate
# Vérification de la présence du fichier SEPA
@ -376,7 +376,6 @@ class RegisterFormWithIdView(APIView):
File(merged_pdf_content),
save=True
)
# Valorisation des StudentCompetency pour l'élève
try:
student = registerForm.student
@ -384,15 +383,19 @@ class RegisterFormWithIdView(APIView):
if student.level:
cycle = student.level.cycle.number
if cycle:
competencies = Competency.objects.filter(
category__domain__cycle=cycle
).filter(
Q(end_of_cycle=True) | Q(level=student.level.name)
# Récupérer les EstablishmentCompetency de l'établissement et du cycle de l'élève
establishment_competencies = EstablishmentCompetency.objects.filter(
establishment=registerForm.establishment,
custom_category__domain__cycle=cycle
) | EstablishmentCompetency.objects.filter(
establishment=registerForm.establishment,
competency__category__domain__cycle=cycle
)
for comp in competencies:
establishment_competencies = establishment_competencies.distinct()
for ec in establishment_competencies:
StudentCompetency.objects.get_or_create(
student=student,
competency=comp
establishment_competency=ec
)
except Exception as e:
logger.error(f"Erreur lors de la valorisation des StudentCompetency: {e}")