Coverage for api\views\evenement.py: 89%

36 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 événements. 

3 

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

5sur les événements, ainsi que des vues spécialisées pour récupérer des événements 

6par épreuve. 

7""" 

8 

9from rest_framework import generics 

10from django.shortcuts import get_object_or_404 

11from rest_framework.exceptions import NotFound 

12 

13from api.models.evenement import Evenement 

14from api.models.epreuve import Epreuve 

15from api.serializers.evenement import EvenementSerializer 

16from authentication.permissions import IsAdmin 

17from rest_framework.permissions import IsAuthenticated, AllowAny 

18 

19 

20class EvenementListView(generics.ListAPIView): 

21 """ 

22 Vue pour lister tous les événements. 

23 

24 Récupère la liste complète des événements disponibles. 

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

26 

27 :cvar queryset: Queryset des événements 

28 :type queryset: QuerySet[Evenement] 

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

30 :type serializer_class: EvenementSerializer 

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

32 :type permission_classes: list 

33 """ 

34 queryset = Evenement.objects.all() 

35 serializer_class = EvenementSerializer 

36 permission_classes = [AllowAny] 

37 

38 

39class EvenementDetailView(generics.RetrieveAPIView): 

40 """ 

41 Vue pour récupérer les détails d'un événement spécifique. 

42 

43 Permet de récupérer les informations détaillées d'un événement 

44 via son identifiant unique. 

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

46 

47 :cvar queryset: Queryset des événements 

48 :type queryset: QuerySet[Evenement] 

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

50 :type serializer_class: EvenementSerializer 

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

52 :type permission_classes: list 

53 """ 

54 queryset = Evenement.objects.all() 

55 serializer_class = EvenementSerializer 

56 permission_classes = [AllowAny] 

57 

58 

59 

60class EvenementByEpreuveView(generics.RetrieveAPIView): 

61 """ 

62 Vue pour récupérer un événement par l'ID d'une épreuve. 

63 """ 

64 serializer_class = EvenementSerializer 

65 permission_classes = [AllowAny] 

66 

67 def get_object(self): 

68 epreuve = get_object_or_404(Epreuve, id=self.kwargs["pk"]) 

69 if epreuve.evenement is None: 

70 raise NotFound("Aucun événement associé à cette épreuve.") 

71 return epreuve.evenement 

72 

73 

74class EvenementCreateView(generics.CreateAPIView): 

75 """ 

76 Vue pour créer un nouvel événement. 

77 

78 Permet aux administrateurs authentifiés de créer de nouveaux événements. 

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

80 

81 :cvar queryset: Queryset des événements 

82 :type queryset: QuerySet[Evenement] 

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

84 :type serializer_class: EvenementSerializer 

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

86 :type permission_classes: list 

87 """ 

88 queryset = Evenement.objects.all() 

89 serializer_class = EvenementSerializer 

90 permission_classes = [IsAuthenticated, IsAdmin] 

91 

92 

93class EvenementUpdateView(generics.UpdateAPIView): 

94 """ 

95 Vue pour mettre à jour un événement existant. 

96 

97 Permet aux administrateurs authentifiés de modifier les informations 

98 d'un événement existant. 

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

100 

101 :cvar queryset: Queryset des événements 

102 :type queryset: QuerySet[Evenement] 

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

104 :type serializer_class: EvenementSerializer 

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

106 :type permission_classes: list 

107 """ 

108 queryset = Evenement.objects.all() 

109 serializer_class = EvenementSerializer 

110 permission_classes = [IsAuthenticated, IsAdmin] 

111 

112 

113class EvenementDeleteView(generics.DestroyAPIView): 

114 """ 

115 Vue pour supprimer un événement. 

116 

117 Permet aux administrateurs authentifiés de supprimer un événement existant. 

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

119 

120 :cvar queryset: Queryset des événements 

121 :type queryset: QuerySet[Evenement] 

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

123 :type serializer_class: EvenementSerializer 

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

125 :type permission_classes: list 

126 """ 

127 queryset = Evenement.objects.all() 

128 serializer_class = EvenementSerializer 

129 permission_classes = [IsAuthenticated, IsAdmin]