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

1""" 

2Module de vues pour la gestion des offres commerciales. 

3 

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""" 

7 

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 

13 

14 

15class OffreListView(rest_framework.generics.ListAPIView): 

16 """ 

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

18 

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). 

21 

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] 

32 

33 

34class OffreDetailView(rest_framework.generics.RetrieveAPIView): 

35 """ 

36 Vue pour récupérer les détails d'une offre spécifique. 

37 

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). 

41 

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] 

52 

53 

54class OffreCreateView(rest_framework.generics.CreateAPIView): 

55 """ 

56 Vue pour créer une nouvelle offre. 

57 

58 Permet aux administrateurs authentifiés de créer de nouvelles offres commerciales. 

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

60 

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] 

71 

72 

73class OffreUpdateView(rest_framework.generics.UpdateAPIView): 

74 """ 

75 Vue pour mettre à jour une offre existante. 

76 

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. 

80 

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] 

91 

92 

93class OffreDeleteView(rest_framework.generics.DestroyAPIView): 

94 """ 

95 Vue pour supprimer une offre. 

96 

97 Permet aux administrateurs authentifiés de supprimer une offre existante. 

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

99 

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]