feat: implement web knowledge synchronization with ForkManage and related handlers
This commit is contained in:
parent
ee37d7c320
commit
0df7c7247d
@ -7,8 +7,9 @@ from django.utils.translation import gettext_lazy as _
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from common.constants.permission_constants import Group
|
from common.constants.permission_constants import Group
|
||||||
from knowledge.models import KnowledgeFolder
|
|
||||||
from folders.api.folder import FolderCreateRequest
|
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.models import ToolFolder
|
||||||
from tools.serializers.tool_folder import ToolFolderTreeSerializer
|
from tools.serializers.tool_folder import ToolFolderTreeSerializer
|
||||||
|
|
||||||
@ -25,6 +26,18 @@ def get_folder_type(source):
|
|||||||
return None
|
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层
|
FOLDER_DEPTH = 2 # Folder 不能超过3层
|
||||||
|
|
||||||
|
|
||||||
@ -161,5 +174,6 @@ class FolderTreeSerializer(serializers.Serializer):
|
|||||||
Q(name__contains=name)).get_cached_trees()
|
Q(name__contains=name)).get_cached_trees()
|
||||||
else:
|
else:
|
||||||
nodes = Folder.objects.filter(Q(workspace_id=self.data.get('workspace_id'))).get_cached_trees()
|
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 # 这是可序列化的字典
|
return serializer.data # 这是可序列化的字典
|
||||||
|
|||||||
14
apps/knowledge/serializers/knowledge_folder.py
Normal file
14
apps/knowledge/serializers/knowledge_folder.py
Normal file
@ -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
|
||||||
@ -14,7 +14,7 @@ import yaml
|
|||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
PROJECT_DIR = os.path.dirname(BASE_DIR)
|
PROJECT_DIR = os.path.dirname(BASE_DIR)
|
||||||
logger = logging.getLogger('smartdoc.conf')
|
logger = logging.getLogger('maxkb.conf')
|
||||||
|
|
||||||
|
|
||||||
class Config(dict):
|
class Config(dict):
|
||||||
|
|||||||
@ -9,7 +9,7 @@ from maxkb import settings
|
|||||||
from .heartbeat import *
|
from .heartbeat import *
|
||||||
|
|
||||||
# set the default Django settings module for the 'celery' program.
|
# 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')
|
app = Celery('MaxKB')
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user