blob: 3da66dd357bb0066c9ca978170182c1a09ee9a2a [file] [log] [blame]
Gabe Black4c040b72016-11-17 22:35:04 +00001from rest_framework.decorators import api_view
2from rest_framework.response import Response
3from rest_framework.reverse import reverse
4from rest_framework import serializers
5from rest_framework import generics
6from rest_framework import status
7from core.models import *
8from django.forms import widgets
9from xos.apibase import XOSListCreateAPIView, XOSRetrieveUpdateDestroyAPIView, XOSPermissionDenied
10from api.xosapi_helpers import PlusModelSerializer, XOSViewSet, ReadOnlyField
11
12from services.activetest.models import ActiveTestTenant, ActiveTestService, VpmaService, VpmaTenant, Qt600Service, Qt600Tenant
13
14def get_default_activetest_service():
15 activetest_services = ActiveTestService.get_service_objects().all()
16 if activetest_services:
17 return activetest_services[0]
18 return None
19
20class ActiveTestTenantSerializer(PlusModelSerializer):
21 id = ReadOnlyField()
22 provider_service = serializers.PrimaryKeyRelatedField(queryset=ActiveTestService.get_service_objects().all(), default=get_default_activetest_service)
23 backend_status = ReadOnlyField()
24
25 humanReadableName = serializers.SerializerMethodField("getHumanReadableName")
26
27 class Meta:
28 model = ActiveTestTenant
29 fields = ('humanReadableName', 'id', 'provider_service', 'backend_status')
30
31 def getHumanReadableName(self, obj):
32 return obj.__unicode__()
33
34class ActiveTestTenantViewSet(XOSViewSet):
35 base_name = "activetesttenant"
36 method_name = "activetesttenant"
37 method_kind = "viewset"
38 queryset = ActiveTestTenant.get_tenant_objects().all()
39 serializer_class = ActiveTestTenantSerializer
40
41
42 def list(self, request):
43 queryset = self.filter_queryset(self.get_queryset())
44 serializer = self.get_serializer(queryset, many=True)
45 return Response(serializer.data)
46
47#####################################################################################################################
48
49def get_default_vpma_service():
50 vpma_services = VpmaService.get_service_objects().all()
51 if vpma_services:
52 return vpma_services[0]
53 return None
54
55class VpmaTenantSerializer(PlusModelSerializer):
56 id = ReadOnlyField()
57 provider_service = serializers.PrimaryKeyRelatedField(queryset=VpmaService.get_service_objects().all(), default=get_default_vpma_service)
58 backend_status = ReadOnlyField()
59 is_reflector = serializers.BooleanField(required=False)
60 is_initiator = serializers.BooleanField(required=False)
61 reflector = serializers.CharField(required=False)
62
63 humanReadableName = serializers.SerializerMethodField("getHumanReadableName")
64
65 class Meta:
66 model = VpmaTenant
67 fields = ('humanReadableName', 'id', 'provider_service', 'is_reflector', 'is_initiator', 'reflector', 'backend_status')
68
69 def getHumanReadableName(self, obj):
70 return obj.__unicode__()
71
72class VpmaTenantViewSet(XOSViewSet):
73 base_name = "vpmatenant"
74 method_name = "vpmatenant"
75 method_kind = "viewset"
76 queryset = VpmaTenant.get_tenant_objects().all()
77 serializer_class = VpmaTenantSerializer
78
79 @classmethod
80 def get_urlpatterns(self, api_path="^"):
81 patterns = super(VpmaTenantViewSet, self).get_urlpatterns(api_path=api_path)
82
83 # example to demonstrate adding a custom endpoint
84 patterns.append( self.detail_url("is_initiator/$", {"get": "get_is_initiator", "put": "set_is_initiator"}, "is_initiator") )
85 patterns.append( self.detail_url("is_reflector/$", {"get": "get_is_reflector", "put": "set_is_reflector"}, "is_reflector") )
86 patterns.append( self.detail_url("reflector/$", {"get": "get_reflector", "put": "set_reflector"}, "reflector") )
87
88 return patterns
89
90 def list(self, request):
91 queryset = self.filter_queryset(self.get_queryset())
92 serializer = self.get_serializer(queryset, many=True)
93 return Response(serializer.data)
94
95 def get_is_initiator(self, request, pk=None):
96 vpma_tenant = self.get_object()
97 return Response({"is_initiator": vpma_tenant.is_initiator})
98
99 def set_is_initiator(self, request, pk=None):
100 vpma_tenant = self.get_object()
101 vpma_tenant.is_initiator = request.data["is_initiator"]
102 vpma_tenant.save()
103 return Response({"is_initiator": vpma_tenant.is_initiator})
104
105 def get_is_reflector(self, request, pk=None):
106 vpma_tenant = self.get_object()
107 return Response({"is_reflector": vpma_tenant.is_reflector})
108
109 def set_is_reflector(self, request, pk=None):
110 vpma_tenant = self.get_object()
111 vpma_tenant.is_reflector = request.data["is_reflector"]
112 vpma_tenant.save()
113 return Response({"is_reflector": vpma_tenant.is_reflector})
114
115 def get_reflector(self, request, pk=None):
116 vpma_tenant = self.get_object()
117 return Response({"reflector": vpma_tenant.reflector})
118
119 def set_reflector(self, request, pk=None):
120 vpma_tenant = self.get_object()
121 vpma_tenant.reflector = request.data["reflector"]
122 vpma_tenant.save()
123 return Response({"reflector": vpma_tenant.reflector})
124
125#####################################################################################################################
126
127def get_default_qt600_service():
128 qt600_services = Qt600Service.get_service_objects().all()
129 if qt600_services:
130 return qt600_services[0]
131 return None
132
133class Qt600TenantSerializer(PlusModelSerializer):
134 id = ReadOnlyField()
135 provider_service = serializers.PrimaryKeyRelatedField(queryset=Qt600Service.get_service_objects().all(), default=get_default_qt600_service)
136 backend_status = ReadOnlyField()
137 is_reflector = serializers.BooleanField(required=False)
138 is_initiator = serializers.BooleanField(required=False)
139 reflector = serializers.CharField(required=False)
140
141 humanReadableName = serializers.SerializerMethodField("getHumanReadableName")
142
143 class Meta:
144 model = Qt600Tenant
145 fields = ('humanReadableName', 'id', 'provider_service', 'is_reflector', 'is_initiator', 'reflector', 'backend_status')
146
147 def getHumanReadableName(self, obj):
148 return obj.__unicode__()
149
150class Qt600TenantViewSet(XOSViewSet):
151 base_name = "qt600tenant"
152 method_name = "qt600tenant"
153 method_kind = "viewset"
154 queryset = Qt600Tenant.get_tenant_objects().all()
155 serializer_class = Qt600TenantSerializer
156
157 @classmethod
158 def get_urlpatterns(self, api_path="^"):
159 patterns = super(Qt600TenantViewSet, self).get_urlpatterns(api_path=api_path)
160
161 # example to demonstrate adding a custom endpoint
162 patterns.append( self.detail_url("is_initiator/$", {"get": "get_is_initiator", "put": "set_is_initiator"}, "is_initiator") )
163 patterns.append( self.detail_url("is_reflector/$", {"get": "get_is_reflector", "put": "set_is_reflector"}, "is_reflector") )
164 patterns.append( self.detail_url("reflector/$", {"get": "get_reflector", "put": "set_reflector"}, "reflector") )
165
166 return patterns
167
168 def list(self, request):
169 queryset = self.filter_queryset(self.get_queryset())
170 serializer = self.get_serializer(queryset, many=True)
171 return Response(serializer.data)
172
173 def get_is_initiator(self, request, pk=None):
174 qt600_tenant = self.get_object()
175 return Response({"is_initiator": qt600_tenant.is_initiator})
176
177 def set_is_initiator(self, request, pk=None):
178 qt600_tenant = self.get_object()
179 qt600_tenant.is_initiator = request.data["is_initiator"]
180 qt600_tenant.save()
181 return Response({"is_initiator": qt600_tenant.is_initiator})
182
183 def get_is_reflector(self, request, pk=None):
184 qt600_tenant = self.get_object()
185 return Response({"is_reflector": qt600_tenant.is_reflector})
186
187 def set_is_reflector(self, request, pk=None):
188 qt600_tenant = self.get_object()
189 qt600_tenant.is_reflector = request.data["is_reflector"]
190 qt600_tenant.save()
191 return Response({"is_reflector": qt600_tenant.is_reflector})
192
193 def get_reflector(self, request, pk=None):
194 qt600_tenant = self.get_object()
195 return Response({"reflector": qt600_tenant.reflector})
196
197 def set_reflector(self, request, pk=None):
198 qt600_tenant = self.get_object()
199 qt600_tenant.reflector = request.data["reflector"]
200 qt600_tenant.save()
201 return Response({"reflector": qt600_tenant.reflector})