from rest_framework import serializers
import math

class ImportAndAnalyzeProductRequestSerializer(serializers.Serializer):
    shipToCountry = serializers.CharField(allow_blank=False)
    productId = serializers.CharField(allow_blank=False)
    targetCurrency = serializers.CharField(allow_blank=False)
    targetLanguage = serializers.CharField(allow_blank=False)
    currencyId = serializers.IntegerField(min_value=1)
    languageId = serializers.IntegerField(min_value=1)
    collectionId = serializers.IntegerField(min_value=1)
    removePersonalBenefit = serializers.BooleanField(default=False)
    quantity = serializers.IntegerField(default=1, min_value=1)
    profitMargin = serializers.FloatField(default=40, min_value=0)

    def validate_profitMargin(self, value):
        if not math.isfinite(value):
            raise serializers.ValidationError("Must be a finite number.")
        return value
