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
« 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
15from sm.mixins import APIMultiTenantMixin
16from sm.api.permissions import SmModelPermissions
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)
34class ServerViewSet(APIMultiTenantMixin, viewsets.ModelViewSet):
35 """
36 API endpoint that allows servers to be viewed or edited.
37 """
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"]
46class VendorViewSet(APIMultiTenantMixin, viewsets.ModelViewSet):
47 """
48 API endpoint that allows vendors to be viewed or edited.
49 """
51 queryset = Vendor.objects.all().order_by("name")
52 serializer_class = VendorSerializer
53 permission_classes = [SmModelPermissions]
54 search_fields = ["name"]
55 ordering_fields = ["name"]
58class StatusViewSet(APIMultiTenantMixin, viewsets.ModelViewSet):
59 """
60 API endpoint that allows statuses to be viewed or edited.
61 """
63 queryset = Status.objects.all().order_by("name")
64 serializer_class = StatusSerializer
65 permission_classes = [SmModelPermissions]
66 search_fields = ["name"]
67 ordering_fields = ["name"]
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"]
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"]
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"]
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"]
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"]
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"]
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"]
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"]
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"]