Coverage for api\serializers\nested_serializer.py: 100%
15 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 15:18 +0200
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 15:18 +0200
1"""
2Module contenant les sérialiseurs imbriqués pour éviter les références circulaires.
4Ce module définit des versions simplifiées des sérialiseurs pour être utilisées
5dans les relations entre modèles sans créer d'imports circulaires.
6"""
7from rest_framework import serializers
9from api.models import Lieu
10from api.models.epreuve import Epreuve
11from api.models.evenement import Evenement
12from api.serializers import LieuSerializer
15class NestedEpreuveSerializer(serializers.ModelSerializer):
16 """
17 Sérialiseur imbriqué pour le modèle Epreuve.
19 Version simplifiée du sérialiseur d'épreuve utilisée dans les relations
20 pour éviter les imports circulaires. N'inclut que les champs essentiels.
22 :ivar id: Identifiant unique de l'épreuve
23 :type id: int
24 :ivar libelle: Intitulé de l'épreuve
25 :type libelle: str
26 :ivar discipline: Discipline associée
27 :type discipline: Discipline
28 """
29 class Meta:
30 """
31 Configuration du sérialiseur.
33 :cvar model: Modèle Django associé au sérialiseur
34 :type model: Epreuve
35 :cvar fields: Champs inclus dans la sérialisation
36 :type fields: list
37 """
38 model = Epreuve
39 fields = ['id', 'libelle', 'discipline']
42class NestedEvenementSerializer(serializers.ModelSerializer):
43 """
44 Sérialiseur imbriqué pour le modèle Evenement.
46 Version simplifiée du sérialiseur d'événement utilisée dans les relations
47 pour éviter les imports circulaires. Inclut les informations de base
48 avec la gestion du lieu.
50 :ivar id: Identifiant unique de l'événement
51 :type id: int
52 :ivar description: Description de l'événement
53 :type description: str
54 :ivar date: Date de l'événement
55 :type date: date
56 :ivar horraire: Heure de l'événement
57 :type horraire: time
58 :ivar lieu: Données du lieu (lecture seule)
59 :type lieu: LieuSerializer
60 :ivar lieu_id: ID du lieu pour l'écriture
61 :type lieu_id: PrimaryKeyRelatedField
62 """
63 lieu = LieuSerializer(read_only=True)
64 lieu_id = serializers.PrimaryKeyRelatedField(
65 queryset=Lieu.objects.all(),
66 write_only=True,
67 source='lieu'
68 )
70 class Meta:
71 """
72 Configuration du sérialiseur.
74 :cvar model: Modèle Django associé au sérialiseur
75 :type model: Evenement
76 :cvar fields: Champs inclus dans la sérialisation
77 :type fields: list
78 """
79 model = Evenement
80 fields = ['id', 'description', 'date', 'horraire', 'lieu', 'lieu_id']