Files

64 lines
2.2 KiB
Python

import uuid
from rest_framework import serializers
from gvsds.common.Serializer import PascalCaseSerializer, PascalCaseModelSerializer
from .models import CommunityDocument, CommunitySeries
class CommunityDocumentSerializer(PascalCaseModelSerializer):
DocUUID = serializers.SerializerMethodField()
DocSerieUUID = serializers.SerializerMethodField()
class Meta:
model = CommunityDocument
fields = ['DocUUID', 'DocSerieUUID', 'DocTitle', 'DocContent', 'DocFormat', 'DocCreateTime']
def get_DocUUID(self, obj):
raw = obj.DocUUID
if isinstance(raw, bytes) and len(raw) == 16:
return str(uuid.UUID(bytes=raw))
return str(raw) if raw else None
def get_DocSerieUUID(self, obj):
# DocSerieUUID 现为可空 UUIDField(非 FK),直接转字符串
raw = obj.DocSerieUUID
if raw is None:
return None
if isinstance(raw, bytes) and len(raw) == 16:
return str(uuid.UUID(bytes=raw))
return str(raw) if raw else None
class CommunitySeriesSerializer(PascalCaseModelSerializer):
DocSerieUUID = serializers.SerializerMethodField()
class Meta:
model = CommunitySeries
fields = ['DocSerieUUID', 'DocSerieName', 'DocSerieCreateTime']
def get_DocSerieUUID(self, obj):
raw = obj.DocSerieUUID
if isinstance(raw, bytes) and len(raw) == 16:
return str(uuid.UUID(bytes=raw))
return str(raw) if raw else None
class DocAddSerializer(PascalCaseSerializer):
DocTitle = serializers.CharField(max_length=256)
DocSerieUUID = serializers.CharField(required=False)
DocFormat = serializers.ChoiceField(choices=('markdown', 'html'), required=False)
class DocModifySerializer(PascalCaseSerializer):
DocUUID = serializers.CharField()
DocTitle = serializers.CharField(max_length=256, required=False)
DocContent = serializers.CharField(required=False)
DocFormat = serializers.ChoiceField(choices=('markdown', 'html'), required=False)
class SerieAddSerializer(PascalCaseSerializer):
DocSerieName = serializers.CharField(max_length=256)
class SerieDeleteSerializer(PascalCaseSerializer):
DocSerieUUID = serializers.CharField()