65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
from rest_framework import serializers
|
|
from comment.models import Comment, User
|
|
from establishment.models import Establishment
|
|
|
|
|
|
class CommentSerializer(serializers.ModelSerializer):
|
|
id = serializers.IntegerField()
|
|
comment = serializers.CharField()
|
|
mark = serializers.DecimalField(max_digits=4, decimal_places=2)
|
|
locale = serializers.CharField()
|
|
account_id = serializers.IntegerField()
|
|
establishment_id = serializers.CharField()
|
|
|
|
class Meta:
|
|
model = Comment
|
|
fields = (
|
|
"id",
|
|
"comment",
|
|
"mark",
|
|
"locale",
|
|
"account_id",
|
|
"establishment_id"
|
|
)
|
|
|
|
def validate(self, data):
|
|
data = self.set_old_id(data)
|
|
data = self.set_text(data)
|
|
data = self.set_mark(data)
|
|
data = self.set_establishment(data)
|
|
data = self.set_account(data)
|
|
return data
|
|
|
|
def set_text(self, data):
|
|
data['text'] = data.pop('comment')
|
|
return data
|
|
|
|
def set_mark(self, data):
|
|
if data['mark'] < 0:
|
|
data['mark'] = data['mark'] * -1
|
|
return data
|
|
|
|
def set_account(self, data):
|
|
try:
|
|
data['account'] = User.objects.filter(old_id=data['account_id']).first()
|
|
except User.DoesNotExist as e:
|
|
raise ValueError(f"User account not found with {data}: {e}")
|
|
|
|
del(data['account_id'])
|
|
|
|
return data
|
|
|
|
def set_establishment(self, data):
|
|
try:
|
|
data['establishment'] = Establishment.objects.filter(old_id=data['account_id']).first()
|
|
except Establishment.DoesNotExist as e:
|
|
raise ValueError(f"Establishment not found with {data}: {e}")
|
|
|
|
del(data['establishment_id'])
|
|
|
|
return data
|
|
|
|
def set_old_id(self, data):
|
|
data['old_id'] = data.pop("id")
|
|
return data
|