Files
mayan-edms/mayan/apps/document_comments/serializers.py
Roberto Rosario 6376445cc4 Update document comments app
Add keyword arguments to the app links.

Remove use of `raise_404`.

Update URL parameters to use document_id and comment_id.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-19 04:08:45 -04:00

72 lines
2.5 KiB
Python

from __future__ import unicode_literals
from rest_framework import serializers
from rest_framework.reverse import reverse
from mayan.apps.documents.serializers import DocumentSerializer
from mayan.apps.user_management.serializers import UserSerializer
from .models import Comment
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(
viewname='rest_api:comment-list', kwargs={
'document_id': instance.document.pk,
}, request=self.context['request'], format=self.context['format']
)
def get_url(self, instance):
return reverse(
viewname='rest_api:comment-detail', kwargs={
'document_id': instance.document.pk, 'comment_pk': instance.pk
}, request=self.context['request'], format=self.context['format']
)
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(
viewname='rest_api:comment-list', kwargs={
'document_id': instance.document.pk
}, request=self.context['request'], format=self.context['format']
)
def get_url(self, instance):
return reverse(
viewname='rest_api:comment-detail', kwargs={
'document_id': instance.document.pk, 'comment_id': instance.pk
}, request=self.context['request'], format=self.context['format']
)