|
@@ -701,11 +701,35 @@ 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']
|
|
|
- version_parts = list(map(int, version.split('.')))
|
|
|
- if version_parts <= version_number:
|
|
|
- version_number_list.append(version)
|
|
|
+ # 必须是版本号
|
|
|
+ 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)
|
|
|
# 版本号对应的设备信息图标
|
|
|
for version_number in version_number_list:
|
|
|
app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
|
|
@@ -719,17 +743,22 @@ class DeviceManagement(View):
|
|
|
'name', 'sort',
|
|
|
'app_device_type__app_version_number_id')
|
|
|
for app_bundle in app_bundle_qs:
|
|
|
- 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'],
|
|
|
- })
|
|
|
+ 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'],
|
|
|
+ })
|
|
|
+ # 去重
|
|
|
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]
|
|
|
- print(dvr_list, ipc_list)
|
|
|
res = {
|
|
|
'deviceDvr': sorted(dvr_list, key=operator.itemgetter('sort')),
|
|
|
'deviceIpc': sorted(ipc_list, key=operator.itemgetter('sort')),
|