diff --git a/users/forms.py b/users/forms.py index ddf26ef..d8c6755 100644 --- a/users/forms.py +++ b/users/forms.py @@ -19,13 +19,20 @@ class CreateUserForm(forms.ModelForm): model = User fields = ("username", "last_name", "first_name", "email") - school = forms.ModelChoiceField(queryset=School.objects.all(), label="École") + school = forms.ModelChoiceField (queryset=School.objects.all(), label="École") + + def __init__(self, *args, **kwargs): + self.user = kwargs.pop('user', None) + super(CreateUserForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super().clean() email = cleaned_data.get("email") if User.objects.filter(email=email).count() > 0: - raise forms.ValidationError("L'email est déjà utilisé") + if User.objects.filter(email=email).count() == 1 and User.objects.get(email=email) == self.user: + pass + else: + raise forms.ValidationError("L'adresse email est déjà utilisée") class CreateGroupForm(forms.ModelForm): """ diff --git a/users/views.py b/users/views.py index 76b4227..0f03e3c 100644 --- a/users/views.py +++ b/users/views.py @@ -171,7 +171,7 @@ def createUser(request): """ Displays a :class:`~users.forms.CreateUserForm` to create a user (:class:`django.contrib.auth.models.User`). """ - form = CreateUserForm(request.POST or None) + form = CreateUserForm(request.POST or None, user=User.objects.none()) if(form.is_valid()): user = form.save(commit=False) user.save() @@ -272,7 +272,7 @@ def editUser(request, pk): Displays a :class:`~users.forms.CreateUserForm` to edit a user (:class:`django.contrib.auth.models.User`). """ user = get_object_or_404(User, pk=pk) - form = CreateUserForm(request.POST or None, instance=user, initial = {'school': user.profile.school}) + form = CreateUserForm(request.POST or None, instance=user, initial = {'school': user.profile.school}, user=user) if(form.is_valid()): user.profile.school = form.cleaned_data['school'] user.save()