63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from rest_framework import serializers
|
|
|
|
from .models import DocumentMetadata, MetadataType, DocumentTypeMetadataType
|
|
|
|
|
|
class MetadataTypeSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
fields = ('id', 'name', 'label', 'default', 'lookup')
|
|
model = MetadataType
|
|
|
|
|
|
class DocumentMetadataSerializer(serializers.ModelSerializer):
|
|
document = serializers.PrimaryKeyRelatedField(read_only=True)
|
|
|
|
class Meta:
|
|
fields = ('document', 'id', 'metadata_type', 'value',)
|
|
model = DocumentMetadata
|
|
read_only_fields = ('metadata_type',)
|
|
|
|
|
|
class DocumentTypeMetadataTypeSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
fields = ('metadata_type', )
|
|
model = DocumentTypeMetadataType
|
|
|
|
|
|
class DocumentNewMetadataSerializer(serializers.Serializer):
|
|
metadata_type_pk = serializers.IntegerField(
|
|
help_text=_('Primary key of the metadata type to be added.'),
|
|
write_only=True
|
|
)
|
|
|
|
metadata_type = MetadataTypeSerializer(read_only=True)
|
|
|
|
pk = serializers.IntegerField(
|
|
help_text=_('Primary key of the document metadata type.'),
|
|
read_only=True
|
|
)
|
|
|
|
value = serializers.CharField(
|
|
max_length=255,
|
|
help_text=_('Value of the corresponding metadata type instance.')
|
|
)
|
|
|
|
def create(self, validated_data):
|
|
metadata_type = MetadataType.objects.get(
|
|
pk=validated_data['metadata_type_pk']
|
|
)
|
|
instance = self.document.metadata.create(
|
|
metadata_type=metadata_type, value=validated_data['value']
|
|
)
|
|
return instance
|
|
|
|
|
|
class DocumentTypeNewMetadataTypeSerializer(serializers.Serializer):
|
|
metadata_type_pk = serializers.IntegerField(
|
|
help_text=_('Primary key of the metadata type to be added.')
|
|
)
|