mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
#12589: Move username validation from form to NetBoxUser
This commit is contained in:
@ -229,25 +229,6 @@ class UserForm(BootstrapMixin, forms.ModelForm):
|
|||||||
if self.cleaned_data['password'] and self.cleaned_data['password'] != self.cleaned_data['confirm_password']:
|
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."))
|
raise forms.ValidationError(_("Passwords do not match! Please check your input and try again."))
|
||||||
|
|
||||||
# TODO: Move this logic to the NetBoxUser class
|
|
||||||
def clean_username(self):
|
|
||||||
"""Reject usernames that differ only in case."""
|
|
||||||
instance = getattr(self, 'instance', None)
|
|
||||||
if instance:
|
|
||||||
qs = self._meta.model.objects.exclude(pk=instance.pk)
|
|
||||||
else:
|
|
||||||
qs = self._meta.model.objects.all()
|
|
||||||
|
|
||||||
username = self.cleaned_data.get("username")
|
|
||||||
if (
|
|
||||||
username and qs.filter(username__iexact=username).exists()
|
|
||||||
):
|
|
||||||
raise forms.ValidationError(
|
|
||||||
_("user with this username already exists")
|
|
||||||
)
|
|
||||||
|
|
||||||
return username
|
|
||||||
|
|
||||||
|
|
||||||
class GroupForm(BootstrapMixin, forms.ModelForm):
|
class GroupForm(BootstrapMixin, forms.ModelForm):
|
||||||
users = DynamicModelMultipleChoiceField(
|
users = DynamicModelMultipleChoiceField(
|
||||||
|
@ -5,6 +5,7 @@ from django.conf import settings
|
|||||||
from django.contrib.auth.models import Group, GroupManager, User, UserManager
|
from django.contrib.auth.models import Group, GroupManager, User, UserManager
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.contrib.postgres.fields import ArrayField
|
from django.contrib.postgres.fields import ArrayField
|
||||||
|
from django.core.exceptions import ValidationError
|
||||||
from django.core.validators import MinLengthValidator
|
from django.core.validators import MinLengthValidator
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
@ -55,6 +56,14 @@ class NetBoxUser(User):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('users:netboxuser', args=[self.pk])
|
return reverse('users:netboxuser', args=[self.pk])
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
super().clean()
|
||||||
|
|
||||||
|
# Check for any existing Users with names that differ only in case
|
||||||
|
model = self._meta.model
|
||||||
|
if model.objects.exclude(pk=self.pk).filter(username__iexact=self.username).exists():
|
||||||
|
raise ValidationError(_("A user with this username already exists."))
|
||||||
|
|
||||||
|
|
||||||
class NetBoxGroup(Group):
|
class NetBoxGroup(Group):
|
||||||
"""
|
"""
|
||||||
|
Reference in New Issue
Block a user