39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
"""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)
|