from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from allauth.account.forms import SignupForm
from .models import Address, User


class AddressForm(forms.ModelForm):
    class Meta:
        model = Address
        fields = (
            'first_name',
            'last_name',
            'street_address_1',
            'street_address_2',
            'city',
            'state',
            'postal_code',
        )


class AccountCreateForm(UserCreationForm):
    class Meta:
        model = User
        fields = ('username', 'email')


class AccountUpdateForm(UserChangeForm):
    class Meta:
        model = User
        fields = (
            'first_name',
            'last_name',
            'email',
            'default_shipping_address',
            'addresses',
        )


class CustomerUpdateForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['default_shipping_address'].queryset = kwargs['instance'].addresses

    class Meta:
        model = User
        fields = (
            'first_name',
            'last_name',
            'email',
            'default_shipping_address',
        )


class UserSignupForm(SignupForm):
    first_name = forms.CharField(
        required=True,
        widget=forms.TextInput(attrs={'placeholder': 'First name'})
    )
    last_name = forms.CharField(
        required=True,
        widget=forms.TextInput(attrs={'placeholder': 'Last name'})
    )
