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
« 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.
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"""
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
15class EpreuveListView(rest_framework.generics.ListAPIView):
16 """
17 Vue pour lister toutes les épreuves avec tri optimisé.
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).
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]
37class EpreuveDetailView(rest_framework.generics.RetrieveAPIView):
38 """
39 Vue pour récupérer les détails d'une épreuve spécifique.
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).
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]
57class EpreuveCreateView(rest_framework.generics.CreateAPIView):
58 """
59 Vue pour créer une nouvelle épreuve.
61 Permet aux administrateurs authentifiés de créer de nouvelles épreuves sportives.
62 Nécessite une authentification et des permissions d'administrateur.
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]
76class EpreuveUpdateView(rest_framework.generics.UpdateAPIView):
77 """
78 Vue pour mettre à jour une épreuve existante.
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.
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]
96class EpreuveDeleteView(rest_framework.generics.DestroyAPIView):
97 """
98 Vue pour supprimer une épreuve.
100 Permet aux administrateurs authentifiés de supprimer une épreuve existante.
101 Nécessite une authentification et des permissions d'administrateur.
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]