|
@@ -5,18 +5,18 @@ import time
|
|
|
|
|
|
import oss2
|
|
|
from django.db import transaction
|
|
|
-from django.db.models import Q
|
|
|
+from django.db.models import Q, F
|
|
|
+from django.views.generic.base import View
|
|
|
|
|
|
from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
|
|
|
+from Model.models import Device_Info, UidSetModel, LogModel, UID_Bucket, Unused_Uid_Meal, Order_Model, StsCrdModel, \
|
|
|
+ VodHlsModel, ExperienceContextModel, DeviceTypeModel, Equipment_Info, UidUserModel, ExperienceAiModel, AiService, \
|
|
|
+ AppBundle
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
-from django.views.generic.base import View
|
|
|
-
|
|
|
+from Service.CommonService import CommonService
|
|
|
from Service.EquipmentInfoService import EquipmentInfoService
|
|
|
from Service.ModelService import ModelService
|
|
|
-from Service.CommonService import CommonService
|
|
|
-from Model.models import Device_Info, UidSetModel, LogModel, UID_Bucket, Unused_Uid_Meal, Order_Model, StsCrdModel, \
|
|
|
- VodHlsModel, ExperienceContextModel, DeviceTypeModel, Equipment_Info, UidUserModel, ExperienceAiModel, AiService
|
|
|
|
|
|
|
|
|
class DeviceManagement(View):
|
|
@@ -37,6 +37,8 @@ class DeviceManagement(View):
|
|
|
return self.addDeviceType(request, request_dict, response)
|
|
|
elif operation == 'delDeviceData': # 删除设备数据
|
|
|
return self.del_device_data(request_dict, response)
|
|
|
+ elif operation == 'getDeviceIcon': # app获取设备图标
|
|
|
+ return self.get_device_icon(request_dict, response)
|
|
|
else:
|
|
|
tko = TokenObject(
|
|
|
request.META.get('HTTP_AUTHORIZATION'),
|
|
@@ -47,13 +49,13 @@ class DeviceManagement(View):
|
|
|
userID = tko.userID
|
|
|
if not userID:
|
|
|
return response.json(444, 'userID')
|
|
|
- if operation == 'getDeviceInfoList': # 获取设备信息数据
|
|
|
+ if operation == 'getDeviceInfoList': # 获取设备信息数据
|
|
|
return self.get_device_info_list(request_dict, response)
|
|
|
elif operation == 'deleteDevice':
|
|
|
return self.deleteDevice(request_dict, response)
|
|
|
- elif operation == 'resetVod': # 重置云存
|
|
|
+ elif operation == 'resetVod': # 重置云存
|
|
|
return self.resetVod(request, request_dict, response)
|
|
|
- elif operation == 'resetAi': # 重置AI
|
|
|
+ elif operation == 'resetAi': # 重置AI
|
|
|
return self.reset_ai(request, request_dict, response)
|
|
|
elif operation == 'resetPrimaryUser':
|
|
|
return self.resetPrimaryUser(request, request_dict, response)
|
|
@@ -80,7 +82,7 @@ class DeviceManagement(View):
|
|
|
line = int(pageSize)
|
|
|
|
|
|
try:
|
|
|
- if UID or serialNumber or NickName or username: # 条件查询
|
|
|
+ if UID or serialNumber or NickName or username: # 条件查询
|
|
|
if UID:
|
|
|
device_info_qs = Device_Info.objects.filter(UID__contains=UID)
|
|
|
if serialNumber:
|
|
@@ -95,7 +97,7 @@ class DeviceManagement(View):
|
|
|
if not total:
|
|
|
return response.json(0, {'list': {}, 'total': 0})
|
|
|
device_info_qs = device_info_qs[(page - 1) * line:page * line]
|
|
|
- else: # 查询全部
|
|
|
+ else: # 查询全部
|
|
|
total = Device_Info.objects.filter().count()
|
|
|
device_info_qs = Device_Info.objects.filter()[(page - 1) * line:page * line]
|
|
|
if not device_info_qs.exists():
|
|
@@ -108,13 +110,15 @@ class DeviceManagement(View):
|
|
|
# 设备的用户名和主用户
|
|
|
username = ModelService.get_user_name(device_info_list["datas"][k]['fields']['userID'])
|
|
|
device_info_list["datas"][k]['fields']['username'] = username
|
|
|
- device_info_list["datas"][k]['fields']['vodPrimaryMaster'] = device_info_list["datas"][k]['fields']['vodPrimaryMaster']
|
|
|
+ device_info_list["datas"][k]['fields']['vodPrimaryMaster'] = \
|
|
|
+ device_info_list["datas"][k]['fields']['vodPrimaryMaster']
|
|
|
# 设备类型,是否支持Alexa和ip
|
|
|
type = device_info_list["datas"][k]['fields']['Type']
|
|
|
device_type_qs = DeviceTypeModel.objects.filter(type=type).values('name')
|
|
|
if device_type_qs.exists():
|
|
|
device_info_list["datas"][k]['fields']['Type'] = device_type_qs[0]['name']
|
|
|
- uid_set_qs = UidSetModel.objects.filter(uid=device_info_list["datas"][k]['fields']['UID']).values('is_alexa', 'ip', 'version')
|
|
|
+ uid_set_qs = UidSetModel.objects.filter(
|
|
|
+ uid=device_info_list["datas"][k]['fields']['UID']).values('is_alexa', 'ip', 'version')
|
|
|
if uid_set_qs.exists():
|
|
|
isAlexa = '是' if uid_set_qs[0]['is_alexa'] else '否'
|
|
|
device_info_list["datas"][k]['fields']['isAlexa'] = isAlexa
|
|
@@ -138,7 +142,7 @@ class DeviceManagement(View):
|
|
|
Device_Info.objects.filter(id=deviceID).delete()
|
|
|
# 删除推送消息
|
|
|
for val in range(1, 8):
|
|
|
- EquipmentInfoService.get_equipment_info_model('', val).\
|
|
|
+ EquipmentInfoService.get_equipment_info_model('', val). \
|
|
|
filter(device_user_id=userID, device_uid=uid).delete()
|
|
|
return response.json(0)
|
|
|
except Exception as e:
|
|
@@ -294,7 +298,7 @@ class DeviceManagement(View):
|
|
|
# 上传文件到阿里云OSS
|
|
|
auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
|
|
|
bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
|
|
|
- key = 'device_type/' + icon # 图片文件存放于 device_type 目录下
|
|
|
+ key = 'device_type/' + icon # 图片文件存放于 device_type 目录下
|
|
|
# https://oss.console.aliyun.com/bucket/oss-cn-shenzhen/ansjer-static-resources/object?path=device_type%2F
|
|
|
bucket.put_object(key=key, data=iconFile)
|
|
|
DeviceTypeModel.objects.create(name=name, model=model, type=type, ptz_type=ptz_type, icon=icon,
|
|
@@ -313,7 +317,7 @@ class DeviceManagement(View):
|
|
|
return response.json(444)
|
|
|
try:
|
|
|
with transaction.atomic():
|
|
|
- uidList = uidList.splitlines() # 按行('\r', '\r\n', \n')切割字符串返回列表
|
|
|
+ uidList = uidList.splitlines() # 按行('\r', '\r\n', \n')切割字符串返回列表
|
|
|
# 根据删除项删除相关数据
|
|
|
if '设备信息数据' in delDataOptions:
|
|
|
Device_Info.objects.filter(UID__in=uidList).delete()
|
|
@@ -338,3 +342,27 @@ class DeviceManagement(View):
|
|
|
except Exception as e:
|
|
|
print(e)
|
|
|
return response.json(500, repr(e))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_device_icon(request_dict, response):
|
|
|
+ lang = request_dict.get('lang', None)
|
|
|
+ app_bundle_id = request_dict.get('app_bundle_id', None)
|
|
|
+
|
|
|
+ if not all([lang, app_bundle_id]):
|
|
|
+ return response.json(444)
|
|
|
+ try:
|
|
|
+ app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
|
|
|
+ app_device_type__devicenamelanguage__lang=lang).annotate(
|
|
|
+ model=F('app_device_type__model'), type=F('app_device_type__type'), icon=F('app_device_type__icon'),
|
|
|
+ name=F('app_device_type__devicenamelanguage__name'), sort=F('app_device_type__devicenamelanguage__sort')).values('model', 'type', 'icon', 'name', 'sort')
|
|
|
+ dvr_list = [app_bundle for app_bundle in app_bundle_qs if app_bundle['model'] == 1]
|
|
|
+ ipc_list = [app_bundle for app_bundle in app_bundle_qs if app_bundle['model'] == 2]
|
|
|
+ print(dvr_list, ipc_list)
|
|
|
+ res = {
|
|
|
+ 'deviceDvr': dvr_list,
|
|
|
+ 'deviceIpc': ipc_list,
|
|
|
+ }
|
|
|
+ return response.json(0, res)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, repr(e))
|