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
« 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.
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"""
9from rest_framework import generics
10from django.shortcuts import get_object_or_404
11from rest_framework.exceptions import NotFound
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
20class EvenementListView(generics.ListAPIView):
21 """
22 Vue pour lister tous les événements.
24 Récupère la liste complète des événements disponibles.
25 Accessible à tous les utilisateurs (authentifiés ou non).
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]
39class EvenementDetailView(generics.RetrieveAPIView):
40 """
41 Vue pour récupérer les détails d'un événement spécifique.
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).
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]
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]
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
74class EvenementCreateView(generics.CreateAPIView):
75 """
76 Vue pour créer un nouvel événement.
78 Permet aux administrateurs authentifiés de créer de nouveaux événements.
79 Nécessite une authentification et des permissions d'administrateur.
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]
93class EvenementUpdateView(generics.UpdateAPIView):
94 """
95 Vue pour mettre à jour un événement existant.
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.
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]
113class EvenementDeleteView(generics.DestroyAPIView):
114 """
115 Vue pour supprimer un événement.
117 Permet aux administrateurs authentifiés de supprimer un événement existant.
118 Nécessite une authentification et des permissions d'administrateur.
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]