Add document comments API endpoints. GitHub issue #249.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2017-02-21 02:48:02 -04:00
parent 54372d966d
commit 81c0f90b4f
7 changed files with 307 additions and 0 deletions
@@ -0,0 +1,71 @@
from __future__ import unicode_literals
from rest_framework import serializers
from rest_framework.reverse import reverse
from documents.serializers import DocumentSerializer
from 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(
'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']
)
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']
)