|
@@ -632,48 +632,52 @@ class DeviceManagement(View):
|
|
|
model = request_dict.get('model', None)
|
|
|
type = request_dict.get('type', None)
|
|
|
# device_name_language表数据
|
|
|
- lang = request_dict.get('lang', None)
|
|
|
name = request_dict.get('name', None)
|
|
|
sort = request_dict.get('sort', None)
|
|
|
# 上传图标
|
|
|
file = request.FILES.get('iconFile', None)
|
|
|
+ if not all([model, type, name, sort, version_number, file]):
|
|
|
+ return response.json(444, 'model, type, file, name, sort, version_number')
|
|
|
fileName = file.name
|
|
|
- if not all([model, type, lang, name, sort, version_number]):
|
|
|
- return response.json(444, 'model, type, lang, name, sort, version_number')
|
|
|
type = int(type)
|
|
|
+ data_name = eval(name)
|
|
|
try:
|
|
|
with transaction.atomic():
|
|
|
- app_bundle_qs = AppBundle.objects.filter(id__in=app_bundle_id,
|
|
|
- app_device_type__devicenamelanguage__lang=lang,
|
|
|
- app_device_type__app_version_number_id=version_number,
|
|
|
- app_device_type__type=type,
|
|
|
- app_device_type__model=model)
|
|
|
- # 数据是否重复
|
|
|
- if app_bundle_qs.exists():
|
|
|
- return response.json(174)
|
|
|
- # 是否存在相同的url
|
|
|
- response_url = 'https://ansjerfilemanager.s3.amazonaws.com/app/device_type_images/' + format(fileName)
|
|
|
- app_bundle_qs = AppDeviceType.objects.filter(appbundle__id__in=app_bundle_id, type=type, model=model)
|
|
|
- if not app_bundle_qs.exists():
|
|
|
- # 上传设备图标至存储桶
|
|
|
- bucket_name = 'ansjerfilemanager'
|
|
|
- file_key = 'app/device_type_images/{}'.format(fileName)
|
|
|
- s3 = AmazonS3Util(AWS_ACCESS_KEY_ID[1], AWS_SECRET_ACCESS_KEY[1], AWS_SES_ACCESS_REGION)
|
|
|
- # 地址:https://ansjerfilemanager.s3.amazonaws.com/app/device_type_images/camera_c190.png
|
|
|
- s3.upload_file_obj(
|
|
|
- bucket_name,
|
|
|
- file_key,
|
|
|
- file,
|
|
|
- {'ContentType': file.content_type, 'ACL': 'public-read'})
|
|
|
+ for k, v in data_name.items():
|
|
|
+ app_bundle_qs = AppBundle.objects.filter(id__in=app_bundle_id,
|
|
|
+ app_device_type__devicenamelanguage__lang=k,
|
|
|
+ app_device_type__app_version_number_id=version_number,
|
|
|
+ app_device_type__type=type,
|
|
|
+ app_device_type__model=model)
|
|
|
+ # 数据是否重复
|
|
|
+ if app_bundle_qs.exists():
|
|
|
+ return response.json(174)
|
|
|
+ # 是否存在相同的url
|
|
|
+ response_url = 'https://ansjerfilemanager.s3.amazonaws.com/app/device_type_images/' + format(
|
|
|
+ fileName)
|
|
|
+ app_bundle_qs = AppDeviceType.objects.filter(appbundle__id__in=app_bundle_id, type=type,
|
|
|
+ model=model, icon=response_url)
|
|
|
+ if not app_bundle_qs.exists():
|
|
|
+ # 上传设备图标至存储桶
|
|
|
+ bucket_name = 'ansjerfilemanager'
|
|
|
+ file_key = 'app/device_type_images/{}'.format(fileName)
|
|
|
+ s3 = AmazonS3Util(AWS_ACCESS_KEY_ID[1], AWS_SECRET_ACCESS_KEY[1], AWS_SES_ACCESS_REGION)
|
|
|
+ # 地址:https://ansjerfilemanager.s3.amazonaws.com/app/device_type_images/camera_c190.png
|
|
|
+ s3.upload_file_obj(
|
|
|
+ bucket_name,
|
|
|
+ file_key,
|
|
|
+ file,
|
|
|
+ {'ContentType': file.content_type, 'ACL': 'public-read'})
|
|
|
# 创建
|
|
|
- for app_id in app_bundle_id:
|
|
|
- app_bundle_qs = AppBundle.objects.filter(id=app_id).values('id')
|
|
|
- app_device_type_qs = AppDeviceType.objects.create(model=model, type=type, icon=response_url,
|
|
|
- app_version_number_id=version_number)
|
|
|
- DeviceNameLanguage.objects.create(lang=lang, name=name, sort=sort,
|
|
|
- app_device_type_id=app_device_type_qs.id)
|
|
|
- # 关联app包
|
|
|
- app_device_type_qs.appbundle_set.add(app_bundle_qs[0]['id'])
|
|
|
+ for k, v in data_name.items():
|
|
|
+ for app_id in app_bundle_id:
|
|
|
+ app_bundle_qs = AppBundle.objects.filter(id=app_id).values('id')
|
|
|
+ app_device_type_qs = AppDeviceType.objects.create(model=model, type=type, icon=response_url,
|
|
|
+ app_version_number_id=version_number)
|
|
|
+ DeviceNameLanguage.objects.create(lang=k, name=v, sort=sort,
|
|
|
+ app_device_type_id=app_device_type_qs.id)
|
|
|
+ # 关联app包
|
|
|
+ app_device_type_qs.appbundle_set.add(app_bundle_qs[0]['id'])
|
|
|
return response.json(0)
|
|
|
except Exception as e:
|
|
|
print(e)
|
|
@@ -701,35 +705,11 @@ class DeviceManagement(View):
|
|
|
# 判断版本是否存在, 不存在则获取输入版本范围内最接近的输入版本
|
|
|
version_number_list = []
|
|
|
app_bundle_list = []
|
|
|
- id_list = []
|
|
|
for version in app_bundle_qs:
|
|
|
version = version['app_device_type__app_version_number_id']
|
|
|
- # 必须是版本号
|
|
|
- if len(version) > 3:
|
|
|
- version_parts = list(map(int, version.split('.')))
|
|
|
- if version_parts <= version_number:
|
|
|
- version_number_list.append(version)
|
|
|
- else:
|
|
|
- id_list.append(int(version))
|
|
|
- # app_device_type__app_version_number_id为AppVersionNumber的主键时
|
|
|
- version_list = []
|
|
|
- if len(version_number_list) == 0:
|
|
|
- version_qs = AppVersionNumber.objects.filter(
|
|
|
- id__in=id_list).values('version_number').distinct()
|
|
|
- for version in version_qs:
|
|
|
- version_qs = AppVersionNumber.objects.filter(version_number=version['version_number'],
|
|
|
- app_bundle__app_bundle_id=app_bundle_id).values('id')
|
|
|
- if not version_qs.exists():
|
|
|
- continue
|
|
|
- version_number_data = {
|
|
|
- version_qs[0]['id']: version['version_number']
|
|
|
- }
|
|
|
- version_list.append(version_number_data)
|
|
|
- for version in version_list:
|
|
|
- for k, v in version.items():
|
|
|
- version_parts = list(map(int, v.split('.')))
|
|
|
- if version_parts <= version_number:
|
|
|
- version_number_list.append(k)
|
|
|
+ version_parts = list(map(int, version.split('.')))
|
|
|
+ if version_parts <= version_number:
|
|
|
+ version_number_list.append(version)
|
|
|
# 版本号对应的设备信息图标
|
|
|
for version_number in version_number_list:
|
|
|
app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
|
|
@@ -743,20 +723,14 @@ class DeviceManagement(View):
|
|
|
'name', 'sort',
|
|
|
'app_device_type__app_version_number_id')
|
|
|
for app_bundle in app_bundle_qs:
|
|
|
- device_type = any(item['type'] == app_bundle['type'] for item in app_bundle_list)
|
|
|
- if device_type:
|
|
|
- break
|
|
|
- else:
|
|
|
- app_bundle_list.append({
|
|
|
- 'model': app_bundle['model'],
|
|
|
- 'type': app_bundle['type'],
|
|
|
- 'icon': app_bundle['icon'],
|
|
|
- 'name': app_bundle['name'],
|
|
|
- 'sort': app_bundle['sort'],
|
|
|
- 'app_device_type__app_version_number_id': app_bundle[
|
|
|
- 'app_device_type__app_version_number_id'],
|
|
|
- })
|
|
|
- # 去重
|
|
|
+ app_bundle_list.append({
|
|
|
+ 'model': app_bundle['model'],
|
|
|
+ 'type': app_bundle['type'],
|
|
|
+ 'icon': app_bundle['icon'],
|
|
|
+ 'name': app_bundle['name'],
|
|
|
+ 'sort': app_bundle['sort'],
|
|
|
+ 'app_device_type__app_version_number_id': app_bundle['app_device_type__app_version_number_id'],
|
|
|
+ })
|
|
|
dvr_list = [app_bundle for app_bundle in app_bundle_list if app_bundle['model'] == 1]
|
|
|
ipc_list = [app_bundle for app_bundle in app_bundle_list if app_bundle['model'] == 2]
|
|
|
res = {
|