from django import forms
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm as BaseUserCreationForm
from django.core.exceptions import ValidationError

User = get_user_model()


class UserCreationForm(BaseUserCreationForm):
    """Formulaire de création d'utilisateur avec email (pas de username)."""

    class Meta:
        model = User
        fields = ("email", "first_name", "last_name", "phone", "role")

    def clean_email(self):
        email = self.cleaned_data.get("email")
        if email and User.objects.filter(email__iexact=email).exists():
            raise ValidationError("Un utilisateur avec cet email existe déjà.")
        return email


class UserChangeForm(forms.ModelForm):
    """Formulaire d'édition utilisateur (mot de passe géré à part)."""

    class Meta:
        model = User
        fields = "__all__"
