Coverage for api\views\epreuve.py: 100%

25 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-10-13 15:18 +0200

1""" 

2Module de vues pour la gestion des épreuves sportives. 

3 

4Ce module contient toutes les vues nécessaires pour effectuer des opérations CRUD 

5sur les épreuves, avec un tri optimisé par discipline, date et horaire. 

6""" 

7 

8import rest_framework.generics 

9from api.models.epreuve import Epreuve 

10from api.serializers.epreuve import EpreuveSerializer 

11from authentication.permissions import IsAdmin 

12from rest_framework.permissions import IsAuthenticated, AllowAny 

13 

14 

15class EpreuveListView(rest_framework.generics.ListAPIView): 

16 """ 

17 Vue pour lister toutes les épreuves avec tri optimisé. 

18 

19 Récupère la liste des épreuves triées par discipline, date et horaire. 

20 Utilise select_related pour optimiser les requêtes vers la base de données. 

21 Accessible à tous les utilisateurs (authentifiés ou non). 

22 

23 :cvar queryset: Queryset des épreuves avec optimisations 

24 :type queryset: QuerySet[Epreuve] 

25 :cvar serializer_class: Sérialiseur utilisé pour la vue 

26 :type serializer_class: EpreuveSerializer 

27 :cvar permission_classes: Permissions requises pour accéder à la vue 

28 :type permission_classes: list 

29 """ 

30 queryset = Epreuve.objects.select_related("evenement", "discipline").order_by( 

31 "discipline__nom", "evenement__date", "evenement__horraire" 

32 ) 

33 serializer_class = EpreuveSerializer 

34 permission_classes = [AllowAny] 

35 

36 

37class EpreuveDetailView(rest_framework.generics.RetrieveAPIView): 

38 """ 

39 Vue pour récupérer les détails d'une épreuve spécifique. 

40 

41 Permet de récupérer les informations détaillées d'une épreuve 

42 via son identifiant unique. 

43 Accessible à tous les utilisateurs (authentifiés ou non). 

44 

45 :cvar queryset: Queryset des épreuves 

46 :type queryset: QuerySet[Epreuve] 

47 :cvar serializer_class: Sérialiseur utilisé pour la vue 

48 :type serializer_class: EpreuveSerializer 

49 :cvar permission_classes: Permissions requises pour accéder à la vue 

50 :type permission_classes: list 

51 """ 

52 queryset = Epreuve.objects.all() 

53 serializer_class = EpreuveSerializer 

54 permission_classes = [AllowAny] 

55 

56 

57class EpreuveCreateView(rest_framework.generics.CreateAPIView): 

58 """ 

59 Vue pour créer une nouvelle épreuve. 

60 

61 Permet aux administrateurs authentifiés de créer de nouvelles épreuves sportives. 

62 Nécessite une authentification et des permissions d'administrateur. 

63 

64 :cvar queryset: Queryset des épreuves 

65 :type queryset: QuerySet[Epreuve] 

66 :cvar serializer_class: Sérialiseur utilisé pour la vue 

67 :type serializer_class: EpreuveSerializer 

68 :cvar permission_classes: Permissions requises pour accéder à la vue 

69 :type permission_classes: list 

70 """ 

71 queryset = Epreuve.objects.all() 

72 serializer_class = EpreuveSerializer 

73 permission_classes = [IsAuthenticated, IsAdmin] 

74 

75 

76class EpreuveUpdateView(rest_framework.generics.UpdateAPIView): 

77 """ 

78 Vue pour mettre à jour une épreuve existante. 

79 

80 Permet aux administrateurs authentifiés de modifier les informations 

81 d'une épreuve existante. 

82 Nécessite une authentification et des permissions d'administrateur. 

83 

84 :cvar queryset: Queryset des épreuves 

85 :type queryset: QuerySet[Epreuve] 

86 :cvar serializer_class: Sérialiseur utilisé pour la vue 

87 :type serializer_class: EpreuveSerializer 

88 :cvar permission_classes: Permissions requises pour accéder à la vue 

89 :type permission_classes: list 

90 """ 

91 queryset = Epreuve.objects.all() 

92 serializer_class = EpreuveSerializer 

93 permission_classes = [IsAuthenticated, IsAdmin] 

94 

95 

96class EpreuveDeleteView(rest_framework.generics.DestroyAPIView): 

97 """ 

98 Vue pour supprimer une épreuve. 

99 

100 Permet aux administrateurs authentifiés de supprimer une épreuve existante. 

101 Nécessite une authentification et des permissions d'administrateur. 

102 

103 :cvar queryset: Queryset des épreuves 

104 :type queryset: QuerySet[Epreuve] 

105 :cvar serializer_class: Sérialiseur utilisé pour la vue 

106 :type serializer_class: EpreuveSerializer 

107 :cvar permission_classes: Permissions requises pour accéder à la vue 

108 :type permission_classes: list 

109 """ 

110 queryset = Epreuve.objects.all() 

111 serializer_class = EpreuveSerializer 

112 permission_classes = [IsAuthenticated, IsAdmin]