diff --git a/apps/folders/serializers/folder.py b/apps/folders/serializers/folder.py index 904bbb362..3acb42301 100644 --- a/apps/folders/serializers/folder.py +++ b/apps/folders/serializers/folder.py @@ -7,8 +7,9 @@ from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.constants.permission_constants import Group -from knowledge.models import KnowledgeFolder from folders.api.folder import FolderCreateRequest +from knowledge.models import KnowledgeFolder +from knowledge.serializers.knowledge_folder import KnowledgeFolderTreeSerializer from tools.models import ToolFolder from tools.serializers.tool_folder import ToolFolderTreeSerializer @@ -25,6 +26,18 @@ def get_folder_type(source): return None +def get_folder_tree_serializer(source): + if source == Group.TOOL.name: + return ToolFolderTreeSerializer + elif source == Group.APPLICATION.name: + # todo app folder + return None + elif source == Group.KNOWLEDGE.name: + return KnowledgeFolderTreeSerializer + else: + return None + + FOLDER_DEPTH = 2 # Folder 不能超过3层 @@ -161,5 +174,6 @@ class FolderTreeSerializer(serializers.Serializer): Q(name__contains=name)).get_cached_trees() else: nodes = Folder.objects.filter(Q(workspace_id=self.data.get('workspace_id'))).get_cached_trees() - serializer = ToolFolderTreeSerializer(nodes, many=True) + TreeSerializer = get_folder_tree_serializer(self.data.get('source')) + serializer = TreeSerializer(nodes, many=True) return serializer.data # 这是可序列化的字典 diff --git a/apps/knowledge/serializers/knowledge_folder.py b/apps/knowledge/serializers/knowledge_folder.py new file mode 100644 index 000000000..03e279f8d --- /dev/null +++ b/apps/knowledge/serializers/knowledge_folder.py @@ -0,0 +1,14 @@ +from rest_framework import serializers + +from knowledge.models import KnowledgeFolder + + +class KnowledgeFolderTreeSerializer(serializers.ModelSerializer): + children = serializers.SerializerMethodField() + + class Meta: + model = KnowledgeFolder + fields = ['id', 'name', 'user_id', 'workspace_id', 'parent_id', 'children'] + + def get_children(self, obj): + return KnowledgeFolderTreeSerializer(obj.get_children(), many=True).data diff --git a/apps/maxkb/conf.py b/apps/maxkb/conf.py index 5b088967e..5c34c7567 100644 --- a/apps/maxkb/conf.py +++ b/apps/maxkb/conf.py @@ -14,7 +14,7 @@ import yaml BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) PROJECT_DIR = os.path.dirname(BASE_DIR) -logger = logging.getLogger('smartdoc.conf') +logger = logging.getLogger('maxkb.conf') class Config(dict): diff --git a/apps/ops/celery/__init__.py b/apps/ops/celery/__init__.py index 6f1c9af8c..53dac8cc1 100644 --- a/apps/ops/celery/__init__.py +++ b/apps/ops/celery/__init__.py @@ -9,7 +9,7 @@ from maxkb import settings from .heartbeat import * # set the default Django settings module for the 'celery' program. -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'smartdoc.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'maxkb.settings') app = Celery('MaxKB')