gault-millau/apps/transfer/serializers/grid.py
2019-11-11 17:45:34 +03:00

39 lines
1.4 KiB
Python

from rest_framework import serializers
from review.models import Inquiries, GridItems
class GridItemsSerializer(serializers.Serializer):
id = serializers.IntegerField()
created_at = serializers.DateTimeField(format='%m-%d-%Y %H:%M:%S')
inquiry_id = serializers.IntegerField()
sub_item_name = serializers.CharField(allow_null=True, allow_blank=True)
item_name = serializers.CharField(allow_null=True, allow_blank=True)
value = serializers.FloatField(allow_null=True)
desc = serializers.CharField(allow_null=True, allow_blank=True)
dish_title = serializers.CharField(allow_null=True, allow_blank=True)
def validate(self, data):
data.update({
'old_id': data.pop('id'),
'created': data.pop('created_at'),
'sub_name': data.pop('sub_item_name'),
'name': data.pop('item_name'),
'inquiry': self.get_inquiry(data),
})
data.pop('inquiry_id')
return data
def create(self, validated_data):
try:
return GridItems.objects.create(**validated_data)
except Exception as e:
raise ValueError(f"Error creating GridItems with {validated_data}: {e}")
@staticmethod
def get_inquiry(data):
inquiry = Inquiries.objects.filter(old_id=data['inquiry_id']).first()
if not inquiry:
raise ValueError(f"Inquiries not found with old_id {data['inquiry_id']}")
return inquiry