refactor: differenciate between login and username in forms

This commit is contained in:
Éloi Rivard 2024-04-07 19:50:26 +02:00
parent 6251455a1d
commit e9c4f4c1c9
No known key found for this signature in database
GPG key ID: 7EDA204EA57DD184
4 changed files with 31 additions and 27 deletions

View file

@ -21,12 +21,12 @@ from canaille.app.i18n import native_language_name_from_code
MINIMUM_PASSWORD_LENGTH = 8
def unique_login(form, field):
if models.User.get_from_login(field.data) and (
def unique_user_name(form, field):
if models.User.get(user_name=field.data) and (
not getattr(form, "user", None) or form.user.user_name != field.data
):
raise wtforms.ValidationError(
_("The login '{login}' already exists").format(login=field.data)
_("The user name '{user_name}' already exists").format(user_name=field.data)
)
@ -125,7 +125,7 @@ PROFILE_FORM_FIELDS = dict(
user_name=wtforms.StringField(
_("Username"),
render_kw={"placeholder": _("jdoe")},
validators=[wtforms.validators.DataRequired(), unique_login],
validators=[wtforms.validators.DataRequired(), unique_user_name],
),
formatted_name=wtforms.StringField(_("Name")),
title=wtforms.StringField(
@ -371,9 +371,9 @@ class JoinForm(Form):
class InvitationForm(Form):
user_name = wtforms.StringField(
_("Username"),
_("User name"),
render_kw={"placeholder": _("jdoe")},
validators=[wtforms.validators.DataRequired(), unique_login],
validators=[wtforms.validators.DataRequired(), unique_user_name],
)
user_name_editable = wtforms.BooleanField(_("Username editable by the invitee"))
email = wtforms.EmailField(

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-03-27 14:07+0100\n"
"POT-Creation-Date: 2024-04-07 19:49+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -49,28 +49,28 @@ msgstr ""
msgid "LDAP authentication failed with user '{user}'"
msgstr ""
#: canaille/backends/ldap/backend.py:172
#: canaille/backends/ldap/backend.py:170
msgid "John Doe"
msgstr ""
#: canaille/backends/ldap/backend.py:175 canaille/core/endpoints/forms.py:127
#: canaille/backends/ldap/backend.py:173 canaille/core/endpoints/forms.py:127
#: canaille/core/endpoints/forms.py:375
msgid "jdoe"
msgstr ""
#: canaille/backends/ldap/backend.py:178
#: canaille/backends/ldap/backend.py:176
msgid "john@doe.com"
msgstr ""
#: canaille/backends/ldap/backend.py:180
#: canaille/backends/ldap/backend.py:178
msgid " or "
msgstr ""
#: canaille/backends/ldap/models.py:130
#: canaille/backends/ldap/models.py:98
msgid "Your account has been locked."
msgstr ""
#: canaille/backends/ldap/models.py:135
#: canaille/backends/ldap/models.py:103
msgid "You should change your password."
msgstr ""
@ -175,12 +175,12 @@ msgid "User account creation succeed."
msgstr ""
#: canaille/core/endpoints/account.py:609
#: canaille/core/endpoints/account.py:769
#: canaille/core/endpoints/account.py:771
msgid "Profile edition failed."
msgstr ""
#: canaille/core/endpoints/account.py:613
#: canaille/core/endpoints/account.py:784
#: canaille/core/endpoints/account.py:786
msgid "Profile updated successfully."
msgstr ""
@ -234,12 +234,12 @@ msgstr ""
msgid "The account has been unlocked"
msgstr ""
#: canaille/core/endpoints/account.py:804
#: canaille/core/endpoints/account.py:806
#, python-format
msgid "The user %(user)s has been sucessfuly deleted"
msgstr ""
#: canaille/core/endpoints/account.py:822 canaille/core/endpoints/auth.py:93
#: canaille/core/endpoints/account.py:824 canaille/core/endpoints/auth.py:93
#, python-format
msgid "Connection successful. Welcome %(user)s"
msgstr ""
@ -318,7 +318,7 @@ msgid "Your password has been updated successfully"
msgstr ""
#: canaille/core/endpoints/forms.py:29
msgid "The login '{login}' already exists"
msgid "The user name '{user_name}' already exists"
msgstr ""
#: canaille/core/endpoints/forms.py:38
@ -356,7 +356,7 @@ msgstr ""
msgid "Automatic"
msgstr ""
#: canaille/core/endpoints/forms.py:126 canaille/core/endpoints/forms.py:374
#: canaille/core/endpoints/forms.py:126
msgid "Username"
msgstr ""
@ -519,6 +519,10 @@ msgstr ""
msgid "Email address"
msgstr ""
#: canaille/core/endpoints/forms.py:374
msgid "User name"
msgstr ""
#: canaille/core/endpoints/forms.py:378
msgid "Username editable by the invitee"
msgstr ""
@ -1344,19 +1348,19 @@ msgstr ""
msgid "The client has not been added. Please check your information."
msgstr ""
#: canaille/oidc/endpoints/clients.py:79
#: canaille/oidc/endpoints/clients.py:80
msgid "The client has been created."
msgstr ""
#: canaille/oidc/endpoints/clients.py:112
#: canaille/oidc/endpoints/clients.py:113
msgid "The client has not been edited. Please check your information."
msgstr ""
#: canaille/oidc/endpoints/clients.py:141
#: canaille/oidc/endpoints/clients.py:142
msgid "The client has been edited."
msgstr ""
#: canaille/oidc/endpoints/clients.py:149
#: canaille/oidc/endpoints/clients.py:150
msgid "The client has been deleted."
msgstr ""
@ -1455,11 +1459,11 @@ msgstr ""
msgid "Pre-consent"
msgstr ""
#: canaille/oidc/endpoints/oauth.py:340
#: canaille/oidc/endpoints/oauth.py:341
msgid "You have been disconnected"
msgstr ""
#: canaille/oidc/endpoints/oauth.py:357
#: canaille/oidc/endpoints/oauth.py:358
msgid "You have not been disconnected"
msgstr ""

View file

@ -167,7 +167,7 @@ def test_invitation_login_already_taken(testclient, logged_admin):
res.form["email"] = logged_admin.preferred_email
res = res.form.submit(name="action", value="send", status=200)
res.mustcontain("The login &#39;admin&#39; already exists")
res.mustcontain("The user name &#39;admin&#39; already exists")
res.mustcontain("The email &#39;jane@doe.com&#39; is already used")

View file

@ -120,7 +120,7 @@ def test_username_already_taken(
res.form["emails-0"] = "any@thing.com"
res = res.form.submit(name="action", value="create-profile")
assert ("error", "User account creation failed.") in res.flashes
res.mustcontain("The login &#39;user&#39; already exists")
res.mustcontain("The user name &#39;user&#39; already exists")
def test_email_already_taken(testclient, logged_moderator, user, foo_group, bar_group):