from django.forms import ModelForm, ValidationError from django.contrib.auth.models import User class AccountSettingsForm(ModelForm): class Meta: model = User fields = ["first_name"] labels = {"first_name": "Nom ou pseudo"} help_texts = { "first_name": "Ce nom sera utilisé pour toutes vos interactions publiques sur GestioJeux. Si laissé vide, votre login sera utilisé à la place." } def clean_first_name(self): """ Check there is no conflict that could lead to imprersonation """ public_name = self.cleaned_data["first_name"] public_name = public_name.strip() if public_name == self.instance.first_name or public_name == "": return public_name if User.objects.filter(first_name=public_name).count() > 0: raise ValidationError("Un autre compte utilise déjà ce nom ou ce pseudo.") if User.objects.filter(username=public_name).count() > 0: raise ValidationError("Ce nom est déjà le login de quelqu'un.") return public_name