blob: dd66d6d3d8e6dc3e4fbca3cd3a949e6d6e5b65b5 [file] [log] [blame]
Scott Baker99dac102016-06-08 16:35:39 -07001import json
2from django.http import HttpResponse
3from rest_framework.decorators import api_view
4from rest_framework.response import Response
5from rest_framework.reverse import reverse
6from rest_framework import serializers
7from rest_framework import generics
8from rest_framework import status
9from core.models import *
10from xos.apibase import XOSListCreateAPIView, XOSRetrieveUpdateDestroyAPIView, XOSPermissionDenied
11from api.xosapi_helpers import PlusModelSerializer, XOSViewSet, ReadOnlyField
12
13class OnboardingViewSet(XOSViewSet):
14 base_name = "onboarding"
15 method_name = "onboarding"
16 method_kind = "viewset"
17
18 @classmethod
19 def get_urlpatterns(self, api_path="^"):
20 patterns = [] #super(CordSubscriberViewSet, self).get_urlpatterns(api_path=api_path)
21
22 patterns.append( self.list_url("xos/ready/$", {"get": "get_xos_ready"}, "xos_ready") )
23
24 patterns.append( self.list_url("summary/$", {"get": "get_summary"}, "summary") )
25
26 patterns.append( self.list_url("services/$", {"get": "get_service_list"}, "service_list") )
27 patterns.append( self.list_url("services/(?P<service>[a-zA-Z0-9\-_]+)/ready/$", {"get": "get_service_ready"}, "service_ready") )
28
29
30 return patterns
31
32 def is_ready(self, obj):
33 return (obj.enacted is not None) and (obj.updated is not None) and (obj.enacted>=obj.updated) and (obj.backend_status.startswith("1"))
34
35 def get_xos_ready(self, request):
36 xos = XOS.objects.all()
37 if not xos:
38 return Response(false)
39
40 xos=xos[0]
41
42 result = (xos.enacted is not None) and (xos.updated is not None) and (xos.enacted>=xos.updated) and (xos.backend_status.startswith("1"))
43 return HttpResponse( json.dumps(result), content_type="application/javascript" )
44
45 def get_summary(self, request):
46 result = []
47
48 xos = XOS.objects.all()
49 if not xos:
50 result.append( ("XOS", false) )
51 else:
52 xos=xos[0]
53
54 result.append( ("XOS", self.is_ready(xos)) )
55
56 for sc in xos.service_controllers.all():
57 result.append( (sc.name, self.is_ready(sc)) )
58
59 result = "\n".join( ["%s: %s" % (x[0], x[1]) for x in result] )
60 if result:
61 result = result + "\n"
62
63 return HttpResponse( result, content_type="text/ascii" )
64
65 def get_service_list(self, request):
66 xos = XOS.objects.all()
67 if not xos:
68 return Response([])
69
70 xos=xos[0]
71
72 result = []
73 for sc in xos.service_controllers.all():
74 result.append(sc.name)
75
76 return HttpResponse( json.dumps(result), content_type="application/javascript")
77
78 def get_service_ready(self, request, service):
79 xos = XOS.objects.all()
80 if not xos:
81 return Response([])
82
83 xos=xos[0]
84
85 sc=xos.service_controllers.filter(name=service)
86 if not sc:
87 return HttpResponse("Not Found", status_code=404)
88
89 sc=sc[0]
90 result = self.is_ready(sc)
91
92 return HttpResponse( json.dumps(result), content_type="application/javascript")
93
94
95
96
97