MindMap/backend/mindmap/serializers.py

51 lines
1.6 KiB
Python
Raw Normal View History

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)
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 ''),
'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),
}