64 lines
2.2 KiB
Python
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()
|