"""Shared compact serializers for document relations.""" from rest_framework import serializers class DepartmentBriefSerializer(serializers.Serializer): """Краткий сериализатор отдела.""" id = serializers.IntegerField(read_only=True) name = serializers.CharField(read_only=True) class FolderSerializer(serializers.Serializer): """Сериализатор для папки filer.Folder.""" id = serializers.IntegerField(read_only=True) name = serializers.CharField() parent_id = serializers.IntegerField( source="parent.id", read_only=True, allow_null=True ) path = serializers.SerializerMethodField() document_count = serializers.IntegerField(read_only=True, default=0) def get_path(self, obj) -> str: """Возвращает полный путь папки.""" path_parts = [] current = obj while current: path_parts.insert(0, current.name) current = current.parent return " / ".join(path_parts) class FolderBriefSerializer(serializers.Serializer): """Краткий сериализатор папки для вложенного отображения.""" id = serializers.IntegerField(read_only=True) name = serializers.CharField(read_only=True)