Files
mayan-edms/mayan/apps/sources/serializers.py

63 lines
1.9 KiB
Python

from __future__ import unicode_literals
import logging
from rest_framework import serializers
from rest_framework.reverse import reverse
from .models import StagingFolderSource, WebFormSource
logger = logging.getLogger(__name__)
class StagingFolderFileSerializer(serializers.Serializer):
filename = serializers.CharField(max_length=255)
image_url = serializers.SerializerMethodField()
url = serializers.SerializerMethodField()
def get_image_url(self, obj):
return reverse(
'stagingfolderfile-image-view',
args=(obj.staging_folder.pk, obj.encoded_filename,),
request=self.context.get('request')
)
def get_url(self, obj):
return reverse(
'stagingfolderfile-detail',
args=(obj.staging_folder.pk, obj.encoded_filename,),
request=self.context.get('request')
)
class StagingFolderSerializer(serializers.HyperlinkedModelSerializer):
files = serializers.SerializerMethodField()
class Meta:
fields = ('files',)
model = StagingFolderSource
def get_files(self, obj):
try:
return [
StagingFolderFileSerializer(entry, context=self.context).data for entry in obj.get_files()
]
except Exception as exception:
logger.error('unhandled exception: %s', exception)
return []
class WebFormSourceSerializer(serializers.Serializer):
class Meta:
model = WebFormSource
class NewDocumentSerializer(serializers.Serializer):
source = serializers.IntegerField()
document_type = serializers.IntegerField(required=False)
description = serializers.CharField(required=False)
expand = serializers.BooleanField(default=False)
file = serializers.FileField()
filename = serializers.CharField(required=False)
use_file_name = serializers.BooleanField(default=False)