Files
mayan-edms/mayan/apps/document_comments/serializers.py
2017-02-21 02:48:02 -04:00

72 lines
2.4 KiB
Python

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']
)