api: Add qr-std-upload api
This commit is contained in:
parent
4d211b8305
commit
3133e81650
@ -161,11 +161,14 @@ if ENV == "prod":
|
|||||||
FEATURES_BUCKET = "emblem-features-prod"
|
FEATURES_BUCKET = "emblem-features-prod"
|
||||||
ARCHIVE_BUCKET = "emblem-archive-prod"
|
ARCHIVE_BUCKET = "emblem-archive-prod"
|
||||||
FRAMES_BUCKET = "emblem-frames-prod"
|
FRAMES_BUCKET = "emblem-frames-prod"
|
||||||
|
OSS_QRS_BUCKET = "emblem-qrs"
|
||||||
else:
|
else:
|
||||||
OSS = aliyun_dev_key
|
OSS = aliyun_dev_key
|
||||||
FEATURES_BUCKET = "emblem-features-dev-1"
|
FEATURES_BUCKET = "emblem-features-dev-1"
|
||||||
ARCHIVE_BUCKET = "emblem-oss-archive-dev-1"
|
ARCHIVE_BUCKET = "emblem-oss-archive-dev-1"
|
||||||
FRAMES_BUCKET = "emblem-frames-dev"
|
FRAMES_BUCKET = "emblem-frames-dev"
|
||||||
|
OSS_QRS_BUCKET = ARCHIVE_BUCKET
|
||||||
|
|
||||||
|
|
||||||
IPINFO_TOKEN = '537dea9ec5c99a'
|
IPINFO_TOKEN = '537dea9ec5c99a'
|
||||||
|
|
||||||
|
|||||||
@ -1609,6 +1609,35 @@ class EstorFeatureRoi(BaseView):
|
|||||||
"saved": 1,
|
"saved": 1,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
class QrStdUploadView(BaseView):
|
||||||
|
name = 'qr-std-upload'
|
||||||
|
auth_check = None
|
||||||
|
|
||||||
|
def post(self, request):
|
||||||
|
files = request.FILES
|
||||||
|
for f in files.values():
|
||||||
|
try:
|
||||||
|
QrStdUploadView.save_qr(f.name, f.read())
|
||||||
|
except Exception as e:
|
||||||
|
return http400(f'{f.name}: {str(e)}')
|
||||||
|
return JsonResponse({
|
||||||
|
'ok': True,
|
||||||
|
'nfiles': len(files),
|
||||||
|
})
|
||||||
|
|
||||||
|
def save_qr(fname, body):
|
||||||
|
basename = os.path.basename(fname)
|
||||||
|
name, ext = os.path.splitext(basename)
|
||||||
|
if ext != ".jpg":
|
||||||
|
raise Exception("invalid file extension")
|
||||||
|
if len(body) > 1024 * 1024 * 10:
|
||||||
|
raise Exception("file too large")
|
||||||
|
if len(name) < 2:
|
||||||
|
raise Exception("invalid file name")
|
||||||
|
pref = name[:2]
|
||||||
|
key = f"v5/{pref}/{fname}"
|
||||||
|
r = oss_put(key, body, bucket=settings.OSS_QRS_BUCKET)
|
||||||
|
|
||||||
class EstorArchive(BaseView):
|
class EstorArchive(BaseView):
|
||||||
name = 'estor-archive'
|
name = 'estor-archive'
|
||||||
auth_check = None
|
auth_check = None
|
||||||
|
|||||||
8
api/tests/test_qr_std.py
Normal file
8
api/tests/test_qr_std.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
from django.test import TestCase
|
||||||
|
from products.views import QrStdUploadView
|
||||||
|
|
||||||
|
class QrStdTestCase(TestCase):
|
||||||
|
def test_qr_std_upload(self):
|
||||||
|
fname = '99999999.jpg'
|
||||||
|
body = b'1234'
|
||||||
|
r = QrStdUploadView.save_qr(fname, body)
|
||||||
Loading…
x
Reference in New Issue
Block a user