Pārlūkot izejas kodu

添加多语言设备图标

guanhailong 2 gadi atpakaļ
vecāks
revīzija
5969208797
1 mainītis faili ar 48 papildinājumiem un 74 dzēšanām
  1. 48 74
      AdminController/DeviceManagementController.py

+ 48 - 74
AdminController/DeviceManagementController.py

@@ -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 = {