fix(diagnosis-backend): sbs task result api add content_encoding choose field, text or base64

This commit is contained in:
wb-msm261421 2024-01-04 17:36:19 +08:00 committed by SunnyQjm
parent 3d915c3c7e
commit 29ddb40c01
1 changed files with 18 additions and 0 deletions

View File

@ -1,3 +1,5 @@
import enum
import base64
import requests
import tempfile
import os
@ -22,6 +24,11 @@ from service_scripts.base import (
)
class ContextType(enum.Enum):
TEXT = 'text'
BASE64 = 'base64'
class TaskAPIView(
CommonModelViewSet,
mixins.ListModelMixin,
@ -159,12 +166,23 @@ class TaskAPIView(
obj_list = request.FILES.getlist("files")
task_id = request.POST.get("task_id", None)
brief = request.POST.get("brief", False)
content_encoding = request.POST.get("content_encoding", "text")
results = request.POST.getlist("results", None)
try:
content_encoding = ContextType(content_encoding)
except ValueError:
return ErrorResponse("content_encoding field can only `text` or `base64`!")
if task_id is None or results is None:
return ErrorResponse(
f"Missing params, required both <task_id> and <result>"
)
if content_encoding.value == 'base64':
results = [
base64.b64decode(result).decode() for result in results
]
# 1. Get task
instance = JobModel.objects.get(task_id=task_id)
if instance is None: