class WritableCommentSerializer(serializers.ModelSerializer):
    document = DocumentSerializer(read_only=True)
    document_comments_url = serializers.SerializerMethodField()
    url = serializers.SerializerMethodField()
    user = UserSerializer(read_only=True)

    class Meta:
        fields = ('comment', 'document', 'document_comments_url', 'id',
                  'submit_date', 'url', 'user')
        model = Comment
        read_only_fields = ('document', )

    def create(self, validated_data):
        validated_data['document'] = self.context['document']
        validated_data['user'] = self.context['request'].user
        return super(WritableCommentSerializer, self).create(validated_data)

    def get_document_comments_url(self, instance):
        return reverse('rest_api:comment-list',
                       args=(instance.document.pk, ),
                       request=self.context['request'],
                       format=self.context['format'])

    def get_url(self, instance):
        return reverse('rest_api:comment-detail',
                       args=(instance.document.pk, instance.pk),
                       request=self.context['request'],
                       format=self.context['format'])
Exemple #2
0
class DocumentMetadataSerializer(serializers.HyperlinkedModelSerializer):
    document = DocumentSerializer(read_only=True)
    metadata_type = MetadataTypeSerializer(read_only=True)
    url = serializers.SerializerMethodField()

    class Meta:
        fields = ('document', 'id', 'metadata_type', 'url', 'value')
        model = DocumentMetadata
        read_only_fields = (
            'document',
            'metadata_type',
        )

    def get_url(self, instance):
        return reverse('rest_api:documentmetadata-detail',
                       args=(instance.document.pk, instance.pk),
                       request=self.context['request'],
                       format=self.context['format'])

    def validate(self, attrs):
        self.instance.value = attrs['value']

        try:
            self.instance.full_clean()
        except DjangoValidationError as exception:
            raise ValidationError(exception)

        attrs['value'] = self.instance.value

        return attrs
Exemple #3
0
class CommentSerializer(serializers.HyperlinkedModelSerializer):
    document = DocumentSerializer(read_only=True)
    document_comments_url = serializers.SerializerMethodField()
    url = serializers.SerializerMethodField()
    user = UserSerializer(read_only=True)

    class Meta:
        fields = (
            'comment', 'document', 'document_comments_url', 'id',
            'submit_date', 'url', 'user'
        )
        model = Comment

    def get_document_comments_url(self, instance):
        return reverse(
            'rest_api:comment-list', args=(
                instance.document.pk,
            ), request=self.context['request'], format=self.context['format']
        )

    def get_url(self, instance):
        return reverse(
            'rest_api:comment-detail', args=(
                instance.document.pk, instance.pk
            ), request=self.context['request'], format=self.context['format']
        )
Exemple #4
0
class DocumentCheckoutSerializer(serializers.ModelSerializer):
    document = DocumentSerializer()

    class Meta:
        extra_kwargs = {
            'url': {
                'view_name': 'rest_api:checkedout-document-view'
            },
        }
        fields = ('document', 'id', 'url')
        model = DocumentCheckout
Exemple #5
0
class DocumentCheckoutSerializer(serializers.ModelSerializer):
    document = DocumentSerializer()

    class Meta:
        fields = ('document', )
        model = DocumentCheckout