mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
feat: Sauvegarde des compétences d'un élève [#16]
This commit is contained in:
@ -14,22 +14,6 @@ class Category(models.Model):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Competency(models.Model):
|
||||
name = models.TextField()
|
||||
end_of_cycle = models.BooleanField(default=False, null=True, blank=True)
|
||||
level = models.CharField(max_length=50, null=True, blank=True)
|
||||
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='competencies')
|
||||
|
||||
establishments = models.ManyToManyField(
|
||||
'Establishment.Establishment',
|
||||
through='School.EstablishmentCompetency',
|
||||
related_name='competencies',
|
||||
blank=True
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class PaymentPlanType(models.Model):
|
||||
code = models.CharField(max_length=50, unique=True)
|
||||
label = models.CharField(max_length=255)
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
from rest_framework import serializers
|
||||
from Common.models import (
|
||||
Domain,
|
||||
Category,
|
||||
Competency
|
||||
Category
|
||||
)
|
||||
|
||||
class DomainSerializer(serializers.ModelSerializer):
|
||||
@ -13,9 +12,4 @@ class DomainSerializer(serializers.ModelSerializer):
|
||||
class CategorySerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Category
|
||||
fields = '__all__'
|
||||
|
||||
class CompetencySerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Competency
|
||||
fields = '__all__'
|
||||
@ -2,7 +2,8 @@ import json
|
||||
import os
|
||||
from django.db.models.signals import post_migrate
|
||||
from django.dispatch import receiver
|
||||
from Common.models import Domain, Category, Competency, PaymentModeType, PaymentPlanType, Cycle, Level
|
||||
from Common.models import Domain, Category, PaymentModeType, PaymentPlanType, Cycle, Level
|
||||
from School.models import Competency
|
||||
|
||||
@receiver(post_migrate)
|
||||
def common_post_migrate(sender, **kwargs):
|
||||
|
||||
@ -3,7 +3,6 @@ from django.urls import path, re_path
|
||||
from .views import (
|
||||
DomainListCreateView, DomainDetailView,
|
||||
CategoryListCreateView, CategoryDetailView,
|
||||
CompetencyListCreateView, CompetencyDetailView,
|
||||
)
|
||||
|
||||
urlpatterns = [
|
||||
@ -12,7 +11,4 @@ urlpatterns = [
|
||||
|
||||
re_path(r'^categories$', CategoryListCreateView.as_view(), name="category_list_create"),
|
||||
re_path(r'^categories/(?P<id>[0-9]+)$', CategoryDetailView.as_view(), name="category_detail"),
|
||||
|
||||
re_path(r'^competencies$', CompetencyListCreateView.as_view(), name="competency_list_create"),
|
||||
re_path(r'^competencies/(?P<id>[0-9]+)$', CompetencyDetailView.as_view(), name="competency_detail"),
|
||||
]
|
||||
@ -3,15 +3,14 @@ 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 rest_framework import status
|
||||
from .models import (
|
||||
Domain,
|
||||
Category,
|
||||
Competency
|
||||
Category
|
||||
)
|
||||
from .serializers import (
|
||||
DomainSerializer,
|
||||
CategorySerializer,
|
||||
CompetencySerializer
|
||||
CategorySerializer
|
||||
)
|
||||
|
||||
@method_decorator(csrf_protect, name='dispatch')
|
||||
@ -109,57 +108,3 @@ class CategoryDetailView(APIView):
|
||||
return JsonResponse({'message': 'Deleted'}, safe=False)
|
||||
except Category.DoesNotExist:
|
||||
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
@method_decorator(csrf_protect, name='dispatch')
|
||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||
class CompetencyListCreateView(APIView):
|
||||
def get(self, request):
|
||||
cycle = request.GET.get('cycle')
|
||||
if cycle is None:
|
||||
return JsonResponse({'error': 'cycle est requis'}, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
competencies_list = getAllObjects(Competency)
|
||||
competencies_list = competencies_list.filter(
|
||||
category__domain__cycle=cycle
|
||||
).distinct()
|
||||
serializer = CompetencySerializer(competencies_list, many=True)
|
||||
return JsonResponse(serializer.data, safe=False)
|
||||
|
||||
def post(self, request):
|
||||
data = JSONParser().parse(request)
|
||||
serializer = CompetencySerializer(data=data)
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
return JsonResponse(serializer.data, safe=False, status=status.HTTP_201_CREATED)
|
||||
return JsonResponse(serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@method_decorator(csrf_protect, name='dispatch')
|
||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||
class CompetencyDetailView(APIView):
|
||||
def get(self, request, id):
|
||||
try:
|
||||
competency = Competency.objects.get(id=id)
|
||||
serializer = CompetencySerializer(competency)
|
||||
return JsonResponse(serializer.data, safe=False)
|
||||
except Competency.DoesNotExist:
|
||||
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
def put(self, request, id):
|
||||
try:
|
||||
competency = Competency.objects.get(id=id)
|
||||
except Competency.DoesNotExist:
|
||||
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||
data = JSONParser().parse(request)
|
||||
serializer = CompetencySerializer(competency, data=data, partial=True)
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
return JsonResponse(serializer.data, safe=False)
|
||||
return JsonResponse(serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
def delete(self, request, id):
|
||||
try:
|
||||
competency = Competency.objects.get(id=id)
|
||||
competency.delete()
|
||||
return JsonResponse({'message': 'Deleted'}, safe=False)
|
||||
except Competency.DoesNotExist:
|
||||
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
Reference in New Issue
Block a user