forms: add autocomplete attributes for registration (#41131)

This commit is contained in:
Valentin Deniaud 2021-07-12 15:25:47 +02:00
parent fdd3f15aa7
commit 9b6e2e465f
2 changed files with 28 additions and 0 deletions

View File

@ -72,6 +72,16 @@ validate_name = RegexValidator(
class RegistrationCompletionFormNoPassword(profile_forms.BaseUserForm):
error_css_class = 'form-field-error'
required_css_class = 'form-field-required'
html5_autocomplete_map = {
'first_name': 'given-name',
'last_name': 'family-name',
'address': 'address-line1',
'zipcode': 'postal-code',
'city': 'address-level2',
'country': 'country',
'phone': 'tel',
'email': 'email',
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@ -79,6 +89,9 @@ class RegistrationCompletionFormNoPassword(profile_forms.BaseUserForm):
self.fields['first_name'].validators.append(validate_name)
if 'last_name' in self.fields:
self.fields['last_name'].validators.append(validate_name)
for field, autocomplete_value in self.html5_autocomplete_map.items():
if field in self.fields:
self.fields[field].widget.attrs['autocomplete'] = autocomplete_value
def clean_username(self):
if self.cleaned_data.get('username'):

View File

@ -841,3 +841,18 @@ def test_registration_name_validation(app, db, mailoutbox):
resp.form.set('last_name', 'D\'Équerre')
resp = resp.form.submit().follow()
assert 'You have just created an account' in resp.text
def test_attribute_model_autocomplete(app, db, settings, mailoutbox):
settings.LANGUAGE_CODE = 'en-us'
response = app.get(reverse('registration_register'))
response.form.set('email', 'testbot@entrouvert.com')
response = response.form.submit()
assert urlparse(response['Location']).path == reverse('registration_complete')
link = get_link_from_mail(mailoutbox[0])
response = app.get(link)
assert response.form['first_name'].attrs['autocomplete'] == 'given-name'
assert response.form['last_name'].attrs['autocomplete'] == 'family-name'