Coverage for sm / api / views.py: 90%

49 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-03-24 12:43 +0000

1from rest_framework import viewsets, permissions 

2from server.models import Model as Server 

3from vendor.models import Model as Vendor 

4from status.models import Model as Status 

5from location.models import Model as Location 

6from domain.models import Model as Domain 

7from patchtime.models import Model as Patchtime 

8from cluster.models import Model as Cluster 

9from clusterpackage.models import Model as ClusterPackage 

10 

11from sm.mixins import APIMultiTenantMixin 

12 

13from .serializers import ( 

14 ServerSerializer, 

15 VendorSerializer, 

16 StatusSerializer, 

17 LocationSerializer, 

18 DomainSerializer, 

19 PatchtimeSerializer, 

20 ClusterSerializer, 

21 ClusterPackageSerializer, 

22) 

23 

24 

25class ServerViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

26 """ 

27 API endpoint that allows servers to be viewed or edited. 

28 """ 

29 

30 queryset = Server.objects.all().order_by("hostname") 

31 serializer_class = ServerSerializer 

32 permission_classes = [permissions.DjangoModelPermissions] 

33 

34 

35class VendorViewSet(viewsets.ModelViewSet): 

36 """ 

37 API endpoint that allows vendors to be viewed or edited. 

38 """ 

39 

40 queryset = Vendor.objects.all().order_by("name") 

41 serializer_class = VendorSerializer 

42 permission_classes = [permissions.DjangoModelPermissions] 

43 

44 

45class StatusViewSet(viewsets.ModelViewSet): 

46 """ 

47 API endpoint that allows statuses to be viewed or edited. 

48 """ 

49 

50 queryset = Status.objects.all().order_by("name") 

51 serializer_class = StatusSerializer 

52 permission_classes = [permissions.DjangoModelPermissions] 

53 

54 

55class LocationViewSet(viewsets.ModelViewSet): 

56 queryset = Location.objects.all().order_by("name") 

57 serializer_class = LocationSerializer 

58 permission_classes = [permissions.DjangoModelPermissions] 

59 

60 

61class DomainViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

62 queryset = Domain.objects.all().order_by("name") 

63 serializer_class = DomainSerializer 

64 permission_classes = [permissions.DjangoModelPermissions] 

65 

66 

67class PatchtimeViewSet(viewsets.ModelViewSet): 

68 queryset = Patchtime.objects.all().order_by("name") 

69 serializer_class = PatchtimeSerializer 

70 permission_classes = [permissions.DjangoModelPermissions] 

71 

72 

73class ClusterViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

74 queryset = Cluster.objects.all().order_by("name") 

75 serializer_class = ClusterSerializer 

76 permission_classes = [permissions.DjangoModelPermissions] 

77 

78 

79class ClusterPackageViewSet(viewsets.ModelViewSet): 

80 # ClusterPackage is linked to Cluster (MultiTenant) 

81 queryset = ClusterPackage.objects.all().order_by("name") 

82 serializer_class = ClusterPackageSerializer 

83 permission_classes = [permissions.DjangoModelPermissions] 

84 

85 def get_queryset(self): 

86 queryset = super().get_queryset() 

87 if self.request.user.is_superuser: 

88 return queryset 

89 user_groups = self.request.user.groups.all() 

90 return queryset.filter(cluster__group__in=user_groups)