Coverage for users\views\client.py: 68%

19 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-10-13 15:18 +0200

1import rest_framework.generics 

2from authentication.permissions import IsAdmin 

3from users.models import ClientProfile 

4from users.serializers.client import ClientFullSerializer 

5 

6 

7class ClientListView(rest_framework.generics.ListAPIView): 

8 """ 

9 Liste tous les clients. 

10 

11 Cette vue renvoie tous les clients, 

12 triés par date de création (du plus ancien au plus récent). 

13 L'accès est restreint aux Administrateurs. 

14 

15 :cvar serializer_class: Sérialiseur utilisé pour convertir les clients en JSON. 

16 :type serializer_class: ClientSerializer 

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

18 :type permission_classes: list[rest_framework.permissions.BasePermission] 

19 """ 

20 

21 serializer_class = ClientFullSerializer 

22 permission_classes = [IsAdmin] 

23 

24 def get_queryset(self): 

25 """ 

26 Retourne les clients. 

27 

28 :return: Liste des clients. 

29 :rtype: QuerySet[Client] 

30 """ 

31 return ClientProfile.objects.all().order_by("nom") 

32 

33class ClientSetInactiveView(rest_framework.generics.UpdateAPIView): 

34 """ 

35 Met un client en inactif. 

36 

37 Cette vue permet aux administrateurs de désactiver un compte client. 

38 L'accès est restreint aux Administrateurs. 

39 

40 :cvar queryset: Queryset des clients. 

41 :type queryset: QuerySet[ClientProfile] 

42 :cvar serializer_class: Sérialiseur utilisé pour la mise à jour. 

43 :type serializer_class: ClientFullSerializer 

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

45 :type permission_classes: list[rest_framework.permissions.BasePermission] 

46 """ 

47 

48 queryset = ClientProfile.objects.all() 

49 serializer_class = ClientFullSerializer 

50 permission_classes = [IsAdmin] 

51 

52 def perform_update(self, serializer): 

53 """ 

54 Met à jour le statut actif du client. 

55 

56 :param serializer: Sérialiseur avec les données mises à jour. 

57 :type serializer: ClientFullSerializer 

58 """ 

59 client = serializer.instance 

60 user = client.user 

61 user.is_active = not user.is_active 

62 user.save() 

63 serializer.save()