mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
445 lines
20 KiB
Python
445 lines
20 KiB
Python
from django.http.response import JsonResponse
|
|
from django.views.decorators.csrf import ensure_csrf_cookie, csrf_protect
|
|
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, Discount, Fee, PaymentPlan, PaymentMode, Establishment
|
|
from .serializers import TeacherSerializer, SpecialitySerializer, SchoolClassSerializer, PlanningSerializer, DiscountSerializer, FeeSerializer, PaymentPlanSerializer, PaymentModeSerializer, EstablishmentSerializer
|
|
from N3wtSchool import bdd
|
|
from N3wtSchool.bdd import delete_object, getAllObjects, getObject
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class SpecialitiesView(APIView):
|
|
def get(self, request):
|
|
specialitiesList = getAllObjects(Speciality)
|
|
specialities_serializer = SpecialitySerializer(specialitiesList, many=True)
|
|
return JsonResponse(specialities_serializer.data, safe=False)
|
|
|
|
def post(self, request):
|
|
specialities_data = JSONParser().parse(request)
|
|
all_valid = True
|
|
for speciality_data in specialities_data:
|
|
speciality_serializer = SpecialitySerializer(data=speciality_data)
|
|
if speciality_serializer.is_valid():
|
|
speciality_serializer.save()
|
|
else:
|
|
all_valid = False
|
|
break
|
|
if all_valid:
|
|
specialitiesList = getAllObjects(Speciality)
|
|
specialities_serializer = SpecialitySerializer(specialitiesList, many=True)
|
|
return JsonResponse(specialities_serializer.data, safe=False)
|
|
return JsonResponse(speciality_serializer.errors, safe=False)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class SpecialityView(APIView):
|
|
def get(self, request, _id):
|
|
speciality = getObject(_objectName=Speciality, _columnName='id', _value=_id)
|
|
speciality_serializer = SpecialitySerializer(speciality)
|
|
return JsonResponse(speciality_serializer.data, safe=False)
|
|
|
|
def post(self, request):
|
|
speciality_data=JSONParser().parse(request)
|
|
speciality_serializer = SpecialitySerializer(data=speciality_data)
|
|
|
|
if speciality_serializer.is_valid():
|
|
speciality_serializer.save()
|
|
return JsonResponse(speciality_serializer.data, safe=False, status=201)
|
|
|
|
return JsonResponse(speciality_serializer.errors, safe=False, status=400)
|
|
|
|
def put(self, request, _id):
|
|
speciality_data=JSONParser().parse(request)
|
|
speciality = getObject(_objectName=Speciality, _columnName='id', _value=_id)
|
|
speciality_serializer = SpecialitySerializer(speciality, data=speciality_data)
|
|
if speciality_serializer.is_valid():
|
|
speciality_serializer.save()
|
|
return JsonResponse(speciality_serializer.data, safe=False)
|
|
|
|
return JsonResponse(speciality_serializer.errors, safe=False)
|
|
|
|
def delete(self, request, _id):
|
|
return delete_object(Speciality, _id)
|
|
|
|
class TeachersView(APIView):
|
|
def get(self, request):
|
|
teachersList=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 = 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 = 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 delete_object(Teacher, _id, related_field='associated_profile')
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class ClassesView(APIView):
|
|
def get(self, request):
|
|
classesList=getAllObjects(SchoolClass)
|
|
classes_serializer=SchoolClassSerializer(classesList, many=True)
|
|
return JsonResponse(classes_serializer.data, safe=False)
|
|
|
|
def post(self, request):
|
|
all_valid = True
|
|
classes_data=JSONParser().parse(request)
|
|
for classe_data in classes_data:
|
|
classe_serializer = SchoolClassSerializer(data=classe_data)
|
|
|
|
if classe_serializer.is_valid():
|
|
classe_serializer.save()
|
|
else:
|
|
all_valid = False
|
|
break
|
|
|
|
if all_valid:
|
|
classesList = getAllObjects(SchoolClass)
|
|
classes_serializer = SchoolClassSerializer(classesList, many=True)
|
|
|
|
return JsonResponse(classes_serializer.data, safe=False)
|
|
|
|
return JsonResponse(classe_serializer.errors, safe=False)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class ClasseView(APIView):
|
|
def get (self, request, _id):
|
|
schoolClass = getObject(_objectName=SchoolClass, _columnName='id', _value=_id)
|
|
classe_serializer=SchoolClassSerializer(schoolClass)
|
|
|
|
return JsonResponse(classe_serializer.data, safe=False)
|
|
|
|
def post(self, request):
|
|
classe_data=JSONParser().parse(request)
|
|
classe_serializer = SchoolClassSerializer(data=classe_data)
|
|
|
|
if classe_serializer.is_valid():
|
|
classe_serializer.save()
|
|
return JsonResponse(classe_serializer.data, safe=False)
|
|
|
|
return JsonResponse(classe_serializer.errors, safe=False)
|
|
|
|
def put(self, request, _id):
|
|
classe_data=JSONParser().parse(request)
|
|
schoolClass = getObject(_objectName=SchoolClass, _columnName='id', _value=_id)
|
|
classe_serializer = SchoolClassSerializer(schoolClass, data=classe_data)
|
|
if classe_serializer.is_valid():
|
|
classe_serializer.save()
|
|
return JsonResponse(classe_serializer.data, safe=False)
|
|
|
|
return JsonResponse(classe_serializer.errors, safe=False)
|
|
|
|
def delete(self, request, _id):
|
|
return delete_object(SchoolClass, _id)
|
|
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class PlanningsView(APIView):
|
|
def get(self, request):
|
|
schedulesList=getAllObjects(Planning)
|
|
schedules_serializer=PlanningSerializer(schedulesList, many=True)
|
|
return JsonResponse(schedules_serializer.data, safe=False)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class PlanningView(APIView):
|
|
def get (self, request, _id):
|
|
planning = getObject(_objectName=Planning, _columnName='classe__id', _value=_id)
|
|
planning_serializer=PlanningSerializer(planning)
|
|
|
|
return JsonResponse(planning_serializer.data, safe=False)
|
|
|
|
def post(self, request):
|
|
planning_data=JSONParser().parse(request)
|
|
planning_serializer = PlanningSerializer(data=planning_data)
|
|
|
|
if planning_serializer.is_valid():
|
|
planning_serializer.save()
|
|
return JsonResponse(planning_serializer.data, safe=False)
|
|
|
|
return JsonResponse(planning_serializer.errors, safe=False)
|
|
|
|
def put(self, request, _id):
|
|
planning_data = JSONParser().parse(request)
|
|
|
|
try:
|
|
planning = Planning.objects.get(id=_id)
|
|
except Planning.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
except Planning.MultipleObjectsReturned:
|
|
return JsonResponse({'error': 'Multiple objects found'}, status=400)
|
|
|
|
planning_serializer = PlanningSerializer(planning, data=planning_data)
|
|
|
|
if planning_serializer.is_valid():
|
|
planning_serializer.save()
|
|
return JsonResponse(planning_serializer.data, safe=False)
|
|
|
|
return JsonResponse(planning_serializer.errors, safe=False)
|
|
|
|
|
|
# Vues pour les réductions (Discount)
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class DiscountsView(APIView):
|
|
def get(self, request, _filter, *args, **kwargs):
|
|
|
|
if _filter not in ['registration', 'tuition']:
|
|
return JsonResponse({"error": "Invalid type parameter. Must be 'registration' or 'tuition'."}, safe=False, status=400)
|
|
|
|
discount_type_value = 0 if _filter == 'registration' else 1
|
|
discounts = Discount.objects.filter(type=discount_type_value)
|
|
discounts_serializer = DiscountSerializer(discounts, many=True)
|
|
|
|
return JsonResponse(discounts_serializer.data, safe=False, status=200)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class DiscountView(APIView):
|
|
def get(self, request, _id):
|
|
try:
|
|
discount = Discount.objects.get(id=_id)
|
|
discount_serializer = DiscountSerializer(discount)
|
|
return JsonResponse(discount_serializer.data, safe=False)
|
|
except Discount.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
|
|
def post(self, request):
|
|
discount_data = JSONParser().parse(request)
|
|
discount_serializer = DiscountSerializer(data=discount_data)
|
|
if discount_serializer.is_valid():
|
|
discount_serializer.save()
|
|
return JsonResponse(discount_serializer.data, safe=False, status=201)
|
|
return JsonResponse(discount_serializer.errors, safe=False, status=400)
|
|
|
|
def put(self, request, _id):
|
|
discount_data = JSONParser().parse(request)
|
|
try:
|
|
discount = Discount.objects.get(id=_id)
|
|
except Discount.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
discount_serializer = DiscountSerializer(discount, data=discount_data, partial=True) # Utilisation de partial=True
|
|
if discount_serializer.is_valid():
|
|
discount_serializer.save()
|
|
return JsonResponse(discount_serializer.data, safe=False)
|
|
return JsonResponse(discount_serializer.errors, safe=False, status=400)
|
|
|
|
def delete(self, request, _id):
|
|
return delete_object(Discount, _id)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class FeesView(APIView):
|
|
def get(self, request, _filter, *args, **kwargs):
|
|
|
|
if _filter not in ['registration', 'tuition']:
|
|
return JsonResponse({"error": "Invalid type parameter. Must be 'registration' or 'tuition'."}, safe=False, status=400)
|
|
|
|
fee_type_value = 0 if _filter == 'registration' else 1
|
|
fees = Fee.objects.filter(type=fee_type_value)
|
|
fee_serializer = FeeSerializer(fees, many=True)
|
|
|
|
return JsonResponse(fee_serializer.data, safe=False, status=200)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class FeeView(APIView):
|
|
def get(self, request, _id):
|
|
try:
|
|
fee = Fee.objects.get(id=_id)
|
|
fee_serializer = FeeSerializer(fee)
|
|
return JsonResponse(fee_serializer.data, safe=False)
|
|
except Fee.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
|
|
def post(self, request):
|
|
fee_data = JSONParser().parse(request)
|
|
fee_serializer = FeeSerializer(data=fee_data)
|
|
if fee_serializer.is_valid():
|
|
fee_serializer.save()
|
|
return JsonResponse(fee_serializer.data, safe=False, status=201)
|
|
return JsonResponse(fee_serializer.errors, safe=False, status=400)
|
|
|
|
def put(self, request, _id):
|
|
fee_data = JSONParser().parse(request)
|
|
try:
|
|
fee = Fee.objects.get(id=_id)
|
|
except Fee.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
fee_serializer = FeeSerializer(fee, data=fee_data, partial=True)
|
|
if fee_serializer.is_valid():
|
|
fee_serializer.save()
|
|
return JsonResponse(fee_serializer.data, safe=False)
|
|
return JsonResponse(fee_serializer.errors, safe=False, status=400)
|
|
|
|
def delete(self, request, _id):
|
|
return delete_object(Fee, _id)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class PaymentPlansView(APIView):
|
|
def get(self, request, _filter, *args, **kwargs):
|
|
|
|
if _filter not in ['registration', 'tuition']:
|
|
return JsonResponse({"error": "Invalid type parameter. Must be 'registration' or 'tuition'."}, safe=False, status=400)
|
|
|
|
type_value = 0 if _filter == 'registration' else 1
|
|
paymentPlans = PaymentPlan.objects.filter(type=type_value)
|
|
payment_plans_serializer = PaymentPlanSerializer(paymentPlans, many=True)
|
|
|
|
return JsonResponse(payment_plans_serializer.data, safe=False, status=200)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class PaymentPlanView(APIView):
|
|
def get(self, request, _id):
|
|
try:
|
|
payment_plan = PaymentPlan.objects.get(id=_id)
|
|
payment_plan_serializer = PaymentPlanSerializer(payment_plan)
|
|
return JsonResponse(payment_plan_serializer.data, safe=False)
|
|
except PaymentPlan.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
|
|
def post(self, request):
|
|
payment_plan_data = JSONParser().parse(request)
|
|
payment_plan_serializer = PaymentPlanSerializer(data=payment_plan_data)
|
|
if payment_plan_serializer.is_valid():
|
|
payment_plan_serializer.save()
|
|
return JsonResponse(payment_plan_serializer.data, safe=False, status=201)
|
|
return JsonResponse(payment_plan_serializer.errors, safe=False, status=400)
|
|
|
|
def put(self, request, _id):
|
|
payment_plan_data = JSONParser().parse(request)
|
|
try:
|
|
payment_plan = PaymentPlan.objects.get(id=_id)
|
|
except PaymentPlan.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
payment_plan_serializer = PaymentPlanSerializer(payment_plan, data=payment_plan_data, partial=True)
|
|
if payment_plan_serializer.is_valid():
|
|
payment_plan_serializer.save()
|
|
return JsonResponse(payment_plan_serializer.data, safe=False)
|
|
return JsonResponse(payment_plan_serializer.errors, safe=False, status=400)
|
|
|
|
def delete(self, request, _id):
|
|
return delete_object(PaymentPlan, _id)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class PaymentModesView(APIView):
|
|
def get(self, request, _filter, *args, **kwargs):
|
|
|
|
if _filter not in ['registration', 'tuition']:
|
|
return JsonResponse({"error": "Invalid type parameter. Must be 'registration' or 'tuition'."}, safe=False, status=400)
|
|
|
|
type_value = 0 if _filter == 'registration' else 1
|
|
paymentModes = PaymentMode.objects.filter(type=type_value)
|
|
payment_modes_serializer = PaymentModeSerializer(paymentModes, many=True)
|
|
|
|
return JsonResponse(payment_modes_serializer.data, safe=False, status=200)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class PaymentModeView(APIView):
|
|
def get(self, request, _id):
|
|
try:
|
|
payment_mode = PaymentMode.objects.get(id=_id)
|
|
payment_mode_serializer = PaymentModeSerializer(payment_mode)
|
|
return JsonResponse(payment_mode_serializer.data, safe=False)
|
|
except PaymentMode.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
|
|
def post(self, request):
|
|
payment_mode_data = JSONParser().parse(request)
|
|
payment_mode_serializer = PaymentModeSerializer(data=payment_mode_data)
|
|
if payment_mode_serializer.is_valid():
|
|
payment_mode_serializer.save()
|
|
return JsonResponse(payment_mode_serializer.data, safe=False, status=201)
|
|
return JsonResponse(payment_mode_serializer.errors, safe=False, status=400)
|
|
|
|
def put(self, request, _id):
|
|
payment_mode_data = JSONParser().parse(request)
|
|
try:
|
|
payment_mode = PaymentMode.objects.get(id=_id)
|
|
except PaymentMode.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
payment_mode_serializer = PaymentModeSerializer(payment_mode, data=payment_mode_data, partial=True)
|
|
if payment_mode_serializer.is_valid():
|
|
payment_mode_serializer.save()
|
|
return JsonResponse(payment_mode_serializer.data, safe=False)
|
|
return JsonResponse(payment_mode_serializer.errors, safe=False, status=400)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class EstablishmentsView(APIView):
|
|
def get(self, request):
|
|
establishments=getAllObjects(Establishment)
|
|
establishments_serializer=EstablishmentSerializer(establishments, many=True)
|
|
return JsonResponse(establishments_serializer.data, safe=False, status=200)
|
|
|
|
@method_decorator(csrf_protect, name='dispatch')
|
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
class EstablishmentView(APIView):
|
|
def get(self, request, _id):
|
|
try:
|
|
establishment = Establishment.objects.get(id=_id)
|
|
establishment_serializer = EstablishmentSerializer(establishment)
|
|
return JsonResponse(establishment_serializer.data, safe=False)
|
|
except Establishment.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
|
|
def post(self, request):
|
|
establishment_data = JSONParser().parse(request)
|
|
establishment_serializer = EstablishmentSerializer(data=establishment_data)
|
|
if establishment_serializer.is_valid():
|
|
establishment_serializer.save()
|
|
return JsonResponse(establishment_serializer.data, safe=False, status=201)
|
|
return JsonResponse(establishment_serializer.errors, safe=False, status=400)
|
|
|
|
def put(self, request, _id):
|
|
establishment_data = JSONParser().parse(request)
|
|
try:
|
|
establishment = Establishment.objects.get(id=_id)
|
|
except Establishment.DoesNotExist:
|
|
return JsonResponse({'error': 'No object found'}, status=404)
|
|
establishment_serializer = EstablishmentSerializer(establishment, data=establishment_data, partial=True)
|
|
if establishment_serializer.is_valid():
|
|
establishment_serializer.save()
|
|
return JsonResponse(establishment_serializer.data, safe=False)
|
|
return JsonResponse(establishment_serializer.errors, safe=False, status=400)
|
|
|
|
def delete(self, request, _id):
|
|
return delete_object(Establishment, _id) |