Browse Source

删除网关时删除子设备和关联的场景数据

locky 2 năm trước cách đây
mục cha
commit
2b5bff417b
1 tập tin đã thay đổi với 10 bổ sung4 xóa
  1. 10 4
      Controller/SensorGateway/GatewayDeviceController.py

+ 10 - 4
Controller/SensorGateway/GatewayDeviceController.py

@@ -160,13 +160,19 @@ class GatewayDeviceView(View):
                         family_device_qs = FamilyRoomDevice.objects.filter(device_id=device_id)
                         if family_device_qs.exists():
                             family_device_qs.delete()
-                        gateway_qs = GatewaySubDevice.objects.filter(device_id=device_id)
-                        if gateway_qs.exists():
-                            gateway_qs.delete()
                         uid_set_qs = UidSetModel.objects.filter(uid=device_qs.first().UID)
                         if uid_set_qs.exists():
                             uid_set_qs.delete()
-                        smart_scene_qs = SmartScene.objects.filter(device_id=device_id)
+
+                        # 如果有子设备,删除子设备和关联的场景数据
+                        gateway_qs = GatewaySubDevice.objects.filter(device_id=device_id)
+                        if gateway_qs.exists():
+                            sub_id_list = gateway_qs.values_list('id', flat=True)
+                            smart_scene_qs = SmartScene.objects.filter(
+                                Q(device_id=device_id) | Q(sub_device_id__in=sub_id_list))
+                            gateway_qs.delete()
+                        else:
+                            smart_scene_qs = SmartScene.objects.filter(device_id=device_id)
                         if smart_scene_qs.exists():
                             # 通知设备删除场景id
                             serial_number = device_qs.first().serial_number