MCPcopy Create free account
hub / github.com/1Panel-dev/MaxKB / Import

Class Import

apps/tools/serializers/tool.py:904–1144  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

902 os.remove(file_name)
903
904 class Import(serializers.Serializer):
905 file = UploadedFileField(required=True, label=_("file"))
906 user_id = serializers.UUIDField(required=True, label=_("User ID"))
907 workspace_id = serializers.CharField(required=True, label=_("workspace id"))
908 folder_id = serializers.CharField(required=False, allow_null=True, label=_("folder id"))
909
910 @staticmethod
911 def to_tool_workflow(work_flow, update_tool_map):
912 for node in work_flow.get("nodes", []):
913 hand_node(node, update_tool_map)
914 if node.get("type") == "loop-node":
915 for n in node.get("properties", {}).get("node_data", {}).get("loop_body", {}).get("nodes", []):
916 hand_node(n, update_tool_map)
917 return work_flow
918
919 @staticmethod
920 def to_tool(tool, workspace_id, user_id, folder_id):
921 # 如果是技能类型的工具,需要将code保存为文件
922 code = tool.get("code")
923 if tool.get("tool_type") == ToolType.SKILL:
924 skill_file_id = uuid.uuid7()
925 skill_file = File(
926 id=skill_file_id,
927 file_name=f"{tool.get('name')}.zip",
928 source_type=FileSourceType.TOOL,
929 source_id=tool.get("id"),
930 meta={},
931 )
932 skill_file.save(base64.b64decode(code))
933 tool["code"] = skill_file_id
934 return Tool(
935 id=tool.get("id"),
936 user_id=user_id,
937 name=tool.get("name"),
938 code=tool.get("code"),
939 template_id=tool.get("template_id"),
940 input_field_list=tool.get("input_field_list"),
941 init_field_list=tool.get("init_field_list"),
942 is_active=False
943 if (len((tool.get("init_field_list") or [])) > 0 or tool.get("tool_type") == ToolType.WORKFLOW)
944 else tool.get("is_active"),
945 tool_type=tool.get("tool_type", "CUSTOM") or "CUSTOM",
946 scope=ToolScope.SHARED if workspace_id == "None" else ToolScope.WORKSPACE,
947 folder_id=folder_id if folder_id else "default" if workspace_id == "None" else workspace_id,
948 workspace_id=workspace_id,
949 )
950
951 def import_workflow_tools(self, tool, workspace_id, user_id, folder_id, new_child_policy):
952 """
953
954 @param tool: 工具对象
955 @param workspace_id: 工作空间id
956 @param user_id: 用户id
957 @param folder_id: 文件夹id
958 @param new_child_policy: 子工具创建策略
959 0: 不创建
960 1: 对比创建: 如果存在就不创建 不存在则创建
961 2: 全部创建

Callers

nothing calls this directly

Calls 1

UploadedFileFieldClass · 0.70

Tested by

no test coverage detected