Source code for ox.apps.files.serializers

from django.utils.translation import pgettext as _p
from rest_framework import serializers

from caps.serializers import OwnedSerializer
from ox.core.serializers import RelatedField

from . import models
from .conf import ox_files_settings


__all__ = ("FolderSerializer", "FileSerializer")


[docs] class FolderSerializer(OwnedSerializer): parent = RelatedField(required=False, allow_null=True, queryset=models.Folder.objects.all()) class Meta: model = models.Folder exclude = ["tree_id"] read_only_fields = ["created", "updated", "level", "sync_path", "path"]
[docs] class FileSerializer(OwnedSerializer): folder = RelatedField(required=False, allow_null=True, queryset=models.Folder.objects.all()) class Meta: model = models.File fields = "__all__" read_only_fields = ["mime_type", "preview", "preview_size", "file_size", "created", "updated"]
[docs] def validate_file(self, value): """Check file size limitation""" if value: max_size = ox_files_settings.FILE_SIZE_LIMIT if value.size > max_size: str_size = int(max_size / 1024 / 1024) raise serializers.ValidationError(_p("The file size exceeds {size}", {"size": str_size})) return value