63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from rest_framework import serializers
|
|
|
|
from .models import (Document, DocumentVersion, DocumentPage, DocumentType,
|
|
RecentDocument)
|
|
from .settings import setting_language, setting_language_choices
|
|
|
|
|
|
class DocumentPageSerializer(serializers.HyperlinkedModelSerializer):
|
|
class Meta:
|
|
model = DocumentPage
|
|
|
|
|
|
class DocumentVersionSerializer(serializers.HyperlinkedModelSerializer):
|
|
pages = DocumentPageSerializer(many=True, required=False, read_only=True)
|
|
|
|
class Meta:
|
|
model = DocumentVersion
|
|
read_only_fields = ('document',)
|
|
|
|
|
|
class DocumentImageSerializer(serializers.Serializer):
|
|
status = serializers.CharField()
|
|
data = serializers.CharField()
|
|
|
|
|
|
class DocumentTypeSerializer(serializers.ModelSerializer):
|
|
documents = serializers.SerializerMethodField('get_documents_count')
|
|
|
|
class Meta:
|
|
model = DocumentType
|
|
fields = ('id', 'name', 'documents')
|
|
|
|
def get_documents_count(self, obj):
|
|
return obj.documents.count()
|
|
|
|
|
|
class DocumentSerializer(serializers.ModelSerializer):
|
|
versions = DocumentVersionSerializer(many=True, read_only=True)
|
|
# TODO: Deprecate, move this as an entry point of DocumentVersion's pages
|
|
image = serializers.HyperlinkedIdentityField(view_name='document-image')
|
|
new_version = serializers.HyperlinkedIdentityField(view_name='document-new-version')
|
|
document_type = DocumentTypeSerializer()
|
|
|
|
class Meta:
|
|
fields = ('id', 'label', 'image', 'new_version', 'uuid', 'document_type', 'description', 'date_added', 'versions')
|
|
model = Document
|
|
|
|
|
|
class NewDocumentSerializer(serializers.Serializer):
|
|
description = serializers.CharField(required=False)
|
|
document_type = serializers.IntegerField()
|
|
file = serializers.FileField()
|
|
label = serializers.CharField(required=False)
|
|
language = serializers.ChoiceField(blank_display_value=None, choices=setting_language_choices.value, default=setting_language.value, required=False)
|
|
|
|
|
|
class RecentDocumentSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
fields = ('document', 'datetime_accessed')
|
|
model = RecentDocument
|