Update code-feature view to use qr std
This commit is contained in:
parent
412485b45b
commit
38ab815ba2
@ -535,12 +535,10 @@ def http405():
|
|||||||
r.status_code = 405
|
r.status_code = 405
|
||||||
return r
|
return r
|
||||||
|
|
||||||
def code_to_roi_key(code):
|
def code_to_qr_std_key(code):
|
||||||
code = str(code)
|
code = str(code)
|
||||||
a = code[0:2] or "_"
|
pref = code[:2]
|
||||||
b = code[0:4] or "_"
|
return f'v5/{pref}/{code}.jpg'
|
||||||
key = f"features_v1/{a}/{b}/{code}.jpg"
|
|
||||||
return key
|
|
||||||
|
|
||||||
class BaseView(View):
|
class BaseView(View):
|
||||||
name = ''
|
name = ''
|
||||||
@ -579,11 +577,8 @@ class BaseView(View):
|
|||||||
return http401()
|
return http401()
|
||||||
return super().dispatch(request, *args, **kwargs)
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
def get_feature_roi(self, code):
|
def get_qr_std(self, code):
|
||||||
return oss_get(code_to_roi_key(code), bucket=settings.FEATURES_BUCKET)
|
return oss_get(code_to_qr_std_key(code), bucket=settings.OSS_QRS_BUCKET)
|
||||||
|
|
||||||
def save_feature_roi(self, code, roi):
|
|
||||||
return oss_put(code_to_roi_key(code), roi, bucket=settings.FEATURES_BUCKET)
|
|
||||||
|
|
||||||
class UserInfoView(BaseView):
|
class UserInfoView(BaseView):
|
||||||
name = 'userinfo'
|
name = 'userinfo'
|
||||||
@ -1545,24 +1540,17 @@ class ScanStatsByProvinceView(BaseView):
|
|||||||
|
|
||||||
return JsonResponse(ret)
|
return JsonResponse(ret)
|
||||||
|
|
||||||
class CodeFeatureRoiView(BaseView):
|
class QrStdView(BaseView):
|
||||||
name = 'code-feature-roi'
|
name = 'qr-std'
|
||||||
auth_check = 'admin'
|
auth_check = 'admin'
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
c = request.GET.get("code")
|
c = request.GET.get("code")
|
||||||
feature = self.get_feature_roi(c)
|
qr = self.get_qr_std(c)
|
||||||
if feature:
|
if qr:
|
||||||
return HttpResponse(feature, content_type="image/jpeg")
|
return HttpResponse(qr, content_type="image/jpeg")
|
||||||
return http404()
|
return http404()
|
||||||
|
|
||||||
def post(self, request):
|
|
||||||
for i, feature in request.FILES.items():
|
|
||||||
name = request.FILES[i].name
|
|
||||||
c = name.split('/')[-1].split('.')[0]
|
|
||||||
self.save_feature_roi(c, feature.read())
|
|
||||||
return JsonResponse({})
|
|
||||||
|
|
||||||
def parse_estor_params(headers):
|
def parse_estor_params(headers):
|
||||||
ret = {}
|
ret = {}
|
||||||
for k, v in headers.items():
|
for k, v in headers.items():
|
||||||
@ -1575,40 +1563,6 @@ def parse_estor_params(headers):
|
|||||||
ret[k] = v
|
ret[k] = v
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
class EstorFeatureRoi(BaseView):
|
|
||||||
name = 'estor-feature-roi'
|
|
||||||
auth_check = None
|
|
||||||
|
|
||||||
def post(self, request):
|
|
||||||
rh = parse_estor_params(request.META)
|
|
||||||
path = rh.get('HTTP_X_ESTOR_PATH')
|
|
||||||
if not path:
|
|
||||||
return http400("X-Estor-Path not set")
|
|
||||||
token = rh.get('HTTP_X_ESTOR_PARAM_EMBLEM_TOKEN')
|
|
||||||
t = AuthToken.objects.filter(token=token).first()
|
|
||||||
if not t or not t.admin:
|
|
||||||
return http401()
|
|
||||||
|
|
||||||
overwrite = rh.get('HTTP_X_ESTOR_PARAM_OVERWRITE') == "yes"
|
|
||||||
fail_if_exists = rh.get('HTTP_X_ESTOR_PARAM_FAIL_IF_EXISTS') == "yes"
|
|
||||||
code = os.path.basename(path).split(".", maxsplit=1)[0]
|
|
||||||
if not code:
|
|
||||||
return http400("code invalid")
|
|
||||||
|
|
||||||
if fail_if_exists or overwrite:
|
|
||||||
exists = oss_has(code_to_roi_key(code))
|
|
||||||
if exists:
|
|
||||||
if fail_if_exists:
|
|
||||||
return http400("code feature roi already existing")
|
|
||||||
if not overwrite:
|
|
||||||
return JsonResponse({
|
|
||||||
"saved": 0,
|
|
||||||
})
|
|
||||||
self.save_feature_roi(code, request.body)
|
|
||||||
return JsonResponse({
|
|
||||||
"saved": 1,
|
|
||||||
})
|
|
||||||
|
|
||||||
class QrStdUploadView(BaseView):
|
class QrStdUploadView(BaseView):
|
||||||
name = 'qr-std-upload'
|
name = 'qr-std-upload'
|
||||||
auth_check = None
|
auth_check = None
|
||||||
@ -1634,9 +1588,8 @@ class QrStdUploadView(BaseView):
|
|||||||
raise Exception("file too large")
|
raise Exception("file too large")
|
||||||
if len(name) < 2:
|
if len(name) < 2:
|
||||||
raise Exception("invalid file name")
|
raise Exception("invalid file name")
|
||||||
pref = name[:2]
|
key = code_to_qr_std_key(name)
|
||||||
key = f"v5/{pref}/{fname}"
|
oss_put(key, body, bucket=settings.OSS_QRS_BUCKET, endpoint=settings.OSS_QRS_ENDPOINT)
|
||||||
r = oss_put(key, body, bucket=settings.OSS_QRS_BUCKET, endpoint=settings.OSS_QRS_ENDPOINT)
|
|
||||||
|
|
||||||
class EstorArchive(BaseView):
|
class EstorArchive(BaseView):
|
||||||
name = 'estor-archive'
|
name = 'estor-archive'
|
||||||
@ -1734,12 +1687,12 @@ class GlobalConfigView(BaseView):
|
|||||||
r.save()
|
r.save()
|
||||||
return JsonResponse({"ok": True, "id": r.pk})
|
return JsonResponse({"ok": True, "id": r.pk})
|
||||||
|
|
||||||
class FeatureStatView(BaseView):
|
class QrStdStatView(BaseView):
|
||||||
name = 'feature-stat'
|
name = 'qr-std-stat'
|
||||||
auth_check = 'admin'
|
auth_check = 'admin'
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
ret = oss_stat(bucket=settings.FEATURES_BUCKET)
|
ret = oss_stat(bucket=settings.OSS_QRS_BUCKET)
|
||||||
return JsonResponse(ret)
|
return JsonResponse(ret)
|
||||||
|
|
||||||
class LogReportView(BaseView):
|
class LogReportView(BaseView):
|
||||||
|
|||||||
@ -66,7 +66,7 @@ export default {
|
|||||||
this.search_result = null;
|
this.search_result = null;
|
||||||
this.search_error = null;
|
this.search_error = null;
|
||||||
try {
|
try {
|
||||||
var url = "/api/v1/code-feature-roi/?token=" + this.$root.token + "&code=" + this.search_code;
|
var url = "/api/v1/qr-std/?token=" + this.$root.token + "&code=" + this.search_code;
|
||||||
var r = await this.$root.api_get(url);
|
var r = await this.$root.api_get(url);
|
||||||
if (r) {
|
if (r) {
|
||||||
this.search_result = url;
|
this.search_result = url;
|
||||||
@ -80,7 +80,7 @@ export default {
|
|||||||
},
|
},
|
||||||
async reload() {
|
async reload() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
var r = await this.$root.api_get("/api/v1/feature-stat/");
|
var r = await this.$root.api_get("/api/v1/qr-std-stat/");
|
||||||
this.objects = r.data.objects;
|
this.objects = r.data.objects;
|
||||||
this.size = r.data.size;
|
this.size = r.data.size;
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user