|
@@ -966,28 +966,62 @@ class DeviceManagement(View):
|
|
|
'name', 'sort', 'config',
|
|
|
'iconV2',
|
|
|
'app_device_type__app_version_number_id')
|
|
|
- if api_version == "V2":
|
|
|
- for app_bundle in app_bundle_qs:
|
|
|
+
|
|
|
+ # 使用lang="en"来补全缺失的数据
|
|
|
+ en_lang_qs = AppBundle.objects.filter(
|
|
|
+ app_bundle_id=app_bundle_id,
|
|
|
+ app_device_type__devicenamelanguage__lang="en",
|
|
|
+ app_device_type__app_version_number_id=version_number
|
|
|
+ ).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'),
|
|
|
+ iconV2=F('app_device_type__iconV2'),
|
|
|
+ sort=F('app_device_type__devicenamelanguage__sort'),
|
|
|
+ config=F('app_device_type__config'),
|
|
|
+ app_version_number_id=F('app_device_type__app_version_number_id')
|
|
|
+ ).values('model', 'type', 'icon', 'name', 'sort', 'config', 'iconV2',
|
|
|
+ 'app_device_type__app_version_number_id')
|
|
|
+
|
|
|
+ # 转换查询集为字典
|
|
|
+ current_lang_data = {item['type']: item for item in app_bundle_qs}
|
|
|
+ en_lang_data = {item['type']: item for item in en_lang_qs}
|
|
|
+
|
|
|
+ # 合并数据,优先使用当前语言的数据,缺少的字段用英文补充
|
|
|
+ for type, en_data in en_lang_data.items():
|
|
|
+ current_data = current_lang_data.get(type, {})
|
|
|
+ merged_data = {
|
|
|
+ 'type': en_data['type'],
|
|
|
+ 'model': current_data.get('model', en_data['model']),
|
|
|
+ 'icon': current_data.get('icon', en_data['icon']),
|
|
|
+ 'name': current_data.get('name', en_data['name']),
|
|
|
+ 'sort': current_data.get('sort', en_data['sort']),
|
|
|
+ 'config': current_data.get('config', en_data['config']),
|
|
|
+ 'iconV2': current_data.get('iconV2', en_data['iconV2']),
|
|
|
+ 'app_device_type__app_version_number_id': current_data.get(
|
|
|
+ 'app_device_type__app_version_number_id',
|
|
|
+ en_data['app_device_type__app_version_number_id']),
|
|
|
+ }
|
|
|
+ if api_version == "V2":
|
|
|
app_bundle_list.append({
|
|
|
- 'model': app_bundle['model'],
|
|
|
- 'type': app_bundle['type'],
|
|
|
- 'icon': app_bundle['iconV2'] if app_bundle['iconV2'] != "" else app_bundle['icon'],
|
|
|
- 'name': app_bundle['name'],
|
|
|
- 'sort': app_bundle['sort'],
|
|
|
- 'config': app_bundle['config'],
|
|
|
- 'app_device_type__app_version_number_id': app_bundle[
|
|
|
- 'app_device_type__app_version_number_id'],
|
|
|
+ 'model': merged_data['model'],
|
|
|
+ 'type': merged_data['type'],
|
|
|
+ 'icon': merged_data['iconV2'] if merged_data['iconV2'] != "" else merged_data['icon'],
|
|
|
+ 'name': merged_data['name'],
|
|
|
+ 'sort': merged_data['sort'],
|
|
|
+ 'config': merged_data['config'],
|
|
|
+ 'app_device_type__app_version_number_id': merged_data['app_device_type__app_version_number_id'],
|
|
|
})
|
|
|
- else:
|
|
|
- for app_bundle in app_bundle_qs:
|
|
|
+ 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'],
|
|
|
- 'config': app_bundle['config'],
|
|
|
- 'app_device_type__app_version_number_id': app_bundle[
|
|
|
+ 'model': merged_data['model'],
|
|
|
+ 'type': merged_data['type'],
|
|
|
+ 'icon': merged_data['icon'],
|
|
|
+ 'name': merged_data['name'],
|
|
|
+ 'sort': merged_data['sort'],
|
|
|
+ 'config': merged_data['config'],
|
|
|
+ 'app_device_type__app_version_number_id': merged_data[
|
|
|
'app_device_type__app_version_number_id'],
|
|
|
})
|
|
|
dvr_list = [app_bundle for app_bundle in app_bundle_list if app_bundle['model'] == 1]
|