mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
feat: Refactoring de la fonction de création de profil sur guardian côté
FRONT
This commit is contained in:
@ -3,6 +3,7 @@ from .models import Teacher, Speciality, SchoolClass, Planning, LEVEL_CHOICES, D
|
||||
from Auth.models import Profile, ProfileRole
|
||||
from Subscriptions.models import Student
|
||||
from Establishment.models import Establishment
|
||||
from Auth.serializers import ProfileRoleSerializer
|
||||
from N3wtSchool import settings, bdd
|
||||
from django.utils import timezone
|
||||
import pytz
|
||||
@ -31,10 +32,10 @@ class TeacherDetailSerializer(serializers.ModelSerializer):
|
||||
class TeacherSerializer(serializers.ModelSerializer):
|
||||
specialities = serializers.PrimaryKeyRelatedField(queryset=Speciality.objects.all(), many=True, required=False)
|
||||
specialities_details = serializers.SerializerMethodField()
|
||||
profile_role = serializers.PrimaryKeyRelatedField(queryset=ProfileRole.objects.all(), required=True)
|
||||
updated_date_formatted = serializers.SerializerMethodField()
|
||||
role_type = serializers.SerializerMethodField()
|
||||
associated_profile_email = serializers.SerializerMethodField()
|
||||
profile_role = ProfileRoleSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Teacher
|
||||
@ -42,21 +43,36 @@ class TeacherSerializer(serializers.ModelSerializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
specialities_data = validated_data.pop('specialities', None)
|
||||
profile_role = validated_data.pop('profile_role', None)
|
||||
teacher = Teacher.objects.create(**validated_data)
|
||||
profile_role_data = validated_data.pop('profile_role')
|
||||
establishment_id = profile_role_data.pop('establishment').id
|
||||
profile_role_data['establishment'] = establishment_id
|
||||
|
||||
# Créer l'instance de ProfileRole
|
||||
profile_role_serializer = ProfileRoleSerializer(data=profile_role_data)
|
||||
profile_role_serializer.is_valid(raise_exception=True)
|
||||
profile_role = profile_role_serializer.save()
|
||||
|
||||
# Créer l'enseignant avec l'instance de ProfileRole
|
||||
teacher = Teacher.objects.create(profile_role=profile_role, **validated_data)
|
||||
if specialities_data:
|
||||
teacher.specialities.set(specialities_data)
|
||||
if profile_role:
|
||||
teacher.profile_role = profile_role
|
||||
teacher.save()
|
||||
return teacher
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
specialities_data = validated_data.pop('specialities', [])
|
||||
profile_role_data = validated_data.pop('profile_role', None)
|
||||
|
||||
if profile_role_data:
|
||||
establishment_id = profile_role_data.pop('establishment').id
|
||||
profile_role_data['establishment'] = establishment_id
|
||||
profile_role_serializer = ProfileRoleSerializer(instance.profile_role, data=profile_role_data)
|
||||
profile_role_serializer.is_valid(raise_exception=True)
|
||||
profile_role_serializer.save()
|
||||
|
||||
instance.last_name = validated_data.get('last_name', instance.last_name)
|
||||
instance.first_name = validated_data.get('first_name', instance.first_name)
|
||||
instance.email = validated_data.get('email', instance.email)
|
||||
instance.profile_role = validated_data.get('profile_role', instance.profile_role)
|
||||
instance.save()
|
||||
if specialities_data:
|
||||
instance.specialities.set(specialities_data)
|
||||
|
||||
Reference in New Issue
Block a user