From 372bcbacc776faf7b58212b8e2fd675894020786 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Fri, 30 Aug 2024 13:40:09 -0700 Subject: [PATCH] 17289 fix user create --- netbox/users/forms/model_forms.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/netbox/users/forms/model_forms.py b/netbox/users/forms/model_forms.py index 639b9f726..ad3f50d2c 100644 --- a/netbox/users/forms/model_forms.py +++ b/netbox/users/forms/model_forms.py @@ -2,7 +2,7 @@ from django import forms from django.conf import settings from django.contrib.auth import password_validation from django.contrib.postgres.forms import SimpleArrayField -from django.core.exceptions import FieldError +from django.core.exceptions import FieldError, ValidationError from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ @@ -221,16 +221,21 @@ class UserForm(forms.ModelForm): return instance + def _post_clean(self): + super()._post_clean() + # Validate the password after self.instance is updated with form data + if self.cleaned_data['password']: + try: + password_validation.validate_password(self.cleaned_data['password'], self.instance) + except ValidationError as error: + self.add_error('password', error) + def clean(self): # Check that password confirmation matches if password is set if self.cleaned_data['password'] and self.cleaned_data['password'] != self.cleaned_data['confirm_password']: raise forms.ValidationError(_("Passwords do not match! Please check your input and try again.")) - # Enforce password validation rules (if configured) - if self.cleaned_data['password']: - password_validation.validate_password(self.cleaned_data['password'], self.instance) - class GroupForm(forms.ModelForm): users = DynamicModelMultipleChoiceField(