|
@@ -764,27 +764,38 @@ class SmartSceneView(View):
|
|
|
@return: response
|
|
|
"""
|
|
|
family_id = request_dict.get('familyId', None)
|
|
|
+ device_id = request_dict.get('deviceId', None)
|
|
|
+ sub_device_id = request_dict.get('subDeviceId', None)
|
|
|
page = request_dict.get('page', None)
|
|
|
size = request_dict.get('size', None)
|
|
|
start_time = request_dict.get('startTime', None)
|
|
|
end_time = request_dict.get('endTime', None)
|
|
|
|
|
|
if not all([family_id, page, size]):
|
|
|
- return response.json(444, {'error param': 'page or size'})
|
|
|
+ return response.json(444, {'error param': 'familyId or page or size'})
|
|
|
|
|
|
device_list = []
|
|
|
sub_device_list = []
|
|
|
- family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id).values('device_id', 'sub_device')
|
|
|
- for item in family_room_device_qs:
|
|
|
- if item['sub_device'] and item['sub_device'] not in sub_device_list:
|
|
|
- sub_device_list.append(item['sub_device'])
|
|
|
- if item['device_id'] not in device_list:
|
|
|
- device_list.append(item['device_id'])
|
|
|
-
|
|
|
+ if not device_id and not sub_device_id:
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id)
|
|
|
+ family_device_qs = family_room_device_qs.values('device', 'sub_device')
|
|
|
+ for device in family_device_qs:
|
|
|
+ if device['device'] not in device_list:
|
|
|
+ device_list.append(device['device'])
|
|
|
+ if device['sub_device']:
|
|
|
+ sub_device_list.append(device['sub_device'])
|
|
|
+ elif sub_device_id:
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=sub_device_id)
|
|
|
+ sub_device_list.append(sub_device_id)
|
|
|
+ else:
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, device=device_id)
|
|
|
+ device_list.append(device_id)
|
|
|
+ if not family_room_device_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
try:
|
|
|
page, size = int(page), int(size)
|
|
|
- scene_log_qs = SceneLog.objects.filter(
|
|
|
- Q(device_id__in=device_list) | Q(sub_device_id__in=sub_device_list))
|
|
|
+ scene_log_qs = SceneLog.objects.filter(Q(device_id__in=device_list) | Q(sub_device_id__in=sub_device_list))
|
|
|
+
|
|
|
if start_time and end_time:
|
|
|
scene_log_qs = scene_log_qs.filter(created_time__range=(start_time, end_time)).values(
|
|
|
'status',
|
|
@@ -795,21 +806,26 @@ class SmartSceneView(View):
|
|
|
'tasks').order_by(
|
|
|
'-created_time')[(page - 1) * size:page * size]
|
|
|
else:
|
|
|
- scene_log_qs = scene_log_qs.values('status',
|
|
|
- 'created_time', 'device_id', 'sub_device_id', 'scene_name',
|
|
|
+ scene_log_qs = scene_log_qs.values('status', 'created_time', 'device_id', 'sub_device_id', 'scene_name',
|
|
|
'tasks').order_by(
|
|
|
'-created_time')[(page - 1) * size:page * size]
|
|
|
if not scene_log_qs.exists():
|
|
|
return response.json(0, [])
|
|
|
for item in scene_log_qs:
|
|
|
- device_id = item['device_id']
|
|
|
- sub_device_id = item['sub_device_id']
|
|
|
- if device_id:
|
|
|
- qs = Device_Info.objects.filter(id=device_id).values('Type')
|
|
|
- item['device_type'] = qs[0]['Type']
|
|
|
+ if not device_id and not sub_device_id:
|
|
|
+ if not item['sub_device_id']:
|
|
|
+ device_qs = Device_Info.objects.filter(id=device_id).values('Type')
|
|
|
+ item['device_type'] = device_qs[0]['Type'] if device_qs.exists() else ''
|
|
|
+ else:
|
|
|
+ device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
|
|
|
+ item['device_type'] = device_qs[0]['device_type'] if device_qs.exists() else ''
|
|
|
+
|
|
|
+ elif sub_device_id:
|
|
|
+ device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
|
|
|
+ item['device_type'] = device_qs[0]['device_type'] if device_qs.exists() else ''
|
|
|
else:
|
|
|
- qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
|
|
|
- item['device_type'] = qs[0]['device_type']
|
|
|
+ device_qs = Device_Info.objects.filter(id=device_id).values('Type')
|
|
|
+ item['device_type'] = device_qs[0]['Type'] if device_qs.exists() else ''
|
|
|
item['tasks'] = eval(item['tasks'])
|
|
|
return response.json(0, list(scene_log_qs))
|
|
|
except Exception as e:
|
|
@@ -827,17 +843,29 @@ class SmartSceneView(View):
|
|
|
@return: response
|
|
|
"""
|
|
|
family_id = request_dict.get('familyId', None)
|
|
|
-
|
|
|
+ device_id = request_dict.get('deviceId', None)
|
|
|
+ sub_device_id = request_dict.get('subDeviceId', None)
|
|
|
if not family_id:
|
|
|
- return response.json(444, {'error param': 'device_id and gatewaySubId'})
|
|
|
+ return response.json(444, {'error param': 'familyId'})
|
|
|
+
|
|
|
device_list = []
|
|
|
sub_device_list = []
|
|
|
- family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id).values('device_id', 'sub_device')
|
|
|
- for item in family_room_device_qs:
|
|
|
- if item['sub_device'] and item['sub_device'] not in sub_device_list:
|
|
|
- sub_device_list.append(item['sub_device'])
|
|
|
- if item['device_id'] not in device_list:
|
|
|
- device_list.append(item['device_id'])
|
|
|
+ if not device_id and not sub_device_id:
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id)
|
|
|
+ family_device_qs = family_room_device_qs.values('device', 'sub_device')
|
|
|
+ for device in family_device_qs:
|
|
|
+ if device['device'] not in device_list:
|
|
|
+ device_list.append(device['device'])
|
|
|
+ if device['sub_device']:
|
|
|
+ sub_device_list.append(device['sub_device'])
|
|
|
+ elif sub_device_id:
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=sub_device_id)
|
|
|
+ sub_device_list.append(sub_device_id)
|
|
|
+ else:
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, device=device_id)
|
|
|
+ device_list.append(device_id)
|
|
|
+ if not family_room_device_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
|
|
|
try:
|
|
|
scene_log_qs = SceneLog.objects.extra(
|