feat(forms): user profile form would detect nicely duplicates and show a form error.

This commit is contained in:
RhodeCode Admin 2024-03-13 19:46:50 +01:00
parent 14e425bce6
commit d684cf1f5d

View file

@ -64,6 +64,7 @@ class ChangePasswordSchema(colander.Schema):
@colander.deferred
def deferred_username_validator(node, kw):
old_username = kw.get('username')
def name_validator(node, value):
msg = _(
@ -74,6 +75,11 @@ def deferred_username_validator(node, kw):
if not re.match(r'^[\w]{1}[\w\-\.]{0,254}$', value):
raise colander.Invalid(node, msg)
if value != old_username:
existing_user = User.get_by_username(value, case_insensitive=True)
if existing_user:
raise colander.Invalid(node, 'Username is already taken')
return name_validator