gault-millau/apps/comment/serializers/common.py

61 lines
1.8 KiB
Python

"""Common serializers for app comment."""
from rest_framework import serializers
from comment import models
from establishment.models import Establishment
class CommentBaseMixin(serializers.Serializer):
"""Comment base serializer mixin"""
# RESPONSE
nickname = serializers.CharField(read_only=True,
source='user.username')
profile_pic = serializers.ImageField(read_only=True,
source='user.image')
class CommentSerializer(CommentBaseMixin, serializers.ModelSerializer):
"""Comment serializer"""
is_mine = serializers.BooleanField(read_only=True)
class Meta:
"""Serializer for model Comment"""
model = models.Comment
fields = [
'id',
'user_id',
'is_mine',
'created',
'text',
'mark',
'nickname',
'profile_pic'
]
class EstablishmentCommentCreateSerializer(CommentSerializer):
"""Create comment serializer"""
mark = serializers.IntegerField()
establishment_id = serializers.PrimaryKeyRelatedField(queryset=Establishment.objects.all(),
source='content_object',
write_only=True)
class Meta:
"""Serializer for model Comment"""
model = models.Comment
fields = [
'created',
'text',
'mark',
'nickname',
'profile_pic',
'establishment_id',
]
def create(self, validated_data):
"""Override create method"""
validated_data.update({
'user': self.context.get('request').user
})
return super().create(validated_data)