Эх сурвалжийг харах

修复删除网关子设备存在问题

locky 2 жил өмнө
parent
commit
cfd63aa9a6

+ 4 - 3
Controller/SensorGateway/GatewayDeviceController.py

@@ -222,7 +222,6 @@ class GatewayDeviceView(View):
                 elif sub_ids:
                     sub_id_list = list(map(int, sub_ids.split(',')))
                     FamilyRoomDevice.objects.filter(sub_device__in=sub_id_list).delete()
-                    GatewaySubDevice.objects.filter(id__in=sub_id_list).delete()
 
                     # 删除场景,下发MQTT通知设备
                     smart_scene_qs = SmartScene.objects.filter(sub_device_id__in=sub_id_list)
@@ -230,6 +229,8 @@ class GatewayDeviceView(View):
                         # 查询网关序列号,确定MQTT主题
                         sub_device_qs = GatewaySubDevice.objects.filter(id=sub_id_list[0]).\
                             values('device__serial_number')
+                        if not sub_device_qs.exists():
+                            return response.json(173)
                         serial_number = sub_device_qs[0]['device__serial_number']
                         topic_name = SMART_SCENE_TOPIC.format(serial_number)
 
@@ -248,12 +249,12 @@ class GatewayDeviceView(View):
                             time.sleep(0.3)
                         smart_scene_qs.delete()
 
+                    GatewaySubDevice.objects.filter(id__in=sub_id_list).delete()
                     SceneLog.objects.filter(sub_device_id__in=sub_id_list).delete()
 
                 return response.json(0)
         except Exception as e:
-            print(e)
-            return response.json(177, repr(e))
+            return response.json(177, 'error_ine:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
     @staticmethod
     def reset_device(serial_number):