Files
OnlineJudge/utils/views.py
yuetsh 3a9ab83ba5 style: ruff format 全仓库
行宽 180 下把历史遗留的折行表达式合并,无语义改动。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 04:45:26 -06:00

58 lines
2.2 KiB
Python

import logging
import os
from django.conf import settings
from account.serializers import FileUploadForm, ImageUploadForm
from utils.api import CSRFExemptAPIView
from utils.shortcuts import rand_str
logger = logging.getLogger(__name__)
class SimditorImageUploadAPIView(CSRFExemptAPIView):
request_parsers = ()
def post(self, request):
form = ImageUploadForm(request.POST, request.FILES)
if form.is_valid():
img = form.cleaned_data["image"]
else:
return self.response({"success": False, "msg": "Upload failed", "file_path": ""})
suffix = os.path.splitext(img.name)[-1].lower()
if suffix not in [".gif", ".jpg", ".jpeg", ".bmp", ".png"]:
return self.response({"success": False, "msg": "Unsupported file format", "file_path": ""})
img_name = rand_str(10) + suffix
try:
with open(os.path.join(settings.UPLOAD_DIR, img_name), "wb") as imgFile:
for chunk in img:
imgFile.write(chunk)
except IOError as e:
logger.error(e)
return self.response({"success": False, "msg": "Upload Error", "file_path": ""})
return self.response({"success": True, "msg": "Success", "file_path": f"{settings.UPLOAD_PREFIX}/{img_name}"})
# DEPRECATED: 前端未调用 (2026-05-26)
class SimditorFileUploadAPIView(CSRFExemptAPIView):
request_parsers = ()
def post(self, request):
form = FileUploadForm(request.POST, request.FILES)
if form.is_valid():
file = form.cleaned_data["file"]
else:
return self.response({"success": False, "msg": "Upload failed"})
suffix = os.path.splitext(file.name)[-1].lower()
file_name = rand_str(10) + suffix
try:
with open(os.path.join(settings.UPLOAD_DIR, file_name), "wb") as f:
for chunk in file:
f.write(chunk)
except IOError as e:
logger.error(e)
return self.response({"success": False, "msg": "Upload Error"})
return self.response({"success": True, "msg": "Success", "file_path": f"{settings.UPLOAD_PREFIX}/{file_name}", "file_name": file.name})