fix: 修复函数库输入参数校验,搜索函数失败,编辑函数描述为空校验

This commit is contained in:
shaohuzhang1 2024-08-22 11:48:12 +08:00 committed by shaohuzhang1
parent d315c01133
commit bee832994b
3 changed files with 19 additions and 10 deletions

View File

@ -9,12 +9,12 @@
import os
import subprocess
import sys
import time
import uuid
from textwrap import dedent
from diskcache import Cache
from smartdoc.const import BASE_DIR
from smartdoc.const import PROJECT_DIR
python_directory = sys.executable
@ -81,10 +81,11 @@ except Exception as e:
with open(exec_python_file, 'w') as file:
file.write(_code)
os.system(f"chown {self.user}:{self.user} {exec_python_file}")
kwargs = {'cwd': BASE_DIR}
subprocess_result = subprocess.run(
['su', '-c', python_directory + ' ' + exec_python_file, self.user],
text=True,
capture_output=True)
capture_output=True, **kwargs)
os.remove(exec_python_file)
return subprocess_result

View File

@ -9,7 +9,6 @@
import uuid
from django.db import models
from django.db.models import QuerySet
from common.db.sql_execute import select_one
from common.mixins.app_model_mixin import AppModelMixin

View File

@ -57,11 +57,14 @@ class DebugInstance(serializers.Serializer):
class EditFunctionLib(serializers.Serializer):
name = serializers.CharField(required=False, error_messages=ErrMessage.char("函数名称"))
name = serializers.CharField(required=False, allow_null=True, allow_blank=True,
error_messages=ErrMessage.char("函数名称"))
desc = serializers.CharField(required=False, error_messages=ErrMessage.char("函数描述"))
desc = serializers.CharField(required=False, allow_null=True, allow_blank=True,
error_messages=ErrMessage.char("函数描述"))
code = serializers.CharField(required=False, error_messages=ErrMessage.char("函数内容"))
code = serializers.CharField(required=False, allow_null=True, allow_blank=True,
error_messages=ErrMessage.char("函数内容"))
input_field_list = FunctionLibInputField(required=False, many=True)
@ -90,9 +93,9 @@ class FunctionLibSerializer(serializers.Serializer):
def get_query_set(self):
query_set = QuerySet(FunctionLib).filter(user_id=self.data.get('user_id'))
if self.data.get('name') is not None:
query_set = query_set.filter(name=self.data.get('name'))
query_set = query_set.filter(name__contains=self.data.get('name'))
if self.data.get('desc') is not None:
query_set = query_set.filter(name=self.data.get('desc'))
query_set = query_set.filter(desc__contains=self.data.get('desc'))
query_set = query_set.order_by("-create_time")
return query_set
@ -158,9 +161,15 @@ class FunctionLibSerializer(serializers.Serializer):
if _type == 'float':
return float(value)
if _type == 'dict':
return json.loads(value)
v = json.loads(value)
if isinstance(v, dict):
return v
raise Exception("类型错误")
if _type == 'array':
return json.loads(value)
v = json.loads(value)
if isinstance(v, list):
return v
raise Exception("类型错误")
return value
except Exception as e:
raise AppApiException(500, f'字段:{name}类型:{_type}值:{value}类型转换错误')