Coverage for api\views\offre.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 offres commerciales.
4Ce module contient toutes les vues nécessaires pour effectuer des opérations CRUD
5sur les offres, avec un tri par nombre de personnes et montant.
6"""
8import rest_framework.generics
9from api.models import Offre
10from api.serializers import OffreSerializer
11from authentication.permissions import IsAdmin
12from rest_framework.permissions import IsAuthenticated, AllowAny
15class OffreListView(rest_framework.generics.ListAPIView):
16 """
17 Vue pour lister toutes les offres avec tri optimisé.
19 Récupère la liste des offres triées par nombre de personnes puis par montant.
20 Accessible à tous les utilisateurs (authentifiés ou non).
22 :cvar queryset: Queryset des offres
23 :type queryset: QuerySet[Offre]
24 :cvar serializer_class: Sérialiseur utilisé pour la vue
25 :type serializer_class: OffreSerializer
26 :cvar permission_classes: Permissions requises pour accéder à la vue
27 :type permission_classes: list
28 """
29 queryset = Offre.objects.order_by("nb_personne", "montant")
30 serializer_class = OffreSerializer
31 permission_classes = [AllowAny]
34class OffreDetailView(rest_framework.generics.RetrieveAPIView):
35 """
36 Vue pour récupérer les détails d'une offre spécifique.
38 Permet de récupérer les informations détaillées d'une offre
39 via son identifiant unique.
40 Accessible à tous les utilisateurs (authentifiés ou non).
42 :cvar queryset: Queryset des offres
43 :type queryset: QuerySet[Offre]
44 :cvar serializer_class: Sérialiseur utilisé pour la vue
45 :type serializer_class: OffreSerializer
46 :cvar permission_classes: Permissions requises pour accéder à la vue
47 :type permission_classes: list
48 """
49 queryset = Offre.objects.all()
50 serializer_class = OffreSerializer
51 permission_classes = [AllowAny]
54class OffreCreateView(rest_framework.generics.CreateAPIView):
55 """
56 Vue pour créer une nouvelle offre.
58 Permet aux administrateurs authentifiés de créer de nouvelles offres commerciales.
59 Nécessite une authentification et des permissions d'administrateur.
61 :cvar queryset: Queryset des offres
62 :type queryset: QuerySet[Offre]
63 :cvar serializer_class: Sérialiseur utilisé pour la vue
64 :type serializer_class: OffreSerializer
65 :cvar permission_classes: Permissions requises pour accéder à la vue
66 :type permission_classes: list
67 """
68 queryset = Offre.objects.all()
69 serializer_class = OffreSerializer
70 permission_classes = [IsAuthenticated, IsAdmin]
73class OffreUpdateView(rest_framework.generics.UpdateAPIView):
74 """
75 Vue pour mettre à jour une offre existante.
77 Permet aux administrateurs authentifiés de modifier les informations
78 d'une offre existante.
79 Nécessite une authentification et des permissions d'administrateur.
81 :cvar queryset: Queryset des offres
82 :type queryset: QuerySet[Offre]
83 :cvar serializer_class: Sérialiseur utilisé pour la vue
84 :type serializer_class: OffreSerializer
85 :cvar permission_classes: Permissions requises pour accéder à la vue
86 :type permission_classes: list
87 """
88 queryset = Offre.objects.all()
89 serializer_class = OffreSerializer
90 permission_classes = [IsAuthenticated, IsAdmin]
93class OffreDeleteView(rest_framework.generics.DestroyAPIView):
94 """
95 Vue pour supprimer une offre.
97 Permet aux administrateurs authentifiés de supprimer une offre existante.
98 Nécessite une authentification et des permissions d'administrateur.
100 :cvar queryset: Queryset des offres
101 :type queryset: QuerySet[Offre]
102 :cvar serializer_class: Sérialiseur utilisé pour la vue
103 :type serializer_class: OffreSerializer
104 :cvar permission_classes: Permissions requises pour accéder à la vue
105 :type permission_classes: list
106 """
107 queryset = Offre.objects.all()
108 serializer_class = OffreSerializer
109 permission_classes = [IsAuthenticated, IsAdmin]