61 lines
1.8 KiB
Python
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)
|