mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
feat: Gestion des rattachements de Guardian à des RF déjà existants
This commit is contained in:
@ -35,7 +35,8 @@ class TeacherSerializer(serializers.ModelSerializer):
|
||||
updated_date_formatted = serializers.SerializerMethodField()
|
||||
role_type = serializers.SerializerMethodField()
|
||||
associated_profile_email = serializers.SerializerMethodField()
|
||||
profile_role = ProfileRoleSerializer()
|
||||
profile_role = serializers.PrimaryKeyRelatedField(queryset=ProfileRole.objects.all(), required=False)
|
||||
profile_role_data = ProfileRoleSerializer(write_only=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = Teacher
|
||||
@ -43,14 +44,19 @@ class TeacherSerializer(serializers.ModelSerializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
specialities_data = validated_data.pop('specialities', None)
|
||||
profile_role_data = validated_data.pop('profile_role')
|
||||
establishment_id = profile_role_data.pop('establishment').id
|
||||
profile_role_data['establishment'] = establishment_id
|
||||
profile_role_data = validated_data.pop('profile_role_data', None)
|
||||
profile_role = validated_data.pop('profile_role', None)
|
||||
|
||||
# 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()
|
||||
if profile_role_data:
|
||||
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()
|
||||
elif profile_role:
|
||||
profile_role = ProfileRole.objects.get(id=profile_role.id)
|
||||
|
||||
# Créer l'enseignant avec l'instance de ProfileRole
|
||||
teacher = Teacher.objects.create(profile_role=profile_role, **validated_data)
|
||||
@ -61,7 +67,8 @@ class TeacherSerializer(serializers.ModelSerializer):
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
specialities_data = validated_data.pop('specialities', [])
|
||||
profile_role_data = validated_data.pop('profile_role', None)
|
||||
profile_role_data = validated_data.pop('profile_role_data', None)
|
||||
profile_role = validated_data.pop('profile_role', None)
|
||||
|
||||
if profile_role_data:
|
||||
establishment_id = profile_role_data.pop('establishment').id
|
||||
@ -69,6 +76,8 @@ class TeacherSerializer(serializers.ModelSerializer):
|
||||
profile_role_serializer = ProfileRoleSerializer(instance.profile_role, data=profile_role_data)
|
||||
profile_role_serializer.is_valid(raise_exception=True)
|
||||
profile_role_serializer.save()
|
||||
elif profile_role:
|
||||
instance.profile_role = ProfileRole.objects.get(id=profile_role.id)
|
||||
|
||||
instance.last_name = validated_data.get('last_name', instance.last_name)
|
||||
instance.first_name = validated_data.get('first_name', instance.first_name)
|
||||
@ -92,7 +101,9 @@ class TeacherSerializer(serializers.ModelSerializer):
|
||||
return [{'id': speciality.id, 'name': speciality.name, 'color_code': speciality.color_code} for speciality in obj.specialities.all()]
|
||||
|
||||
def get_associated_profile_email(self, obj):
|
||||
return obj.profile_role.profile.email
|
||||
if obj.profile_role and obj.profile_role.profile:
|
||||
return obj.profile_role.profile.email
|
||||
return None
|
||||
|
||||
class PlanningSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
||||
Reference in New Issue
Block a user