|
@@ -1,12 +1,14 @@
|
|
|
#!/usr/bin/env python3
|
|
|
# -*- coding: utf-8 -*-
|
|
|
+import operator
|
|
|
import time
|
|
|
|
|
|
import oss2
|
|
|
+from django.db.models import F
|
|
|
from django.views import View
|
|
|
|
|
|
from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
|
|
|
-from Model.models import DeviceTypeModel
|
|
|
+from Model.models import DeviceTypeModel, AppBundle
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Service.CommonService import CommonService
|
|
@@ -39,7 +41,7 @@ class DeviceTypeView(View):
|
|
|
if operation == 'add':
|
|
|
return self.do_admin_add(token.userID, request_dict, response)
|
|
|
elif operation == 'query':
|
|
|
- return self.do_query(request_dict, response)
|
|
|
+ return self.do_query(response)
|
|
|
elif operation == 'delete':
|
|
|
return self.do_admin_delete(token.userID, request_dict, response)
|
|
|
elif operation == 'getUploadUrl':
|
|
@@ -87,22 +89,37 @@ class DeviceTypeView(View):
|
|
|
else:
|
|
|
return response.json(444)
|
|
|
|
|
|
- def do_query(self, request_dict, response):
|
|
|
- device_type_qs = DeviceTypeModel.objects.filter().values('id', 'type', 'ptz_type', 'model', 'icon', 'name')
|
|
|
- res = {}
|
|
|
- data = []
|
|
|
- res['data'] = data
|
|
|
- if device_type_qs.exists():
|
|
|
- for device_type in device_type_qs:
|
|
|
- auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
|
|
|
- bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
|
|
|
-
|
|
|
- icon = device_type['icon']
|
|
|
- url = 'device_type/' + icon
|
|
|
- device_type['icon'] = bucket.sign_url('GET', url, 3600)
|
|
|
- data.append(device_type)
|
|
|
-
|
|
|
- return response.json(0, res)
|
|
|
+ def do_query(self, response):
|
|
|
+ try:
|
|
|
+ app_bundle_id = 'com.ansjer.zccloud'
|
|
|
+ app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id).values_list(
|
|
|
+ 'app_device_type__app_version_number_id').distinct().order_by('app_device_type__app_version_number_id')
|
|
|
+ version_number_list = [app_bundle for app_bundle in app_bundle_qs]
|
|
|
+ versions_filtered = version_number_list[:-1]
|
|
|
+ app_bundle_list = []
|
|
|
+ for version in versions_filtered:
|
|
|
+ version = ''.join(map(str, version))
|
|
|
+ app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
|
|
|
+ app_device_type__devicenamelanguage__lang=response.lang,
|
|
|
+ app_device_type__app_version_number_id=version). \
|
|
|
+ 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')
|
|
|
+ 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_bundle_list = sorted(app_bundle_list, key=operator.itemgetter('sort'))
|
|
|
+ return response.json(0, app_bundle_list)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
|
|
def do_admin_delete(self, userID, request_dict, response):
|
|
|
own_perm = ModelService.check_perm(userID, 10)
|