|
@@ -764,6 +764,8 @@ class SmartSceneView(View):
|
|
@return: response
|
|
@return: response
|
|
"""
|
|
"""
|
|
family_id = request_dict.get('familyId', None)
|
|
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)
|
|
page = request_dict.get('page', None)
|
|
size = request_dict.get('size', None)
|
|
size = request_dict.get('size', None)
|
|
start_time = request_dict.get('startTime', None)
|
|
start_time = request_dict.get('startTime', None)
|
|
@@ -771,45 +773,40 @@ class SmartSceneView(View):
|
|
|
|
|
|
if not all([family_id, page, size]):
|
|
if not all([family_id, page, size]):
|
|
return response.json(444, {'error param': 'page or size'})
|
|
return response.json(444, {'error param': '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 any([device_id, sub_device_id]):
|
|
|
|
+ return response.json(444, {'error param': 'deviceId and subDeviceId'})
|
|
|
|
+ if sub_device_id:
|
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=sub_device_id)
|
|
|
|
+ else:
|
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, device=device_id)
|
|
|
|
+ if not family_room_device_qs.exists():
|
|
|
|
+ return response.json(173)
|
|
|
|
|
|
try:
|
|
try:
|
|
page, size = int(page), int(size)
|
|
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))
|
|
|
|
|
|
+ if sub_device_id:
|
|
|
|
+ scene_log_qs = SceneLog.objects.filter(sub_device_id=sub_device_id)
|
|
|
|
+ device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
|
|
|
|
+ else:
|
|
|
|
+ scene_log_qs = SceneLog.objects.filter(device_id=device_id)
|
|
|
|
+ device_qs = Device_Info.objects.filter(id=device_id).values('Type')
|
|
if start_time and end_time:
|
|
if start_time and end_time:
|
|
scene_log_qs = scene_log_qs.filter(created_time__range=(start_time, end_time)).values(
|
|
scene_log_qs = scene_log_qs.filter(created_time__range=(start_time, end_time)).values(
|
|
'status',
|
|
'status',
|
|
'created_time',
|
|
'created_time',
|
|
- 'device_id',
|
|
|
|
- 'sub_device_id',
|
|
|
|
'scene_name',
|
|
'scene_name',
|
|
'tasks').order_by(
|
|
'tasks').order_by(
|
|
'-created_time')[(page - 1) * size:page * size]
|
|
'-created_time')[(page - 1) * size:page * size]
|
|
else:
|
|
else:
|
|
- scene_log_qs = scene_log_qs.values('status',
|
|
|
|
- 'created_time', 'device_id', 'sub_device_id', 'scene_name',
|
|
|
|
- 'tasks').order_by(
|
|
|
|
|
|
+ scene_log_qs = scene_log_qs.values('status', 'created_time', 'scene_name', 'tasks').order_by(
|
|
'-created_time')[(page - 1) * size:page * size]
|
|
'-created_time')[(page - 1) * size:page * size]
|
|
if not scene_log_qs.exists():
|
|
if not scene_log_qs.exists():
|
|
return response.json(0, [])
|
|
return response.json(0, [])
|
|
for item in scene_log_qs:
|
|
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 sub_device_id:
|
|
|
|
+ item['device_type'] = device_qs[0]['device_type']
|
|
else:
|
|
else:
|
|
- qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
|
|
|
|
- item['device_type'] = qs[0]['device_type']
|
|
|
|
|
|
+ item['device_type'] = device_qs[0]['Type']
|
|
item['tasks'] = eval(item['tasks'])
|
|
item['tasks'] = eval(item['tasks'])
|
|
return response.json(0, list(scene_log_qs))
|
|
return response.json(0, list(scene_log_qs))
|
|
except Exception as e:
|
|
except Exception as e:
|
|
@@ -827,24 +824,32 @@ class SmartSceneView(View):
|
|
@return: response
|
|
@return: response
|
|
"""
|
|
"""
|
|
family_id = request_dict.get('familyId', None)
|
|
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:
|
|
if not family_id:
|
|
- return response.json(444, {'error param': 'device_id and gatewaySubId'})
|
|
|
|
- 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'])
|
|
|
|
|
|
+ return response.json(444, {'error param': 'familyId'})
|
|
|
|
+ if not any([device_id, sub_device_id]):
|
|
|
|
+ return response.json(444, {'error param': 'deviceId and subDeviceId'})
|
|
|
|
+ if sub_device_id:
|
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=sub_device_id)
|
|
|
|
+ else:
|
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, device=device_id)
|
|
|
|
+ if not family_room_device_qs.exists():
|
|
|
|
+ return response.json(173)
|
|
|
|
|
|
try:
|
|
try:
|
|
- scene_log_qs = SceneLog.objects.extra(
|
|
|
|
- select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
|
|
|
|
- filter(Q(device_id__in=device_list) | Q(sub_device_id__in=sub_device_list)). \
|
|
|
|
- annotate(count=Count('created_time')). \
|
|
|
|
- order_by('-date')[:31]
|
|
|
|
|
|
+ if sub_device_id:
|
|
|
|
+ scene_log_qs = SceneLog.objects.extra(
|
|
|
|
+ select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
|
|
|
|
+ filter(sub_device_id=sub_device_id). \
|
|
|
|
+ annotate(count=Count('created_time')). \
|
|
|
|
+ order_by('-date')[:31]
|
|
|
|
+ else:
|
|
|
|
+ scene_log_qs = SceneLog.objects.extra(
|
|
|
|
+ select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
|
|
|
|
+ filter(device_id=device_id). \
|
|
|
|
+ annotate(count=Count('created_time')). \
|
|
|
|
+ order_by('-date')[:31]
|
|
log_date_list = []
|
|
log_date_list = []
|
|
for scene_log in scene_log_qs:
|
|
for scene_log in scene_log_qs:
|
|
log_date_list.append({
|
|
log_date_list.append({
|