|
@@ -2,7 +2,9 @@
|
|
# -*- coding: utf-8 -*-
|
|
# -*- coding: utf-8 -*-
|
|
import json
|
|
import json
|
|
import time
|
|
import time
|
|
|
|
+from bisect import bisect_left
|
|
|
|
|
|
|
|
+import numpy as np
|
|
import oss2
|
|
import oss2
|
|
from django.db import transaction
|
|
from django.db import transaction
|
|
from django.db.models import Q, F
|
|
from django.db.models import Q, F
|
|
@@ -455,12 +457,22 @@ class DeviceManagement(View):
|
|
|
|
|
|
if not all([lang, app_bundle_id, version_number]):
|
|
if not all([lang, app_bundle_id, version_number]):
|
|
return response.json(444)
|
|
return response.json(444)
|
|
- version_number_qs = AppVersionNumber.objects.filter(version_number=version_number).values('id')
|
|
|
|
|
|
+ version_number_qs = AppVersionNumber.objects.values('version_number')
|
|
|
|
+ test_list = [item[key] for item in version_number_qs for key in item]
|
|
|
|
+ if (version_number > test_list[-1] or version_number < test_list[0]):
|
|
|
|
+ return False
|
|
|
|
+ pos = bisect_left(test_list, version_number)
|
|
|
|
+ if pos == 0:
|
|
|
|
+ return test_list[0]
|
|
|
|
+ if pos == len(test_list):
|
|
|
|
+ return test_list[-1]
|
|
|
|
+ before = test_list[pos - 1]
|
|
|
|
+ version_number_qs = AppVersionNumber.objects.filter(version_number=before).values('id')
|
|
try:
|
|
try:
|
|
version_number_id = version_number_qs[0]['id']
|
|
version_number_id = version_number_qs[0]['id']
|
|
app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
|
|
app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
|
|
app_device_type__devicenamelanguage__lang=lang,
|
|
app_device_type__devicenamelanguage__lang=lang,
|
|
- app_device_type__app_version_number_id__lte=version_number_id). \
|
|
|
|
|
|
+ app_device_type__app_version_number_id=version_number_id). \
|
|
annotate(
|
|
annotate(
|
|
model=F('app_device_type__model'), type=F('app_device_type__type'), icon=F('app_device_type__icon'),
|
|
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'),
|
|
name=F('app_device_type__devicenamelanguage__name'),
|