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

1""" 

2Module contenant les sérialiseurs imbriqués pour éviter les références circulaires. 

3 

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 

8 

9from api.models import Lieu 

10from api.models.epreuve import Epreuve 

11from api.models.evenement import Evenement 

12from api.serializers import LieuSerializer 

13 

14 

15class NestedEpreuveSerializer(serializers.ModelSerializer): 

16 """ 

17 Sérialiseur imbriqué pour le modèle Epreuve. 

18 

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. 

21 

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. 

32 

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'] 

40 

41 

42class NestedEvenementSerializer(serializers.ModelSerializer): 

43 """ 

44 Sérialiseur imbriqué pour le modèle Evenement. 

45 

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. 

49 

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 ) 

69 

70 class Meta: 

71 """ 

72 Configuration du sérialiseur. 

73 

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']