from rest_framework import serializers from .models import Collection class CollectionSerializer(serializers.ModelSerializer[Collection]): cover_url = serializers.SerializerMethodField() document_count = serializers.IntegerField(read_only=True) class Meta: model = Collection fields = [ "id", "name", "description", "cover_url", "document_count", "is_public", "created_at", "updated_at", ] read_only_fields = ["id", "document_count", "created_at", "updated_at"] def get_cover_url(self, obj: Collection) -> str | None: return obj.cover_url class CollectionDetailSerializer(CollectionSerializer): documents = serializers.PrimaryKeyRelatedField(many=True, read_only=True) class Meta(CollectionSerializer.Meta): fields = CollectionSerializer.Meta.fields + ["documents", "owner"] class CollectionDocumentActionSerializer(serializers.Serializer): document_ids = serializers.ListField( child=serializers.IntegerField(), allow_empty=False, )