mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
feat: Ajout de la possibilité de supprimer une association
guardian/student + ajout de la possibilité de créer un guardian pour un student + tri chrologique
This commit is contained in:
@ -5,6 +5,7 @@ from drf_yasg.utils import swagger_auto_schema
|
||||
from drf_yasg import openapi
|
||||
|
||||
from Subscriptions.models import Guardian, Student
|
||||
from Auth.models import ProfileRole
|
||||
from N3wtSchool import bdd
|
||||
|
||||
class GuardianView(APIView):
|
||||
@ -50,12 +51,34 @@ class DissociateGuardianView(APIView):
|
||||
# Supprimer la relation entre le student et le guardian
|
||||
student.guardians.remove(guardian)
|
||||
|
||||
if guardian.profile_role:
|
||||
guardian.profile_role.save()
|
||||
|
||||
isGuardianDeleted = False
|
||||
# Vérifier si le guardian n'est plus associé à aucun élève
|
||||
if guardian.student_set.count() == 0: # Utilise la relation ManyToMany inverse
|
||||
print(f'Le guardian {guardian} n\'est plus rattaché à aucun élève : on le supprime')
|
||||
isGuardianDeleted = True
|
||||
|
||||
# Vérifier si le guardian a un ProfileRole associé
|
||||
if guardian.profile_role:
|
||||
print(f'Suppression du ProfileRole associé au guardian {guardian}')
|
||||
guardian.profile_role.delete()
|
||||
|
||||
# Vérifier si le Profile n'a plus de ProfileRole associés
|
||||
profile = guardian.profile_role.profile
|
||||
if not ProfileRole.objects.filter(profile=profile).exists():
|
||||
print(f'Le profile {profile} n\'a plus de rôle associé : on le supprime')
|
||||
profile.delete()
|
||||
|
||||
# Supprimer le guardian
|
||||
guardian.delete()
|
||||
|
||||
return JsonResponse(
|
||||
{"message": f"Le guardian {guardian.last_name} {guardian.first_name} a été dissocié de l'étudiant {student.last_name} {student.first_name}."},
|
||||
{
|
||||
"message": f"Le guardian {guardian.last_name} {guardian.first_name} a été dissocié de l'étudiant {student.last_name} {student.first_name}.",
|
||||
"isGuardianDeleted": isGuardianDeleted
|
||||
},
|
||||
status=status.HTTP_200_OK
|
||||
)
|
||||
except Student.DoesNotExist:
|
||||
|
||||
@ -99,8 +99,7 @@ class RegisterFormView(APIView):
|
||||
registerForms_List = None
|
||||
|
||||
if registerForms_List:
|
||||
print(f'filtrate sur lestablishment : {establishment_id}')
|
||||
registerForms_List = registerForms_List.filter(establishment=establishment_id)
|
||||
registerForms_List = registerForms_List.filter(establishment=establishment_id).order_by('-last_update')
|
||||
|
||||
if not registerForms_List:
|
||||
return JsonResponse({'error': 'aucune donnée trouvée', 'count': 0}, safe=False)
|
||||
|
||||
Reference in New Issue
Block a user