from django.contrib.auth import get_user_model
from rest_framework import serializers

from uncloud_pay import AMOUNT_DECIMALS, AMOUNT_MAX_DIGITS
from uncloud_pay.models import BillingAddress

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = get_user_model()
        read_only_fields = [ 'username', 'balance', 'maximum_credit' ]
        fields =  read_only_fields + [ 'email', 'primary_billing_address' ]

    def validate(self, data):
        """
        Ensure that the primary billing address belongs to the user
        """

        if 'primary_billing_address' in data:
            if not data['primary_billing_address'].owner == self.instance:
                raise serializers.ValidationError("Invalid data")

        return data

class ImportUserSerializer(serializers.Serializer):
    username = serializers.CharField()