from django import forms
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django.contrib.auth.models import User
from django.utils.translation import gettext_lazy as _

from gestion.models import ErnestoUser


class RegistrationFormUser(UserCreationForm):
    class Meta:
        model = User
        fields = (
            "username",
            "first_name",
            "last_name",
            "password1",
            "password2",
            "email",
        )


class ChangeFormUser(UserChangeForm):
    password = None

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


class ChangeMembreForm(forms.ModelForm):
    def clean(self):
        cleaned_data = super(ChangeMembreForm, self).clean()
        instru = cleaned_data.get("instru")
        instru_autre = cleaned_data.get("instru_autre")
        if (instru == "Autre") and not (instru_autre):
            raise forms.ValidationError(_("Préçisez quel autre instrument"))
        multi_instru = cleaned_data.get("multi_instrumentiste")
        instru_bonus = cleaned_data.get("instru_bonus")
        if (multi_instru == "Oui") and not (instru_bonus):
            raise forms.ValidationError(
                _("Préçisez quel·s instrument·s  supplémentaire·s vous pouvez jouer")
            )
        return cleaned_data

    class Meta:
        model = ErnestoUser
        fields = (
            "phone",
            "instru",
            "instru_autre",
            "multi_instrumentiste",
            "instru_bonus",
        )


class InscriptionMembreForm(ChangeMembreForm):
    validation = forms.CharField(max_length=100, widget=forms.PasswordInput)

    class Meta:
        model = ErnestoUser
        fields = (
            "phone",
            "instru",
            "instru_autre",
            "multi_instrumentiste",
            "instru_bonus",
        )
