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

88 statements  

« prev     ^ index     » next       coverage.py v7.17.0, created at 2026-10-24 19:06 +0000

1from rest_framework import viewsets 

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 operatingsystem.models import Model as OS 

9from servermodel.models import Model as ServerModel 

10from cluster.models import Model as Cluster 

11from clusterpackage.models import Model as ClusterPackage 

12from clustersoftware.models import Model as ClusterSoftware 

13from clusterpackagetype.models import Model as ClusterPackageType 

14 

15from sm.mixins import APIMultiTenantMixin 

16from sm.api.permissions import SmModelPermissions 

17 

18from .serializers import ( 

19 ServerSerializer, 

20 VendorSerializer, 

21 StatusSerializer, 

22 LocationSerializer, 

23 DomainSerializer, 

24 PatchtimeSerializer, 

25 OSSerializer, 

26 ServerModelSerializer, 

27 ClusterSerializer, 

28 ClusterPackageSerializer, 

29 ClusterSoftwareSerializer, 

30 ClusterPackageTypeSerializer, 

31) 

32 

33 

34class ServerViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

35 """ 

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

37 """ 

38 

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

40 serializer_class = ServerSerializer 

41 permission_classes = [SmModelPermissions] 

42 search_fields = ["hostname", "primary_ip", "management_ip", "description"] 

43 ordering_fields = ["hostname", "status", "location", "primary_ip", "last_update"] 

44 

45 

46class VendorViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

47 """ 

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

49 """ 

50 

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

52 serializer_class = VendorSerializer 

53 permission_classes = [SmModelPermissions] 

54 search_fields = ["name"] 

55 ordering_fields = ["name"] 

56 

57 

58class StatusViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

59 """ 

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

61 """ 

62 

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

64 serializer_class = StatusSerializer 

65 permission_classes = [SmModelPermissions] 

66 search_fields = ["name"] 

67 ordering_fields = ["name"] 

68 

69 

70class LocationViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

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

72 serializer_class = LocationSerializer 

73 permission_classes = [SmModelPermissions] 

74 search_fields = ["name", "country"] 

75 ordering_fields = ["name", "country"] 

76 

77 

78class DomainViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

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

80 serializer_class = DomainSerializer 

81 permission_classes = [SmModelPermissions] 

82 search_fields = ["name"] 

83 ordering_fields = ["name"] 

84 

85 

86class PatchtimeViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

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

88 serializer_class = PatchtimeSerializer 

89 permission_classes = [SmModelPermissions] 

90 search_fields = ["name"] 

91 ordering_fields = ["name"] 

92 

93 

94class OSViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

95 queryset = OS.objects.all().order_by("version") 

96 serializer_class = OSSerializer 

97 permission_classes = [SmModelPermissions] 

98 search_fields = ["version", "vendor__name"] 

99 ordering_fields = ["version", "vendor__name"] 

100 

101 

102class ServerModelViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

103 queryset = ServerModel.objects.all().order_by("name") 

104 serializer_class = ServerModelSerializer 

105 permission_classes = [SmModelPermissions] 

106 search_fields = ["name", "vendor__name"] 

107 ordering_fields = ["name", "vendor__name"] 

108 

109 

110class ClusterViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

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

112 serializer_class = ClusterSerializer 

113 permission_classes = [SmModelPermissions] 

114 search_fields = ["name", "clustersoftware__name"] 

115 ordering_fields = ["name"] 

116 

117 

118class ClusterPackageViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

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

120 serializer_class = ClusterPackageSerializer 

121 permission_classes = [SmModelPermissions] 

122 search_fields = ["name", "cluster__name", "description", "host"] 

123 ordering_fields = ["name", "cluster__name", "status__name"] 

124 

125 

126class ClusterSoftwareViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

127 queryset = ClusterSoftware.objects.all().order_by("name") 

128 serializer_class = ClusterSoftwareSerializer 

129 permission_classes = [SmModelPermissions] 

130 search_fields = ["name", "version", "vendor__name"] 

131 ordering_fields = ["name", "version", "vendor__name"] 

132 

133 

134class ClusterPackageTypeViewSet(APIMultiTenantMixin, viewsets.ModelViewSet): 

135 queryset = ClusterPackageType.objects.all().order_by("name") 

136 serializer_class = ClusterPackageTypeSerializer 

137 permission_classes = [SmModelPermissions] 

138 search_fields = ["name"] 

139 ordering_fields = ["name"]