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
« 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
11from sm.mixins import APIMultiTenantMixin
13from .serializers import (
14 ServerSerializer,
15 VendorSerializer,
16 StatusSerializer,
17 LocationSerializer,
18 DomainSerializer,
19 PatchtimeSerializer,
20 ClusterSerializer,
21 ClusterPackageSerializer,
22)
25class ServerViewSet(APIMultiTenantMixin, viewsets.ModelViewSet):
26 """
27 API endpoint that allows servers to be viewed or edited.
28 """
30 queryset = Server.objects.all().order_by("hostname")
31 serializer_class = ServerSerializer
32 permission_classes = [permissions.DjangoModelPermissions]
35class VendorViewSet(viewsets.ModelViewSet):
36 """
37 API endpoint that allows vendors to be viewed or edited.
38 """
40 queryset = Vendor.objects.all().order_by("name")
41 serializer_class = VendorSerializer
42 permission_classes = [permissions.DjangoModelPermissions]
45class StatusViewSet(viewsets.ModelViewSet):
46 """
47 API endpoint that allows statuses to be viewed or edited.
48 """
50 queryset = Status.objects.all().order_by("name")
51 serializer_class = StatusSerializer
52 permission_classes = [permissions.DjangoModelPermissions]
55class LocationViewSet(viewsets.ModelViewSet):
56 queryset = Location.objects.all().order_by("name")
57 serializer_class = LocationSerializer
58 permission_classes = [permissions.DjangoModelPermissions]
61class DomainViewSet(APIMultiTenantMixin, viewsets.ModelViewSet):
62 queryset = Domain.objects.all().order_by("name")
63 serializer_class = DomainSerializer
64 permission_classes = [permissions.DjangoModelPermissions]
67class PatchtimeViewSet(viewsets.ModelViewSet):
68 queryset = Patchtime.objects.all().order_by("name")
69 serializer_class = PatchtimeSerializer
70 permission_classes = [permissions.DjangoModelPermissions]
73class ClusterViewSet(APIMultiTenantMixin, viewsets.ModelViewSet):
74 queryset = Cluster.objects.all().order_by("name")
75 serializer_class = ClusterSerializer
76 permission_classes = [permissions.DjangoModelPermissions]
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]
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)