refactor: Partie "School"

This commit is contained in:
N3WT DE COMPET
2025-01-12 13:18:34 +01:00
parent 83f4d67a6f
commit 58fe509734
7 changed files with 139 additions and 182 deletions

View File

@ -4,59 +4,11 @@ from django.utils.decorators import method_decorator
from rest_framework.parsers import JSONParser
from rest_framework.views import APIView
from django.core.cache import cache
from django.core.exceptions import ObjectDoesNotExist
from .models import Teacher, Speciality, SchoolClass, Planning
from .serializers import TeacherSerializer, SpecialitySerializer, SchoolClassSerializer, PlanningSerializer
from N3wtSchool import bdd
class TeachersView(APIView):
def get(self, request):
teachersList=bdd.getAllObjects(Teacher)
teachers_serializer=TeacherSerializer(teachersList, many=True)
return JsonResponse(teachers_serializer.data, safe=False)
@method_decorator(csrf_protect, name='dispatch')
@method_decorator(ensure_csrf_cookie, name='dispatch')
class EnseignantView(APIView):
def get (self, request, _id):
teacher = bdd.getObject(_objectName=Teacher, _columnName='id', _value=_id)
teacher_serializer=TeacherSerializer(teacher)
return JsonResponse(teacher_serializer.data, safe=False)
def post(self, request):
teacher_data=JSONParser().parse(request)
teacher_serializer = TeacherSerializer(data=teacher_data)
if teacher_serializer.is_valid():
teacher_serializer.save()
return JsonResponse(teacher_serializer.data, safe=False)
return JsonResponse(teacher_serializer.errors, safe=False)
def put(self, request, _id):
teacher_data=JSONParser().parse(request)
teacher = bdd.getObject(_objectName=Teacher, _columnName='id', _value=_id)
teacher_serializer = TeacherSerializer(teacher, data=teacher_data)
if teacher_serializer.is_valid():
teacher_serializer.save()
return JsonResponse(teacher_serializer.data, safe=False)
return JsonResponse(teacher_serializer.errors, safe=False)
def delete(self, request, _id):
teacher = bdd.getObject(_objectName=Teacher, _columnName='id', _value=_id)
if teacher is not None:
if teacher.profilAssocie:
print('Suppression du profil associé')
teacher.profilAssocie.delete()
teacher.delete()
return JsonResponse({'message': 'La suppression de l\'teacher a été effectuée avec succès'}, safe=False)
else:
return JsonResponse({'erreur': 'L\'teacher n\'a pas été trouvé'}, safe=False)
@method_decorator(csrf_protect, name='dispatch')
@method_decorator(ensure_csrf_cookie, name='dispatch')
class SpecialitiesView(APIView):
@ -116,11 +68,47 @@ class SpecialityView(APIView):
return JsonResponse(speciality_serializer.errors, safe=False)
def delete(self, request, _id):
speciality = bdd.getObject(_objectName=Speciality, _columnName='id', _value=_id)
if speciality != None:
speciality.delete()
return JsonResponse("La suppression de la spécialité a été effectuée avec succès", safe=False)
return bdd.delete_object(Speciality, _id)
class TeachersView(APIView):
def get(self, request):
teachersList=bdd.getAllObjects(Teacher)
teachers_serializer=TeacherSerializer(teachersList, many=True)
return JsonResponse(teachers_serializer.data, safe=False)
@method_decorator(csrf_protect, name='dispatch')
@method_decorator(ensure_csrf_cookie, name='dispatch')
class TeacherView(APIView):
def get (self, request, _id):
teacher = bdd.getObject(_objectName=Teacher, _columnName='id', _value=_id)
teacher_serializer=TeacherSerializer(teacher)
return JsonResponse(teacher_serializer.data, safe=False)
def post(self, request):
teacher_data=JSONParser().parse(request)
teacher_serializer = TeacherSerializer(data=teacher_data)
if teacher_serializer.is_valid():
teacher_serializer.save()
return JsonResponse(teacher_serializer.data, safe=False)
return JsonResponse(teacher_serializer.errors, safe=False)
def put(self, request, _id):
teacher_data=JSONParser().parse(request)
teacher = bdd.getObject(_objectName=Teacher, _columnName='id', _value=_id)
teacher_serializer = TeacherSerializer(teacher, data=teacher_data)
if teacher_serializer.is_valid():
teacher_serializer.save()
return JsonResponse(teacher_serializer.data, safe=False)
return JsonResponse(teacher_serializer.errors, safe=False)
def delete(self, request, _id):
return bdd.delete_object(Teacher, _id, related_field='associated_profile')
@method_decorator(csrf_protect, name='dispatch')
@method_decorator(ensure_csrf_cookie, name='dispatch')
@ -180,23 +168,7 @@ class ClasseView(APIView):
return JsonResponse(classe_serializer.errors, safe=False)
def delete(self, request, _id):
schoolClass = bdd.getObject(_objectName=SchoolClass, _columnName='id', _value=_id)
if schoolClass is not None:
# Supprimer les plannings associés à la schoolClass
for planning in schoolClass.plannings.all():
print(f'Planning à supprimer : {planning}')
planning.delete()
# Retirer la schoolClass des élèves associés
for eleve in schoolClass.eleves.all():
print(f'Student à retirer de la schoolClass : {eleve}')
eleve.classeAssociee = None
eleve.save()
# Supprimer la schoolClass
schoolClass.delete()
return JsonResponse("La suppression de la schoolClass a été effectuée avec succès", safe=False)
return bdd.delete_object(SchoolClass, _id)
@method_decorator(csrf_protect, name='dispatch')