Browse Source

alexa控制插座

peng 2 years ago
parent
commit
58a59350b2
2 changed files with 47 additions and 2 deletions
  1. 1 1
      Ansjer/urls.py
  2. 46 1
      Controller/UserController.py

+ 1 - 1
Ansjer/urls.py

@@ -220,7 +220,7 @@ urlpatterns = [
     url(r'^push_deploy/(?P<operation>.*)$', PushDeploy.PushDeployView.as_view()),
     url(r'^oalexa/auth', UserController.alexaAuthView.as_view()),
     url(r'^oalexa/discoveryuid', UserController.alexaUidView.as_view()),
-
+    re_path(r'^oalexa/discoveryswitch', UserController.alexaSwitchView.as_view()),
     re_path('appset/(?P<operation>.*)', AppSetController.AppSetView.as_view()),
     url(r'^application/(?P<operation>.*)$', ApplicationController.ApplicationView.as_view()),
     url(r'^login/oauth/(?P<operation>.*)$', ApplicationController.AuthView.as_view()),

+ 46 - 1
Controller/UserController.py

@@ -3218,7 +3218,8 @@ class alexaUidView(TemplateView):
                                                                                 'userID__region_country')
         if not uid_qs.exists():
             return response.json(107)
-        country_qs = CountryModel.objects.filter(id=uid_qs[0]['userID__region_country']).values('region__continent_code')
+        country_qs = CountryModel.objects.filter(id=uid_qs[0]['userID__region_country']).values(
+            'region__continent_code')
 
         try:
             uid_dict = {}
@@ -3262,6 +3263,50 @@ class alexaUidView(TemplateView):
             return response.json(500, repr(e))
 
 
+class alexaSwitchView(TemplateView):
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        # request_dict = json.loads(request.body.decode('utf-8'))
+        request_dict = request.POST
+        response = ResponseObject()
+        return self.validates(request_dict, response)
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.GET
+        response = ResponseObject()
+        return self.validates(request_dict, response)
+
+    def validates(self, request_dict, response):
+        sid = request_dict.get('sid')
+        sst = request_dict.get('sst')
+        userID = request_dict.get('alexa_user_id')
+
+        if sid != 'admin' or sst != 'admin':
+            return response.json(107)
+        switch_qs = Device_Info.objects.filter(userID_id=userID, Type=201).values('UID', 'NickName',
+                                                                                  'userID__region_country')
+        if not switch_qs.exists():
+            return response.json(107)
+        # 设备alexa区域
+        country_qs = CountryModel.objects.filter(id=switch_qs[0]['userID__region_country']).values(
+            'region__continent_code')
+        region_alexa = country_qs[0]['region__continent_code'] if country_qs.exists() else 'EN'
+
+        try:
+            switch_list = []
+            for switch in switch_qs:
+                uid = switch['UID']
+                nick_name = switch['NickName']
+                switch_list.append({'uid': uid, 'nick': nick_name, 'region': region_alexa})
+            res = {
+                'switch_list': switch_list
+            }
+            return response.json(0, res)
+        except Exception as e:
+            return response.json(500, repr(e))
+
+
 # 登出
 class V2LogoutView(TemplateView):
     @method_decorator(csrf_exempt)