2025-09-04 05:47:42 +00:00
|
|
|
from rest_framework import serializers
|
|
|
|
|
from .models import mindMap, Node
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DocNodeSerializer(serializers.Serializer):
|
|
|
|
|
id = serializers.CharField()
|
|
|
|
|
isRoot = serializers.BooleanField()
|
|
|
|
|
parentId = serializers.CharField(allow_null=True)
|
|
|
|
|
childrenCount = serializers.IntegerField()
|
|
|
|
|
depth = serializers.IntegerField()
|
|
|
|
|
title = serializers.CharField(allow_blank=True, required=False)
|
|
|
|
|
des = serializers.CharField(allow_blank=True, required=False)
|
2025-10-10 05:36:34 +00:00
|
|
|
htmlContent = serializers.CharField(allow_blank=True, required=False)
|
2025-09-04 05:47:42 +00:00
|
|
|
createDate = serializers.DateTimeField()
|
|
|
|
|
updateDate = serializers.DateTimeField()
|
|
|
|
|
delete = serializers.BooleanField()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DocMindmapSerializer(serializers.Serializer):
|
|
|
|
|
id = serializers.CharField()
|
|
|
|
|
title = serializers.CharField()
|
|
|
|
|
nodes = DocNodeSerializer(many=True)
|
|
|
|
|
createDate = serializers.DateTimeField()
|
|
|
|
|
updateDate = serializers.DateTimeField()
|
|
|
|
|
delete = serializers.BooleanField()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def map_node_to_doc(node: Node) -> dict:
|
|
|
|
|
return {
|
|
|
|
|
'id': str(node.id),
|
|
|
|
|
'isRoot': bool(node.is_root),
|
|
|
|
|
'parentId': node.parent_id,
|
|
|
|
|
'childrenCount': int(node.children_count or 0),
|
|
|
|
|
'depth': int(node.depth or 0),
|
|
|
|
|
'title': node.title or '',
|
|
|
|
|
'des': (node.desc or ''),
|
2025-10-10 05:36:34 +00:00
|
|
|
'htmlContent': node.html_content or '',
|
2025-10-19 17:12:54 +00:00
|
|
|
'markdown': node.markdown_content or '',
|
2025-09-04 05:47:42 +00:00
|
|
|
'createDate': node.created_at,
|
|
|
|
|
'updateDate': node.updated_at,
|
|
|
|
|
'delete': bool(node.deleted),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def map_mindmap_to_doc(m: mindMap, nodes: list[Node]) -> dict:
|
|
|
|
|
return {
|
|
|
|
|
'id': str(m.id),
|
|
|
|
|
'title': m.file_name or '思维导图',
|
|
|
|
|
'nodes': [map_node_to_doc(n) for n in nodes],
|
|
|
|
|
'createDate': m.created_at,
|
|
|
|
|
'updateDate': m.updated_at,
|
|
|
|
|
'delete': bool(m.deleted),
|
|
|
|
|
}
|